OGR
cplkeywordparser.h
1 /******************************************************************************
2  * $Id: cplkeywordparser.h c39d156816d937c3139360b11786c769aeabd21e 2018-05-05 19:48:08 +0200 Even Rouault $
3  *
4  * Project: Common Portability Library
5  * Purpose: Implementation of CPLKeywordParser - a class for parsing
6  * the keyword format used for files like QuickBird .RPB files.
7  * This is a slight variation on the NASAKeywordParser used for
8  * the PDS/ISIS2/ISIS3 formats.
9  * Author: Frank Warmerdam <warmerdam@pobox.com
10  *
11  ******************************************************************************
12  * Copyright (c) 2008, Frank Warmerdam <warmerdam@pobox.com>
13  *
14  * Permission is hereby granted, free of charge, to any person obtaining a
15  * copy of this software and associated documentation files (the "Software"),
16  * to deal in the Software without restriction, including without limitation
17  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
18  * and/or sell copies of the Software, and to permit persons to whom the
19  * Software is furnished to do so, subject to the following conditions:
20  *
21  * The above copyright notice and this permission notice shall be included
22  * in all copies or substantial portions of the Software.
23  *
24  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
27  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
30  * DEALINGS IN THE SOFTWARE.
31  ****************************************************************************/
32 
33 #ifndef CPL_KEYWORD_PARSER
34 #define CPL_KEYWORD_PARSER
35 
36 #include "cpl_string.h"
37 
38 /************************************************************************/
39 /* ==================================================================== */
40 /* CPLKeywordParser */
41 /* ==================================================================== */
42 /************************************************************************/
43 
46 class CPLKeywordParser
47 {
48  char **papszKeywordList = nullptr;
49 
50  CPLString osHeaderText{};
51  const char *pszHeaderNext = nullptr;
52 
53  void SkipWhite();
54  bool ReadWord( CPLString &osWord );
55  bool ReadPair( CPLString &osName, CPLString &osValue );
56  bool ReadGroup( const char *pszPathPrefix, int nRecLevel );
57 
58  CPL_DISALLOW_COPY_ASSIGN(CPLKeywordParser)
59 
60 public:
61  CPLKeywordParser();
62  ~CPLKeywordParser();
63 
64  int Ingest( VSILFILE *fp );
65 
66  const char *GetKeyword( const char *pszPath, const char *pszDefault=nullptr );
67  char **GetAllKeywords() { return papszKeywordList; }
68 };
69 
72 #endif /* def CPL_KEYWORD_PARSER */
CXT_Element
@ CXT_Element
Definition: cpl_minixml.h:46
CPLGetSymbol
void * CPLGetSymbol(const char *, const char *)
Definition: cplgetsymbol.cpp:89
VSIFReadL
size_t VSIFReadL(void *, size_t, size_t, VSILFILE *) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Read bytes from file.
Definition: cpl_vsil.cpp:1690
cpl_error.h
CPLEscapeString
char * CPLEscapeString(const char *pszString, int nLength, int nScheme)
Definition: cpl_string.cpp:2036
CPLParseXMLFile
CPLXMLNode * CPLParseXMLFile(const char *pszFilename)
Parse XML file into tree.
Definition: cpl_minixml.cpp:2124
CPLFindFile
const char * CPLFindFile(const char *pszClass, const char *pszBasename)
Definition: cpl_findfile.cpp:177
CPLHashSetNew
CPLHashSet * CPLHashSetNew(CPLHashSetHashFunc fnHashFunc, CPLHashSetEqualFunc fnEqualFunc, CPLHashSetFreeEltFunc fnFreeEltFunc)
Definition: cpl_hash_set.cpp:91
cpl_hash_set.h
CXT_Comment
@ CXT_Comment
Definition: cpl_minixml.h:49
cpl_minixml.h
cpl_vsi.h
CSLSetNameValue
char ** CSLSetNameValue(char **papszStrList, const char *pszName, const char *pszValue)
Definition: cpl_string.cpp:1877
CPLString
Convenient string class based on std::string.
Definition: cpl_string.h:329
CXT_Text
@ CXT_Text
Definition: cpl_minixml.h:47
CPLHashSetEqualStr
int CPLHashSetEqualStr(const void *pszStr1, const void *pszStr2)
Definition: cpl_hash_set.cpp:579
CPLXMLNode
Definition: cpl_minixml.h:66
EQUAL
#define EQUAL(a, b)
Definition: cpl_port.h:569
CPLGetPath
const char * CPLGetPath(const char *)
Definition: cpl_path.cpp:153
VSIFCloseL
int VSIFCloseL(VSILFILE *) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Close file.
Definition: cpl_vsil.cpp:1472
CPLES_XML
#define CPLES_XML
Definition: cpl_string.h:169
CPLHashSetInsert
int CPLHashSetInsert(CPLHashSet *set, void *elt)
Definition: cpl_hash_set.cpp:355
CPLRecodeToWChar
wchar_t * CPLRecodeToWChar(const char *pszSource, const char *pszSrcEncoding, const char *pszDstEncoding)
Definition: cpl_recode.cpp:208
CPLSerializeXMLTree
char * CPLSerializeXMLTree(const CPLXMLNode *psNode)
Convert tree into string document.
Definition: cpl_minixml.cpp:1252
CPLTestBool
bool CPLTestBool(const char *pszValue)
Definition: cpl_string.cpp:1526
CPLGetXMLNode
CPLXMLNode * CPLGetXMLNode(CPLXMLNode *poRoot, const char *pszPath)
Find node by path.
Definition: cpl_minixml.cpp:1550
CSLConstList
char ** CSLConstList
Definition: cpl_port.h:1194
VSIFTellL
vsi_l_offset VSIFTellL(VSILFILE *)
Tell current file offset.
Definition: cpl_vsil.cpp:1575
CPLHashSetDestroy
void CPLHashSetDestroy(CPLHashSet *set)
Definition: cpl_hash_set.cpp:207
CPLE_OpenFailed
#define CPLE_OpenFailed
Definition: cpl_error.h:105
CPL_ENC_UTF8
#define CPL_ENC_UTF8
Definition: cpl_string.h:265
CPLXMLNode::eType
CPLXMLNodeType eType
Node type.
Definition: cpl_minixml.h:74
CPLDestroyXMLNode
void CPLDestroyXMLNode(CPLXMLNode *)
Destroy a tree.
Definition: cpl_minixml.cpp:1405
CPLDebug
void CPLDebug(const char *, const char *,...)
Definition: cpl_error.cpp:602
CPLFormFilename
const char * CPLFormFilename(const char *pszPath, const char *pszBasename, const char *pszExtension)
Definition: cpl_path.cpp:537
VSIUnlink
int VSIUnlink(const char *pszFilename)
Delete a file.
Definition: cpl_vsil.cpp:498
STARTS_WITH
#define STARTS_WITH(a, b)
Definition: cpl_port.h:578
cpl_conv.h
cpl_string.h
VSIFSeekL
int VSIFSeekL(VSILFILE *, vsi_l_offset, int) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Seek to requested offset.
Definition: cpl_vsil.cpp:1532
CPLSPrintf
const char * CPLSPrintf(const char *fmt,...)
Definition: cpl_string.cpp:977
CPLGetXMLValue
const char * CPLGetXMLValue(const CPLXMLNode *poRoot, const char *pszPath, const char *pszDefault)
Fetch element/attribute value.
Definition: cpl_minixml.cpp:1638
CPLError
void CPLError(CPLErr eErrClass, CPLErrorNum err_no, const char *fmt,...)
Definition: cpl_error.cpp:308
vsi_l_offset
GUIntBig vsi_l_offset
Definition: cpl_vsi.h:140
VSIFree
void VSIFree(void *)
Definition: cpl_vsisimple.cpp:827
CPLE_NotSupported
#define CPLE_NotSupported
Definition: cpl_error.h:109
CXT_Attribute
@ CXT_Attribute
Definition: cpl_minixml.h:48
CPLCreateXMLNode
CPLXMLNode * CPLCreateXMLNode(CPLXMLNode *poParent, CPLXMLNodeType eType, const char *pszText)
Create an document tree item.
Definition: cpl_minixml.cpp:1297
VSI_STAT_EXISTS_FLAG
#define VSI_STAT_EXISTS_FLAG
Definition: cpl_vsi.h:203
_CPLHashSet
Definition: cpl_hash_set.cpp:40
VSIMalloc
void * VSIMalloc(size_t)
Definition: cpl_vsisimple.cpp:558
CSLDestroy
void CSLDestroy(char **papszStrList)
Definition: cpl_string.cpp:200
VSIStatExL
int VSIStatExL(const char *pszFilename, VSIStatBufL *psStatBuf, int nFlags)
Get filesystem object info.
Definition: cpl_vsil.cpp:776
CPL_ENC_UCS2
#define CPL_ENC_UCS2
Definition: cpl_string.h:269
CPL_UNUSED
#define CPL_UNUSED
Definition: cpl_port.h:948
CPLXMLNode::psNext
struct CPLXMLNode * psNext
Next sibling.
Definition: cpl_minixml.h:106
VSIStatBufL
struct stat64 VSIStatBufL
Definition: cpl_vsi.h:194
cpl_port.h
VSIFOpenL
VSILFILE * VSIFOpenL(const char *, const char *)
Open file.
Definition: cpl_vsil.cpp:997
CSLFetchNameValue
const char * CSLFetchNameValue(CSLConstList papszStrList, const char *pszName)
Definition: cpl_string.cpp:1674
CPLStrdup
char * CPLStrdup(const char *)
Definition: cpl_conv.cpp:293
CPLXMLNode::pszValue
char * pszValue
Node value.
Definition: cpl_minixml.h:97
CPLXMLNode::psChild
struct CPLXMLNode * psChild
Child node.
Definition: cpl_minixml.h:118
CPLFree
#define CPLFree
Definition: cpl_conv.h:81
CPL_DISALLOW_COPY_ASSIGN
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Definition: cpl_port.h:997
CPLHashSetLookup
void * CPLHashSetLookup(CPLHashSet *set, const void *elt)
Definition: cpl_hash_set.cpp:405
VSIFPrintfL
int VSIFPrintfL(VSILFILE *, const char *,...) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Formatted write to file.
Definition: cpl_vsil.cpp:1918
CPLGetConfigOption
const char * CPLGetConfigOption(const char *, const char *)
Definition: cpl_conv.cpp:1692
VSILFILE
FILE VSILFILE
Definition: cpl_vsi.h:156
STARTS_WITH_CI
#define STARTS_WITH_CI(a, b)
Definition: cpl_port.h:580
CPLE_AppDefined
#define CPLE_AppDefined
Definition: cpl_error.h:99
CPLHashSetHashStr
unsigned long CPLHashSetHashStr(const void *pszStr)
Definition: cpl_hash_set.cpp:551

Generated for GDAL by doxygen 1.8.17.