Coverage Report

Created: 2025-11-16 06:25

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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