# GDALMajorObject C++ API

## Include file

gdal_majorobject.h

## GDALMajorObject class

class GDALMajorObject

  Object with metadata.

  Subclassed by GDALDataset, GDALDriver, GDALDriverManager, GDALRasterBand, OGRLayer

  Public Functions

  int GetMOFlags() const

    Returns the GMO_ flags.

    Returns:

      flags

  void SetMOFlags(int nFlagsIn)

    Assign GMO_flags.

    Parameters:

      nNewFlags -- new flags.

  virtual const char *GetDescription() const

    Fetch object description.

    The semantics of the returned description are specific to the derived type. For GDALDatasets it is the dataset name. For GDALRasterBands it is actually a description (if supported) or "".

    This method is the same as the C function GDALGetDescription().

    Returns:

      non-null pointer to internal description string.

  virtual void SetDescription(const char*)

    Set object description.

    The semantics of the description are specific to the derived type. For GDALDatasets it is the dataset name. For GDALRasterBands it is actually a description (if supported) or "".

    Normally application code should not set the "description" for GDALDatasets. It is handled internally.

    This method is the same as the C function GDALSetDescription().

  virtual char **GetMetadataDomainList()

    Fetch list of metadata domains.

    The returned string list is the list of (non-empty) metadata domains.

    This method does the same thing as the C function GDALGetMetadataDomainList().

    Returns:

      NULL or a string list. Must be freed with CSLDestroy()

  virtual char **GetMetadata(const char *pszDomain = "")

    Fetch metadata.

    The returned string list is owned by the object, and may change at any time. It is formatted as a "Name=value" list with the last pointer value being NULL. Use the CPL StringList functions such as CSLFetchNameValue() to manipulate it.

    Note that relatively few formats return any metadata at this time.

    This method does the same thing as the C function GDALGetMetadata().

    Parameters:

      pszDomain -- the domain of interest. Use "" or NULL for the default domain.

    Returns:

      NULL or a string list.

  virtual CPLErr SetMetadata(char **papszMetadata, const char *pszDomain = "")

    Set metadata.

    The C function GDALSetMetadata() does the same thing as this method.

    Parameters:

      - papszMetadataIn -- the metadata in name=value string list format to apply.

      - pszDomain -- the domain of interest. Use "" or NULL for the default domain.

    Returns:

      CE_None on success, CE_Failure on failure and CE_Warning if the metadata has been accepted, but is likely not maintained persistently by the underlying object between sessions.

  virtual const char *GetMetadataItem(const char *pszName, const char *pszDomain = "")

    Fetch single metadata item.

    The C function GDALGetMetadataItem() does the same thing as this method.

    Parameters:

      - pszName -- the key for the metadata item to fetch.

      - pszDomain -- the domain to fetch for, use NULL for the default domain.

    Returns:

      NULL on failure to find the key, or a pointer to an internal copy of the value string on success.

  virtual CPLErr SetMetadataItem(const char *pszName, const char *pszValue, const char *pszDomain = "")

    Set single metadata item.

    The C function GDALSetMetadataItem() does the same thing as this method.

    Parameters:

      - pszName -- the key for the metadata item to fetch.

      - pszValue -- the value to assign to the key.

      - pszDomain -- the domain to set within, use NULL for the default domain.

    Returns:

      CE_None on success, or an error code on failure.

  Public Static Functions

  static inline GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)

    Convert a GDALMajorObject* to a GDALMajorObjectH.

  static inline GDALMajorObject *FromHandle(GDALMajorObjectH hMajorObject)

    Convert a GDALMajorObjectH to a GDALMajorObject*.