StructuralJsonParser.h
Go to the documentation of this file.
1
/*
2
* This file is part of ArmarX.
3
*
4
* ArmarX is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation.
7
*
8
* ArmarX is distributed in the hope that it will be useful, but
9
* WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15
*
16
* @author Simon Ottenhaus (simon dot ottenhaus at kit dot edu)
17
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
18
* GNU General Public License
19
*/
20
21
#pragma once
22
23
#include <memory>
24
25
#include "
JsonData.h
"
26
#include "
JsonObject.h
"
27
28
namespace
armarx
29
{
30
class
SimpleLexer;
31
32
class
StructuralJsonParser;
33
using
StructuralJsonParserPtr
= std::shared_ptr<StructuralJsonParser>;
34
35
class
StructuralJsonParser
36
{
37
public
:
38
enum
TokenType
39
{
40
eWhitespace
,
41
eOpeningCurlyBracket
,
42
eClosingCurlyBracket
,
43
eOpeningSquareBracket
,
44
eClosingSquareBracket
,
45
eColon
,
46
eComma
,
47
eId
,
48
eString
,
49
eNumber
,
50
eBoolean
,
51
eNull
52
};
53
54
StructuralJsonParser
(
const
std::string& src,
55
bool
acceptSingleValue =
true
,
56
bool
accceptJsStyleKeys =
true
);
57
58
~StructuralJsonParser
();
59
60
void
parse
();
61
62
JsonDataPtr
parsedJson
;
63
bool
iserr
();
64
std::string
geterr
();
65
void
geterrpos
(
int
& line,
int
& col);
66
std::string
geterrposstr
();
67
std::string
getlongerrposstr
();
68
69
static
bool
DequoteString
(std::string
str
, std::string& res);
70
71
private
:
72
std::unique_ptr<SimpleLexer> lexer;
73
bool
acceptSingleValue;
74
bool
accceptJsStyleKeys;
75
LexerInfo
previousTokenEndOffset;
76
77
void
next();
78
std::string err;
79
std::string expected;
80
81
JsonDataPtr
p_json();
82
JsonDataPtr
p_object();
83
void
p_pair(
JsonObjectPtr
o);
84
JsonDataPtr
p_array();
85
JsonDataPtr
p_item();
86
JsonDataPtr
p_leaf();
87
JsonDataPtr
error(
const
std::string& expected,
const
JsonDataPtr
& toReturn =
JsonDataPtr
());
88
JsonDataPtr
stringerror(
const
std::string& error,
89
const
JsonDataPtr
& toReturn =
JsonDataPtr
());
90
};
91
}
// namespace armarx
armarx::StructuralJsonParser::eOpeningSquareBracket
@ eOpeningSquareBracket
Definition:
StructuralJsonParser.h:43
JsonData.h
armarx::StructuralJsonParser::eColon
@ eColon
Definition:
StructuralJsonParser.h:45
armarx::StructuralJsonParser::getlongerrposstr
std::string getlongerrposstr()
Definition:
StructuralJsonParser.cpp:376
str
std::string str(const T &t)
Definition:
UserAssistedSegmenterGuiWidgetController.cpp:43
JsonObject.h
armarx::StructuralJsonParser::geterrpos
void geterrpos(int &line, int &col)
Definition:
StructuralJsonParser.cpp:362
armarx::StructuralJsonParser::eNumber
@ eNumber
Definition:
StructuralJsonParser.h:49
armarx::StructuralJsonParser::eClosingCurlyBracket
@ eClosingCurlyBracket
Definition:
StructuralJsonParser.h:42
armarx::StructuralJsonParser::DequoteString
static bool DequoteString(std::string str, std::string &res)
Definition:
StructuralJsonParser.cpp:384
armarx::StructuralJsonParser::StructuralJsonParser
StructuralJsonParser(const std::string &src, bool acceptSingleValue=true, bool accceptJsStyleKeys=true)
Definition:
StructuralJsonParser.cpp:28
armarx::StructuralJsonParser::eClosingSquareBracket
@ eClosingSquareBracket
Definition:
StructuralJsonParser.h:44
armarx::StructuralJsonParser::eString
@ eString
Definition:
StructuralJsonParser.h:48
armarx::StructuralJsonParser::iserr
bool iserr()
Definition:
StructuralJsonParser.cpp:350
armarx::StructuralJsonParser::eComma
@ eComma
Definition:
StructuralJsonParser.h:46
armarx::StructuralJsonParser::geterrposstr
std::string geterrposstr()
Definition:
StructuralJsonParser.cpp:368
armarx::StructuralJsonParser::parse
void parse()
Definition:
StructuralJsonParser.cpp:60
armarx::StructuralJsonParser::eWhitespace
@ eWhitespace
Definition:
StructuralJsonParser.h:40
armarx::StructuralJsonParser::geterr
std::string geterr()
Definition:
StructuralJsonParser.cpp:356
armarx::LexerInfo
Definition:
LexerInfo.h:30
armarx::JsonDataPtr
std::shared_ptr< JsonData > JsonDataPtr
Definition:
JsonData.h:31
armarx::StructuralJsonParserPtr
std::shared_ptr< StructuralJsonParser > StructuralJsonParserPtr
Definition:
StructuralJsonParser.h:33
armarx::StructuralJsonParser::eOpeningCurlyBracket
@ eOpeningCurlyBracket
Definition:
StructuralJsonParser.h:41
armarx::StructuralJsonParser::~StructuralJsonParser
~StructuralJsonParser()
Definition:
StructuralJsonParser.cpp:55
armarx::StructuralJsonParser::eNull
@ eNull
Definition:
StructuralJsonParser.h:51
armarx::StructuralJsonParser
Definition:
StructuralJsonParser.h:35
armarx::StructuralJsonParser::parsedJson
JsonDataPtr parsedJson
Definition:
StructuralJsonParser.h:62
armarx::StructuralJsonParser::eId
@ eId
Definition:
StructuralJsonParser.h:47
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition:
ArmarXTimeserver.cpp:27
armarx::StructuralJsonParser::eBoolean
@ eBoolean
Definition:
StructuralJsonParser.h:50
armarx::JsonObjectPtr
std::shared_ptr< JsonObject > JsonObjectPtr
Definition:
JsonObject.h:34
armarx::StructuralJsonParser::TokenType
TokenType
Definition:
StructuralJsonParser.h:38
ArmarXGui
libraries
StructuralJson
StructuralJsonParser.h
Generated on Sat Mar 29 2025 09:17:23 for armarx_documentation by
1.8.17