Fawkes API  Fawkes Development Version
InterfaceFieldType.h
1 
2 /****************************************************************************
3  * Blackboard -- Schema InterfaceFieldType
4  * (auto-generated, do not modify directly)
5  *
6  * Fawkes Blackboard REST API.
7  * Access blackboard data through a REST API.
8  *
9  * API Contact: Tim Niemueller <niemueller@kbsg.rwth-aachen.de>
10  * API Version: v1beta1
11  * API License: Apache 2.0
12  ****************************************************************************/
13 
14 #pragma once
15 
16 #define RAPIDJSON_HAS_STDSTRING 1
17 #include <rapidjson/fwd.h>
18 
19 #include <cstdint>
20 #include <memory>
21 #include <optional>
22 #include <string>
23 #include <vector>
24 
25 /** InterfaceFieldType representation for JSON transfer. */
27 
28 {
29 public:
30  /** Constructor. */
32  /** Constructor from JSON.
33  * @param json JSON string to initialize from
34  */
35  InterfaceFieldType(const std::string &json);
36  /** Constructor from JSON.
37  * @param v RapidJSON value object to initialize from.
38  */
39  InterfaceFieldType(const rapidjson::Value &v);
40 
41  /** Destructor. */
42  virtual ~InterfaceFieldType();
43 
44  /** Get version of implemented API.
45  * @return string representation of version
46  */
47  static std::string
49  {
50  return "v1beta1";
51  }
52 
53  /** Render object to JSON.
54  * @param pretty true to enable pretty printing (readable spacing)
55  * @return JSON string
56  */
57  virtual std::string to_json(bool pretty = false) const;
58  /** Render object to JSON.
59  * @param d RapidJSON document to retrieve allocator from
60  * @param v RapidJSON value to add data to
61  */
62  virtual void to_json_value(rapidjson::Document &d, rapidjson::Value &v) const;
63  /** Retrieve data from JSON string.
64  * @param json JSON representation suitable for this object.
65  * Will allow partial assignment and not validate automaticaly.
66  * @see validate()
67  */
68  virtual void from_json(const std::string &json);
69  /** Retrieve data from JSON string.
70  * @param v RapidJSON value suitable for this object.
71  * Will allow partial assignment and not validate automaticaly.
72  * @see validate()
73  */
74  virtual void from_json_value(const rapidjson::Value &v);
75 
76  /** Validate if all required fields have been set.
77  * @param subcall true if this is called from another class, e.g.,
78  * a sub-class or array holder. Will modify the kind of exception thrown.
79  * @exception std::vector<std::string> thrown if required information is
80  * missing and @p subcall is set to true. Contains a list of missing fields.
81  * @exception std::runtime_error informative message describing the missing
82  * fields
83  */
84  virtual void validate(bool subcall = false) const;
85 
86  // Schema: InterfaceFieldType
87 public:
88  /** Get name value.
89  * @return name value
90  */
91  std::optional<std::string>
92  name() const
93  {
94  return name_;
95  }
96 
97  /** Set name value.
98  * @param name new value
99  */
100  void
101  set_name(const std::string &name)
102  {
103  name_ = name;
104  }
105  /** Get type value.
106  * @return type value
107  */
108  std::optional<std::string>
109  type() const
110  {
111  return type_;
112  }
113 
114  /** Set type value.
115  * @param type new value
116  */
117  void
118  set_type(const std::string &type)
119  {
120  type_ = type;
121  }
122  /** Get is_array value.
123  * @return is_array value
124  */
125  std::optional<bool>
126  is_array() const
127  {
128  return is_array_;
129  }
130 
131  /** Set is_array value.
132  * @param is_array new value
133  */
134  void
135  set_is_array(const bool &is_array)
136  {
137  is_array_ = is_array;
138  }
139  /** possible enum values for this field
140  * @return enums value
141  */
142  std::vector<std::string>
143  enums() const
144  {
145  return enums_;
146  }
147 
148  /** Set enums value.
149  * @param enums new value
150  */
151  void
152  set_enums(const std::vector<std::string> &enums)
153  {
154  enums_ = enums;
155  }
156  /** Add element to enums array.
157  * @param enums new value
158  */
159  void
160  addto_enums(const std::string &&enums)
161  {
162  enums_.push_back(std::move(enums));
163  }
164 
165  /** Add element to enums array.
166  * The move-semantics version (std::move) should be preferred.
167  * @param enums new value
168  */
169  void
170  addto_enums(const std::string &enums)
171  {
172  enums_.push_back(enums);
173  }
174 
175 private:
176  std::optional<std::string> name_;
177  std::optional<std::string> type_;
178  std::optional<bool> is_array_;
179  std::vector<std::string> enums_;
180 };
virtual std::string to_json(bool pretty=false) const
Render object to JSON.
void set_type(const std::string &type)
Set type value.
void set_name(const std::string &name)
Set name value.
std::optional< std::string > name() const
Get name value.
void set_enums(const std::vector< std::string > &enums)
Set enums value.
void addto_enums(const std::string &enums)
Add element to enums array.
virtual void validate(bool subcall=false) const
Validate if all required fields have been set.
std::vector< std::string > enums() const
possible enum values for this field
virtual void from_json_value(const rapidjson::Value &v)
Retrieve data from JSON string.
std::optional< bool > is_array() const
Get is_array value.
std::optional< std::string > type() const
Get type value.
void addto_enums(const std::string &&enums)
Add element to enums array.
InterfaceFieldType()
Constructor.
static std::string api_version()
Get version of implemented API.
virtual void to_json_value(rapidjson::Document &d, rapidjson::Value &v) const
Render object to JSON.
virtual ~InterfaceFieldType()
Destructor.
virtual void from_json(const std::string &json)
Retrieve data from JSON string.
void set_is_array(const bool &is_array)
Set is_array value.
InterfaceFieldType representation for JSON transfer.