GDAL
gdal_majorobject.h
1/******************************************************************************
2 *
3 * Name: gdal_majorobject.h
4 * Project: GDAL Core
5 * Purpose: Declaration of GDALMajorObject class
6 * Author: Frank Warmerdam, warmerdam@pobox.com
7 *
8 ******************************************************************************
9 * Copyright (c) 1998, Frank Warmerdam
10 * Copyright (c) 2007-2014, Even Rouault <even dot rouault at spatialys.com>
11 *
12 * SPDX-License-Identifier: MIT
13 ****************************************************************************/
14
15#ifndef GDALMAJOROBJECT_H_INCLUDED
16#define GDALMAJOROBJECT_H_INCLUDED
17
18#include "cpl_port.h"
19#include "cpl_string.h"
20
21#include "gdal_fwd.h" // for GDALMajorObjectH
22#include "gdal_multidomainmetadata.h"
23
25#define GMO_VALID 0x0001
26#define GMO_IGNORE_UNIMPLEMENTED 0x0002
27#define GMO_SUPPORT_MD 0x0004
28#define GMO_SUPPORT_MDMD 0x0008
29#define GMO_MD_DIRTY 0x0010
30#define GMO_PAM_CLASS 0x0020
31
33
34/* ******************************************************************** */
35/* GDALMajorObject */
36/* */
37/* Base class providing metadata, description and other */
38/* services shared by major objects. */
39/* ******************************************************************** */
40
42class CPL_DLL GDALMajorObject
43{
44 protected:
46 int nFlags; // GMO_* flags.
47 CPLString sDescription{};
48 GDALMultiDomainMetadata oMDMD{};
49
51
52 char **BuildMetadataDomainList(char **papszList, int bCheckNonEmpty,
54
56 GDALMajorObject(const GDALMajorObject &) = default;
57
60
63
66
67 public:
69 virtual ~GDALMajorObject();
70
71 int GetMOFlags() const;
72 void SetMOFlags(int nFlagsIn);
73
74 virtual const char *GetDescription() const;
75 virtual void SetDescription(const char *);
76
77 virtual char **GetMetadataDomainList();
78
79 virtual char **GetMetadata(const char *pszDomain = "");
80 virtual CPLErr SetMetadata(char **papszMetadata,
81 const char *pszDomain = "");
82 virtual const char *GetMetadataItem(const char *pszName,
83 const char *pszDomain = "");
84 virtual CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
85 const char *pszDomain = "");
86
89 static inline GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)
90 {
91 return static_cast<GDALMajorObjectH>(poMajorObject);
92 }
93
96 static inline GDALMajorObject *FromHandle(GDALMajorObjectH hMajorObject)
97 {
98 return static_cast<GDALMajorObject *>(hMajorObject);
99 }
100};
101
102#endif
Convenient string class based on std::string.
Definition cpl_string.h:320
static GDALMajorObject * FromHandle(GDALMajorObjectH hMajorObject)
Convert a GDALMajorObjectH to a GDALMajorObject*.
Definition gdal_majorobject.h:96
GDALMajorObject & operator=(const GDALMajorObject &)=default
Copy assignment operator.
GDALMajorObject(const GDALMajorObject &)=default
Copy constructor.
static GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)
Convert a GDALMajorObject* to a GDALMajorObjectH.
Definition gdal_majorobject.h:89
virtual CPLErr SetMetadataItem(const char *pszName, const char *pszValue, const char *pszDomain="")
Set single metadata item.
Definition gdalmajorobject.cpp:366
virtual CPLErr SetMetadata(char **papszMetadata, const char *pszDomain="")
Set metadata.
Definition gdalmajorobject.cpp:271
GDALMajorObject & operator=(GDALMajorObject &&)=default
Move assignment operator.
virtual char ** GetMetadataDomainList()
Fetch list of metadata domains.
Definition gdalmajorobject.cpp:143
virtual char ** GetMetadata(const char *pszDomain="")
Fetch metadata.
Definition gdalmajorobject.cpp:228
char ** BuildMetadataDomainList(char **papszList, int bCheckNonEmpty,...) CPL_NULL_TERMINATED
Helper function for custom implementations of GetMetadataDomainList().
Definition gdalmajorobject.cpp:166
int GetMOFlags() const
Returns the GMO_ flags.
Definition gdalmajorobject.cpp:411
virtual const char * GetMetadataItem(const char *pszName, const char *pszDomain="")
Fetch single metadata item.
Definition gdalmajorobject.cpp:322
GDALMajorObject(GDALMajorObject &&)=default
Move constructor.
void SetMOFlags(int nFlagsIn)
Assign GMO_flags.
Definition gdalmajorobject.cpp:424
virtual void SetDescription(const char *)
Set object description.
Definition gdalmajorobject.cpp:102
virtual const char * GetDescription() const
Fetch object description.
Definition gdalmajorobject.cpp:61
CPLErr
Error category.
Definition cpl_error.h:37
Core portability definitions for CPL.
#define CPL_NULL_TERMINATED
Null terminated variadic.
Definition cpl_port.h:832
Various convenience functions for working with strings and string lists.
Forward definitions of GDAL/OGR/OSR C handle types.
void * GDALMajorObjectH
Opaque type used for the C bindings of the C++ GDALMajorObject class.
Definition gdal_fwd.h:39