LCOV - code coverage report
Current view: top level - gcore - gdal_multidomainmetadata.h (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 5 5 100.0 %
Date: 2025-10-01 17:07:58 Functions: 5 5 100.0 %

          Line data    Source code
       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     6954418 : class CPL_DLL GDALMultiDomainMetadata
      34             : {
      35             :   private:
      36             :     CPLStringList aosDomainList{};
      37             : 
      38             :     struct Comparator
      39             :     {
      40    34518200 :         bool operator()(const char *a, const char *b) const
      41             :         {
      42    34518200 :             return STRCASECMP(a, b) < 0;
      43             :         }
      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             :     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      712632 :     CSLConstList GetDomainList() const
      70             :     {
      71      712632 :         return aosDomainList.List();
      72             :     }
      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             :     {
      85             :         Clear();
      86             :     }
      87             : };
      88             : 
      89             : //! @endcond
      90             : 
      91             : #endif

Generated by: LCOV version 1.14