62 lines
1.8 KiB
C
62 lines
1.8 KiB
C
|
/******************************************************************************
|
||
|
* $Id$
|
||
|
*
|
||
|
* Project: Common Portability Library
|
||
|
* Purpose: Implementation of CPLKeywordParser - a class for parsing
|
||
|
* the keyword format used for files like QuickBird .RPB files.
|
||
|
* This is a slight variation on the NASAKeywordParser used for
|
||
|
* the PDS/ISIS2/ISIS3 formats.
|
||
|
* Author: Frank Warmerdam <warmerdam@pobox.com
|
||
|
*
|
||
|
******************************************************************************
|
||
|
* Copyright (c) 2008, Frank Warmerdam <warmerdam@pobox.com>
|
||
|
*
|
||
|
* SPDX-License-Identifier: MIT
|
||
|
****************************************************************************/
|
||
|
|
||
|
#ifndef CPL_KEYWORD_PARSER
|
||
|
#define CPL_KEYWORD_PARSER
|
||
|
|
||
|
#include "cpl_string.h"
|
||
|
|
||
|
/************************************************************************/
|
||
|
/* ==================================================================== */
|
||
|
/* CPLKeywordParser */
|
||
|
/* ==================================================================== */
|
||
|
/************************************************************************/
|
||
|
|
||
|
/*! @cond Doxygen_Suppress */
|
||
|
|
||
|
class CPL_DLL CPLKeywordParser
|
||
|
{
|
||
|
char **papszKeywordList = nullptr;
|
||
|
|
||
|
CPLString osHeaderText{};
|
||
|
const char *pszHeaderNext = nullptr;
|
||
|
|
||
|
void SkipWhite();
|
||
|
bool ReadWord(CPLString &osWord);
|
||
|
bool ReadPair(CPLString &osName, CPLString &osValue);
|
||
|
bool ReadGroup(const char *pszPathPrefix, int nRecLevel);
|
||
|
|
||
|
CPL_DISALLOW_COPY_ASSIGN(CPLKeywordParser)
|
||
|
|
||
|
public:
|
||
|
CPLKeywordParser();
|
||
|
~CPLKeywordParser();
|
||
|
|
||
|
int Ingest(VSILFILE *fp);
|
||
|
|
||
|
const char *GetKeyword(const char *pszPath,
|
||
|
const char *pszDefault = nullptr);
|
||
|
|
||
|
char **GetAllKeywords()
|
||
|
{
|
||
|
return papszKeywordList;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/*! @endcond */
|
||
|
|
||
|
#endif /* def CPL_KEYWORD_PARSER */
|