/src/gdal/gcore/gdal_multidomainmetadata.h
Line | Count | Source |
1 | | /****************************************************************************** |
2 | | * |
3 | | * Name: gdal_multidomainmetadata.h |
4 | | * Project: GDAL Core |
5 | | * Purpose: Declaration of GDALMultiDomainMetadata 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 GDALMULTIDOMAINMETADATA_H_INCLUDED |
16 | | #define GDALMULTIDOMAINMETADATA_H_INCLUDED |
17 | | |
18 | | #include "cpl_port.h" |
19 | | #include "cpl_string.h" |
20 | | |
21 | | #include <map> |
22 | | |
23 | | /*! @cond Doxygen_Suppress */ |
24 | | typedef struct CPLXMLNode CPLXMLNode; |
25 | | |
26 | | /*! @endcond */ |
27 | | |
28 | | /************************************************************************/ |
29 | | /* GDALMultiDomainMetadata */ |
30 | | /************************************************************************/ |
31 | | |
32 | | //! @cond Doxygen_Suppress |
33 | | class CPL_DLL GDALMultiDomainMetadata |
34 | | { |
35 | | private: |
36 | | CPLStringList aosDomainList{}; |
37 | | |
38 | | struct Comparator |
39 | | { |
40 | | bool operator()(const char *a, const char *b) const |
41 | 0 | { |
42 | 0 | return STRCASECMP(a, b) < 0; |
43 | 0 | } |
44 | | }; |
45 | | |
46 | | std::map<const char *, CPLStringList, Comparator> oMetadata{}; |
47 | | |
48 | | public: |
49 | | GDALMultiDomainMetadata(); |
50 | | |
51 | | /** Copy constructor */ |
52 | | GDALMultiDomainMetadata(const GDALMultiDomainMetadata &) = default; |
53 | | |
54 | | /** Copy assignment operator */ |
55 | | GDALMultiDomainMetadata & |
56 | 0 | operator=(const GDALMultiDomainMetadata &) = default; |
57 | | |
58 | | /** Move constructor */ |
59 | | GDALMultiDomainMetadata(GDALMultiDomainMetadata &&) = default; |
60 | | |
61 | | /** Move assignment operator */ |
62 | | GDALMultiDomainMetadata &operator=(GDALMultiDomainMetadata &&) = default; |
63 | | |
64 | | ~GDALMultiDomainMetadata(); |
65 | | |
66 | | int XMLInit(const CPLXMLNode *psMetadata, int bMerge); |
67 | | CPLXMLNode *Serialize() const; |
68 | | |
69 | | CSLConstList GetDomainList() const |
70 | 0 | { |
71 | 0 | return aosDomainList.List(); |
72 | 0 | } |
73 | | |
74 | | char **GetMetadata(const char *pszDomain = ""); |
75 | | CPLErr SetMetadata(CSLConstList papszMetadata, const char *pszDomain = ""); |
76 | | const char *GetMetadataItem(const char *pszName, |
77 | | const char *pszDomain = ""); |
78 | | CPLErr SetMetadataItem(const char *pszName, const char *pszValue, |
79 | | const char *pszDomain = ""); |
80 | | |
81 | | void Clear(); |
82 | | |
83 | | inline void clear() |
84 | 0 | { |
85 | 0 | Clear(); |
86 | 0 | } |
87 | | }; |
88 | | |
89 | | //! @endcond |
90 | | |
91 | | #endif |