Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

gdalmajorobject.cpp

00001 /******************************************************************************
00002  * $Id: gdalmajorobject_cpp-source.html,v 1.13 2002/12/21 19:13:13 warmerda Exp $
00003  *
00004  * Project:  GDAL Core
00005  * Purpose:  Base class for objects with metadata, etc.
00006  * Author:   Frank Warmerdam, warmerda@home.com
00007  *
00008  ******************************************************************************
00009  * Copyright (c) 2000, Frank Warmerdam
00010  *
00011  * Permission is hereby granted, free of charge, to any person obtaining a
00012  * copy of this software and associated documentation files (the "Software"),
00013  * to deal in the Software without restriction, including without limitation
00014  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
00015  * and/or sell copies of the Software, and to permit persons to whom the
00016  * Software is furnished to do so, subject to the following conditions:
00017  *
00018  * The above copyright notice and this permission notice shall be included
00019  * in all copies or substantial portions of the Software.
00020  *
00021  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00022  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00023  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00024  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00025  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00026  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00027  * DEALINGS IN THE SOFTWARE.
00028  ******************************************************************************
00029  *
00030  * $Log: gdalmajorobject_cpp-source.html,v $
00030  * Revision 1.13  2002/12/21 19:13:13  warmerda
00030  * updated
00030  *
00031  * Revision 1.5  2002/09/11 14:17:38  warmerda
00032  * added C GDALSetDescription()
00033  *
00034  * Revision 1.4  2001/09/25 15:56:37  warmerda
00035  * implemented rest of C entry points for metadata, document C++ methods
00036  *
00037  * Revision 1.3  2001/07/18 04:04:30  warmerda
00038  * added CPL_CVSID
00039  *
00040  * Revision 1.2  2000/06/26 15:26:21  warmerda
00041  * added GDALGetDescription
00042  *
00043  * Revision 1.1  2000/04/20 20:52:03  warmerda
00044  * New
00045  *
00046  */
00047 
00048 #include "gdal_priv.h"
00049 #include "cpl_string.h"
00050 
00051 CPL_CVSID("$Id: gdalmajorobject_cpp-source.html,v 1.13 2002/12/21 19:13:13 warmerda Exp $");
00052 
00053 /************************************************************************/
00054 /*                          GDALMajorObject()                           */
00055 /************************************************************************/
00056 
00057 GDALMajorObject::GDALMajorObject()
00058 
00059 {
00060     pszDescription = NULL;
00061     papszMetadata = NULL;
00062 }
00063 
00064 /************************************************************************/
00065 /*                          ~GDALMajorObject()                          */
00066 /************************************************************************/
00067 
00068 GDALMajorObject::~GDALMajorObject()
00069 
00070 {
00071     CPLFree( pszDescription );
00072     CSLDestroy( papszMetadata );
00073 }
00074 
00075 /************************************************************************/
00076 /*                           GetDescription()                           */
00077 /************************************************************************/
00078 
00091 const char *GDALMajorObject::GetDescription() const
00092 
00093 {
00094     if( pszDescription == NULL )
00095         return "";
00096     else
00097         return pszDescription;
00098 }
00099 
00100 /************************************************************************/
00101 /*                         GDALGetDescription()                         */
00102 /************************************************************************/
00103 
00104 const char *GDALGetDescription( GDALMajorObjectH hObject )
00105 
00106 {
00107     return ((GDALMajorObject *) hObject)->GetDescription();
00108 }
00109 
00110 /************************************************************************/
00111 /*                           SetDescription()                           */
00112 /************************************************************************/
00113 
00127 void GDALMajorObject::SetDescription( const char * pszNewDesc ) 
00128 
00129 {
00130     CPLFree( pszDescription );
00131     pszDescription = CPLStrdup( pszNewDesc );
00132 }
00133 
00134 /************************************************************************/
00135 /*                         GDALSetDescription()                         */
00136 /************************************************************************/
00137 
00138 void GDALSetDescription( GDALMajorObjectH hObject, const char *pszNewDesc )
00139 
00140 {
00141     ((GDALMajorObject *) hObject)->SetDescription( pszNewDesc );
00142 }
00143 
00144 /************************************************************************/
00145 /*                            GetMetadata()                             */
00146 /************************************************************************/
00147 
00166 char **GDALMajorObject::GetMetadata( const char * pszDomain )
00167 
00168 {
00169     if( pszDomain == NULL || EQUAL(pszDomain,"") )
00170         return papszMetadata;
00171     else
00172         return NULL;
00173 }
00174 
00175 /************************************************************************/
00176 /*                          GDALGetMetadata()                           */
00177 /************************************************************************/
00178 
00179 char **GDALGetMetadata( GDALMajorObjectH hObject, const char * pszDomain )
00180 
00181 {
00182     return ((GDALMajorObject *) hObject)->GetMetadata(pszDomain);
00183 }
00184 
00185 /************************************************************************/
00186 /*                            SetMetadata()                             */
00187 /************************************************************************/
00188 
00203 CPLErr GDALMajorObject::SetMetadata( char ** papszMetadataIn, 
00204                                      const char * pszDomain )
00205 
00206 {
00207     if( pszDomain != NULL && !EQUAL(pszDomain,"") )
00208     {
00209         CPLError( CE_Failure, CPLE_NotSupported, 
00210                   "Non-default domain not supported for this object." );
00211         return CE_Failure;
00212     }
00213 
00214     CSLDestroy( papszMetadata );
00215     papszMetadata = CSLDuplicate( papszMetadataIn );
00216     
00217     return CE_None;
00218 }
00219 
00220 /************************************************************************/
00221 /*                          GDALSetMetadata()                           */
00222 /************************************************************************/
00223 
00224 CPLErr GDALSetMetadata( GDALMajorObjectH hObject, char **papszMD, 
00225                         const char *pszDomain )
00226 
00227 {
00228     return ((GDALMajorObject *) hObject)->SetMetadata( papszMD, pszDomain );
00229 }
00230 
00231 
00232 /************************************************************************/
00233 /*                          GetMetadataItem()                           */
00234 /************************************************************************/
00235 
00248 const char *GDALMajorObject::GetMetadataItem( const char * pszName, 
00249                                               const char * pszDomain )
00250 
00251 {
00252     char  **papszMD = GetMetadata( pszDomain );
00253     
00254     return CSLFetchNameValue( papszMD, pszName );
00255 }
00256 
00257 /************************************************************************/
00258 /*                        GDALGetMetadataItem()                         */
00259 /************************************************************************/
00260 
00261 const char *GDALGetMetadataItem( GDALMajorObjectH hObject, 
00262                                  const char *pszName, 
00263                                  const char *pszDomain )
00264 
00265 {
00266     return ((GDALMajorObject *) hObject)->GetMetadataItem( pszName, pszDomain);
00267 }
00268 
00269 /************************************************************************/
00270 /*                          SetMetadataItem()                           */
00271 /************************************************************************/
00272 
00285 CPLErr GDALMajorObject::SetMetadataItem( const char * pszName, 
00286                                          const char * pszValue, 
00287                                          const char * pszDomain )
00288 
00289 {
00290     if( pszDomain != NULL && !EQUAL(pszDomain,"") )
00291     {
00292         CPLError( CE_Failure, CPLE_NotSupported, 
00293                   "Non-default domain not supported for this object." );
00294         return CE_Failure;
00295     }
00296 
00297     papszMetadata = CSLSetNameValue( papszMetadata, pszName, pszValue );
00298 
00299     return CE_None;
00300 }
00301 
00302 /************************************************************************/
00303 /*                        GDALSetMetadataItem()                         */
00304 /************************************************************************/
00305 
00306 CPLErr GDALSetMetadataItem( GDALMajorObjectH hObject, 
00307                             const char *pszName, const char *pszValue, 
00308                             const char *pszDomain )
00309 
00310 {
00311     return ((GDALMajorObject *) hObject)->SetMetadataItem( pszName, pszValue,
00312                                                            pszDomain );
00313 }

Generated at Sat Dec 21 14:01:59 2002 for GDAL by doxygen1.2.3-20001105 written by Dimitri van Heesch, © 1997-2000