GDAL
port
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 */
CPLString
Convenient string class based on std::string.
Definition:
cpl_string.h:333
cpl_string.h
Various convenience functions for working with strings and string lists.
CPL_DISALLOW_COPY_ASSIGN
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Helper to remove the copy and assignment constructors so that the compiler will not generate the defa...
Definition:
cpl_port.h:1007
VSILFILE
FILE VSILFILE
Opaque type for a FILE that implements the VSIVirtualHandle API.
Definition:
cpl_vsi.h:156
Generated by
1.8.20