JsonValue.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 
27 namespace armarx
28 {
29  class JsonValue;
30  using JsonValuePtr = std::shared_ptr<JsonValue>;
31 
33 
34  class JsonValue : public JsonData
35  {
36  friend class StructuralJsonParser;
37 
38  public:
39  enum Type
40  {
45  };
46 
47  JsonValue(const std::string& value);
48  JsonValue(int value);
49  JsonValue(long value);
50  JsonValue(float value);
51  JsonValue(double value);
52 
53  static JsonValuePtr Null();
54  static JsonValuePtr True();
55  static JsonValuePtr False();
56  static JsonValuePtr Create(const std::string& value);
57  static JsonValuePtr Create(int value);
58  static JsonValuePtr Create(long value);
59  static JsonValuePtr Create(float value);
60  static JsonValuePtr Create(double value);
61 
62  static JsonValuePtr CreateRaw(Type type, const std::string& value);
63  static bool CheckValue(Type type, const std::string& value);
64 
65  static bool CheckNumber(const std::string& value);
66  static bool CheckInt(const std::string& value);
67  static bool CheckBool(const std::string& value);
68  static bool CheckNull(const std::string& value);
69 
70 
71  void writeJson(const JsonWriterPtr& writer) override;
72 
73  JsonValuePtr toSharedPtr() const;
74 
75  static std::string ToString(int value);
76  static std::string ToString(long value);
77  static std::string ToString(float value);
78  static std::string ToString(double value);
79 
80  std::string asString() const;
81  float asFloat() const;
82  int asInt() const;
83  bool asBool() const;
84 
85  std::string rawValue();
86 
87  JsonDataPtr clone() override;
88 
89  Type getType();
90 
91  private:
92  JsonValue(Type type, const std::string& value);
93  Type type;
94  std::string value;
95  };
96 } // namespace armarx
JsonData.h
armarx::JsonValue::eNumber
@ eNumber
Definition: JsonValue.h:42
armarx::JsonValuePtr
std::shared_ptr< JsonValue > JsonValuePtr
Definition: JsonValue.h:30
armarx::JsonValue::rawValue
std::string rawValue()
Definition: JsonValue.cpp:266
armarx::JsonValue::Type
Type
Definition: JsonValue.h:39
armarx::JsonValue::True
static JsonValuePtr True()
Definition: JsonValue.cpp:58
armarx::JsonValue::False
static JsonValuePtr False()
Definition: JsonValue.cpp:65
armarx::JsonValue::CheckInt
static bool CheckInt(const std::string &value)
Definition: JsonValue.cpp:146
armarx::JsonValue::toSharedPtr
JsonValuePtr toSharedPtr() const
Definition: JsonValue.cpp:183
armarx::JsonValue::Create
static JsonValuePtr Create(const std::string &value)
Definition: JsonValue.cpp:72
armarx::JsonValue::clone
JsonDataPtr clone() override
Definition: JsonValue.cpp:272
armarx::JsonWriterPtr
std::shared_ptr< JsonWriter > JsonWriterPtr
Definition: JsonWriter.h:30
armarx::JsonValue::CheckNumber
static bool CheckNumber(const std::string &value)
Definition: JsonValue.cpp:138
armarx::JsonValue::asFloat
float asFloat() const
Definition: JsonValue.cpp:236
armarx::JsonValue
Definition: JsonValue.h:34
armarx::JsonValue::eString
@ eString
Definition: JsonValue.h:41
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:855
armarx::JsonValue::eNull
@ eNull
Definition: JsonValue.h:44
armarx::JsonValue::CheckNull
static bool CheckNull(const std::string &value)
Definition: JsonValue.cpp:160
armarx::JsonValue::eBool
@ eBool
Definition: JsonValue.h:43
armarx::JsonData
Definition: JsonData.h:33
armarx::JsonValue::asString
std::string asString() const
Definition: JsonValue.cpp:226
armarx::JsonValue::writeJson
void writeJson(const JsonWriterPtr &writer) override
Definition: JsonValue.cpp:166
armarx::JsonValue::getType
Type getType()
Definition: JsonValue.cpp:279
armarx::JsonValue::ToString
static std::string ToString(int value)
Definition: JsonValue.cpp:190
armarx::JsonValue::CheckValue
static bool CheckValue(Type type, const std::string &value)
Definition: JsonValue.cpp:118
armarx::JsonValue::JsonValue
JsonValue(const std::string &value)
Definition: JsonValue.cpp:30
armarx::JsonDataPtr
std::shared_ptr< JsonData > JsonDataPtr
Definition: JsonData.h:31
armarx::JsonValue::CheckBool
static bool CheckBool(const std::string &value)
Definition: JsonValue.cpp:154
armarx::StructuralJsonParser
Definition: StructuralJsonParser.h:35
armarx::JsonValue::CreateRaw
static JsonValuePtr CreateRaw(Type type, const std::string &value)
Definition: JsonValue.cpp:107
armarx::JsonValue::asBool
bool asBool() const
Definition: JsonValue.cpp:256
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::JsonValue::Null
static JsonValuePtr Null()
Definition: JsonValue.cpp:51
armarx::JsonValue::asInt
int asInt() const
Definition: JsonValue.cpp:246