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

          Line data    Source code
       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             : 
      24             : //! @cond Doxygen_Suppress
      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             : 
      32             : //! @endcond
      33             : 
      34             : /* ******************************************************************** */
      35             : /*                           GDALMajorObject                            */
      36             : /*                                                                      */
      37             : /*      Base class providing metadata, description and other            */
      38             : /*      services shared by major objects.                               */
      39             : /* ******************************************************************** */
      40             : 
      41             : /** Object with metadata. */
      42             : class CPL_DLL GDALMajorObject
      43             : {
      44             :   protected:
      45             :     //! @cond Doxygen_Suppress
      46             :     int nFlags;  // GMO_* flags.
      47             :     CPLString sDescription{};
      48             :     GDALMultiDomainMetadata oMDMD{};
      49             : 
      50             :     //! @endcond
      51             : 
      52             :     char **BuildMetadataDomainList(char **papszList, int bCheckNonEmpty,
      53             :                                    ...) CPL_NULL_TERMINATED;
      54             : 
      55             :     /** Copy constructor */
      56             :     GDALMajorObject(const GDALMajorObject &) = default;
      57             : 
      58             :     /** Copy assignment operator */
      59             :     GDALMajorObject &operator=(const GDALMajorObject &) = default;
      60             : 
      61             :     /** Move constructor */
      62             :     GDALMajorObject(GDALMajorObject &&) = default;
      63             : 
      64             :     /** Move assignment operator */
      65             :     GDALMajorObject &operator=(GDALMajorObject &&) = default;
      66             : 
      67             :   public:
      68             :     GDALMajorObject();
      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             : 
      87             :     /** Convert a GDALMajorObject* to a GDALMajorObjectH.
      88             :      * @since GDAL 2.3
      89             :      */
      90         261 :     static inline GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)
      91             :     {
      92         261 :         return static_cast<GDALMajorObjectH>(poMajorObject);
      93             :     }
      94             : 
      95             :     /** Convert a GDALMajorObjectH to a GDALMajorObject*.
      96             :      * @since GDAL 2.3
      97             :      */
      98      308474 :     static inline GDALMajorObject *FromHandle(GDALMajorObjectH hMajorObject)
      99             :     {
     100      308474 :         return static_cast<GDALMajorObject *>(hMajorObject);
     101             :     }
     102             : };
     103             : 
     104             : #endif

Generated by: LCOV version 1.14