https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
JsonSyntaxTree Class Reference

Holds the syntax in a Json::Value tree. More...

#include <JsonSyntaxTree.h>

Public Member Functions

 JsonSyntaxTree (const std::string &search_string)
 
virtual ~JsonSyntaxTree ()
 
bool addParameters (const std::string &parent_path, const std::string &path, bool is_type, const std::string &action, bool is_action, InputParameters *params, const FileLineInfo &lineinfo, const std::string &classname)
 Add parameters to the tree.
 
void addActionTask (const std::string &path, const std::string &action, const std::string &task, const FileLineInfo &lineinfo)
 Add a task to the tree.
 
const nlohmann::json & getRoot () const
 Get the root of the tree.
 
void addSyntaxType (const std::string &path, const std::string type)
 Add an associated type to a block.
 
void addGlobal ()
 Add the global section to the output.
 

Static Public Member Functions

static std::string documentationCppType (const std::string &cpp_type)
 Utilities for making sense of c++ types.
 
static std::string basicCppType (const std::string &cpp_type)
 

Protected Member Functions

std::string buildOptions (const std::iterator_traits< InputParameters::iterator >::value_type &p, bool &out_of_range_allowed, std::map< MooseEnumItem, std::string > &docs)
 
size_t setParams (InputParameters *params, bool search_match, nlohmann::json &all_params)
 
nlohmann::json & getJson (const std::string &parent, const std::string &path, bool is_type)
 
nlohmann::json & getJson (const std::string &path)
 
std::pair< std::string, std::string > getObjectLabel (const std::string &obj) const
 
std::pair< std::string, std::string > getActionLabel (const std::string &action) const
 

Static Protected Member Functions

static std::string buildOutputString (const std::iterator_traits< InputParameters::iterator >::value_type &p)
 
static std::vector< std::string > splitPath (const std::string &path)
 

Protected Attributes

nlohmann::json _root
 
std::string _search
 
std::map< std::string, std::pair< std::string, std::string > > _action_label_map
 
std::map< std::string, std::pair< std::string, std::string > > _object_label_map
 

Friends

class MooseServer
 

Detailed Description

Holds the syntax in a Json::Value tree.

Definition at line 22 of file JsonSyntaxTree.h.

Constructor & Destructor Documentation

◆ JsonSyntaxTree()

JsonSyntaxTree::JsonSyntaxTree ( const std::string &  search_string)

Definition at line 29 of file JsonSyntaxTree.C.

29 : _search(search_string)
30{
31 // Registry holds a map with labels (ie MooseApp) as keys and a vector of RegistryEntry
32 // as values. We need the reverse map: given an action or object name then get the label.
33 auto & actmap = Registry::allActions();
34 for (auto & entry : actmap)
35 for (auto & act : entry.second)
36 _action_label_map[act->_classname] = std::make_pair(entry.first, act->_file);
37
38 auto & objmap = Registry::allObjects();
39 for (auto & entry : objmap)
40 for (auto & obj : entry.second)
41 _object_label_map[obj->name()] = std::make_pair(entry.first, obj->_file);
42}
for(PetscInt i=0;i< nvars;++i)
std::string _search
std::map< std::string, std::pair< std::string, std::string > > _action_label_map
std::map< std::string, std::pair< std::string, std::string > > _object_label_map
static const std::map< std::string, std::vector< std::shared_ptr< RegistryEntryBase > > > & allObjects()
Returns a per-label keyed map of all MooseObjects in the registry.
Definition Registry.h:250
static const std::map< std::string, std::vector< std::shared_ptr< RegistryEntryBase > > > & allActions()
Returns a per-label keyed map of all Actions in the registry.
Definition Registry.h:255
std::string name(const ElemQuality q)

◆ ~JsonSyntaxTree()

virtual JsonSyntaxTree::~JsonSyntaxTree ( )
inlinevirtual

Definition at line 26 of file JsonSyntaxTree.h.

26{}

Member Function Documentation

◆ addActionTask()

void JsonSyntaxTree::addActionTask ( const std::string &  path,
const std::string &  action,
const std::string &  task,
const FileLineInfo lineinfo 
)

Add a task to the tree.

Parameters
pathThe path of the action
actionName of the action
taskName of the task
lineinfoThe FileLineInfo where the action/task was registered

Definition at line 357 of file JsonSyntaxTree.C.

361{
362 nlohmann::json & json = getJson("", path, false);
363 if (lineinfo.isValid())
364 json[action]["tasks"][task_name]["file_info"][lineinfo.file()] = lineinfo.line();
365}
bool isValid() const
int line() const
std::string file() const
nlohmann::json & getJson(const std::string &parent, const std::string &path, bool is_type)

Referenced by Moose::Builder::buildJsonSyntaxTree().

◆ addGlobal()

void JsonSyntaxTree::addGlobal ( )

Add the global section to the output.

Definition at line 160 of file JsonSyntaxTree.C.

161{
162 // If they are doing a search they probably don't want to see this
163 if (_search.empty())
164 {
165 auto params = Moose::Builder::validParams();
166 nlohmann::json jparams;
167 setParams(&params, true, jparams);
168 _root["global"]["parameters"] = jparams;
169
170 // Just create a list of registered app names
171 nlohmann::json apps;
172 auto & factory = AppFactory::instance();
173 for (const auto & name_bi_pair : factory.registeredObjects())
174 apps.push_back(name_bi_pair.first);
175
176 _root["global"]["registered_apps"] = apps;
177 }
178}
static AppFactory & instance()
Get the instance of the AppFactory.
Definition AppFactory.C:20
nlohmann::json _root
size_t setParams(InputParameters *params, bool search_match, nlohmann::json &all_params)
static InputParameters validParams()
Parameters that are processed directly by the Parser and are valid anywhere in the input.
Definition Builder.C:121

Referenced by Moose::Builder::buildJsonSyntaxTree().

◆ addParameters()

bool JsonSyntaxTree::addParameters ( const std::string &  parent_path,
const std::string &  path,
bool  is_type,
const std::string &  action,
bool  is_action,
InputParameters params,
const FileLineInfo lineinfo,
const std::string &  classname 
)

Add parameters to the tree.

Parameters
parent_pathThe parent syntax path that the action belongs to
pathThe path of the action
is_typeWhether this belongs to a "<type>" or not
actionName of the action
is_actionWhether we are adding the parameter for an action (except Components)
paramsThe InputParameters to add to the tree
lineinfoThe FileLineInfo where the action/path was registered
classnamethe name of the class being added
Returns
Whether the parameters were added to the tree (ie if it matched the search string).

Definition at line 181 of file JsonSyntaxTree.C.

189{
190 if (action == "EmptyAction")
191 return false;
192
193 nlohmann::json all_params;
194 bool search_match = !_search.empty() && (MooseUtils::wildCardMatch(path, _search) ||
197 auto count = setParams(params, search_match, all_params);
198 if (!_search.empty() && count == 0)
199 // no parameters that matched the search string
200 return false;
201
202 nlohmann::json & json = getJson(parent, path, is_type);
203
204 if (is_action)
205 {
206 json[action]["parameters"] = all_params;
207 json[action]["description"] = params->getClassDescription();
208 json[action]["action_path"] = path;
209 auto label_pair = getActionLabel(action);
210 json[action]["label"] = label_pair.first;
211 json[action]["register_file"] = label_pair.second;
212 if (lineinfo.isValid())
213 json[action]["file_info"][lineinfo.file()] = lineinfo.line();
214 }
215 else if (params)
216 {
217 if (params->hasBase())
218 json["moose_base"] = params->getBase();
219
220 json["parameters"] = all_params;
221 json["syntax_path"] = path;
222 json["parent_syntax"] = parent;
223 json["description"] = params->getClassDescription();
224 // We do this for ActionComponents which are registered as Actions but
225 // dumped to the syntax tree as Objects
226 if (params->hasBase() && json["moose_base"] == "Action")
227 {
228 auto label_pair = getActionLabel(classname);
229 json["label"] = label_pair.first;
230 json["register_file"] = label_pair.second;
231 }
232 else
233 {
234 auto label_pair = getObjectLabel(path);
235 json["label"] = label_pair.first;
236 json["register_file"] = label_pair.second;
237 }
238 if (lineinfo.isValid())
239 {
240 json["file_info"][lineinfo.file()] = lineinfo.line();
241 if (!classname.empty())
242 json["class"] = classname;
243 }
244 }
245 return true;
246}
unsigned int count
Definition MortarUtils.C:53
std::string getClassDescription() const
Returns the class description.
const std::string & getBase() const
bool hasBase() const
std::pair< std::string, std::string > getObjectLabel(const std::string &obj) const
std::pair< std::string, std::string > getActionLabel(const std::string &action) const
bool wildCardMatch(std::string name, std::string search_string)
Definition MooseUtils.C:899

Referenced by Moose::Builder::buildJsonSyntaxTree().

◆ addSyntaxType()

void JsonSyntaxTree::addSyntaxType ( const std::string &  path,
const std::string  type 
)

Add an associated type to a block.

Parameters
pathPath of the block
typeType name to associate the block with

Definition at line 342 of file JsonSyntaxTree.C.

343{
345 {
346 auto & j = getJson(path);
347 j["associated_types"].push_back(type);
348 }
349 // If they are doing a search they probably don't want to see this
350 if (_search.empty())
351 {
352 _root["global"]["associated_types"][type].push_back(path);
353 }
354}

Referenced by Moose::Builder::buildJsonSyntaxTree().

◆ basicCppType()

std::string JsonSyntaxTree::basicCppType ( const std::string &  cpp_type)
static

Definition at line 376 of file JsonSyntaxTree.C.

377{
378 std::string s = "String";
379 if (cpp_type.find("std::vector") != std::string::npos ||
380 cpp_type.find("libMesh::VectorValue") != std::string::npos ||
381 cpp_type.find("libMesh::TensorValue") != std::string::npos ||
382 cpp_type.find("Eigen::Matrix") != std::string::npos)
383 {
384 // Get the template type and use its basic type for the array type
385 pcrecpp::RE r("^[^<]+<\\s*(.*)\\s*>$");
386 std::string t;
387 r.FullMatch(cpp_type, &t);
388
389 // Capture type just to the first comma for Eigen::Matrix<type,V,W,X,Y,Z>
390 if (cpp_type.find("Eigen::Matrix") != std::string::npos)
391 t = t.substr(0, t.find(","));
392
393 s = "Array:" + basicCppType(t);
394 }
395 else if (cpp_type.find("std::map") != std::string::npos ||
396 cpp_type.find("std::unordered_map") != std::string::npos)
397 {
398 // Get the template types
399 // Matches std::map< K , V [, ...] >
400 // and std::unordered_map< K , V [, ...] >
401 pcrecpp::RE r_map(
402 "^(?:std::)?(?:unordered_)?map\\s*<\\s*([^,>]+)\\s*,\\s*([^,>]+)(?:\\s*,.*)?\\s*>$");
403
404 // k and v hold the key and value types
405 std::string k, v;
406 r_map.FullMatch(cpp_type, &k, &v);
407
408 s = "Map:" + k + "->" + v;
409 }
410 else if (cpp_type.find("MultiMooseEnum") != std::string::npos ||
411 cpp_type.find("ExecFlagEnum") != std::string::npos ||
412 cpp_type.find("VectorPostprocessorName") != std::string::npos)
413 s = "Array:String";
414 else if (cpp_type.find("libMesh::Point") != std::string::npos)
415 s = "Array:Real";
416 else if (cpp_type == "int" || cpp_type == "unsigned int" || cpp_type == "short" ||
417 cpp_type == "unsigned short" || cpp_type == "char" || cpp_type == "unsigned char" ||
418 cpp_type == "long" || cpp_type == "unsigned long" || cpp_type == "long long" ||
419 cpp_type == "unsigned long long")
420 s = "Integer";
421 else if (cpp_type == "Real" || cpp_type == "double" || cpp_type == "float")
422 s = "Real";
423 else if (cpp_type == "bool")
424 s = "Boolean";
425
426 return s;
427}
static std::string basicCppType(const std::string &cpp_type)

Referenced by MooseServer::addParametersToList(), MooseServer::addValuesToList(), basicCppType(), and setParams().

◆ buildOptions()

std::string JsonSyntaxTree::buildOptions ( const std::iterator_traits< InputParameters::iterator >::value_type &  p,
bool &  out_of_range_allowed,
std::map< MooseEnumItem, std::string > &  docs 
)
protected

Definition at line 249 of file JsonSyntaxTree.C.

252{
253 libMesh::Parameters::Value * val = MooseUtils::get(p.second);
254
255 std::string options;
256 {
257 auto * enum_type = dynamic_cast<InputParameters::Parameter<MooseEnum> *>(val);
258 if (enum_type)
259 {
260 out_of_range_allowed = enum_type->get().isOutOfRangeAllowed();
261 options = enum_type->get().getRawNames();
262 docs = enum_type->get().getItemDocumentation();
263 }
264 }
265 {
266 auto * enum_type = dynamic_cast<InputParameters::Parameter<MultiMooseEnum> *>(val);
267 if (enum_type)
268 {
269 out_of_range_allowed = enum_type->get().isOutOfRangeAllowed();
270 options = enum_type->get().getRawNames();
271 docs = enum_type->get().getItemDocumentation();
272 }
273 }
274 {
275 auto * enum_type = dynamic_cast<InputParameters::Parameter<ExecFlagEnum> *>(val);
276 if (enum_type)
277 {
278 out_of_range_allowed = enum_type->get().isOutOfRangeAllowed();
279 options = enum_type->get().getRawNames();
280 docs = enum_type->get().getItemDocumentation();
281 }
282 }
283 {
284 auto * enum_type = dynamic_cast<InputParameters::Parameter<std::vector<MooseEnum>> *>(val);
285 if (enum_type)
286 {
287 out_of_range_allowed = (enum_type->get())[0].isOutOfRangeAllowed();
288 options = (enum_type->get())[0].getRawNames();
289 docs = enum_type->get()[0].getItemDocumentation();
290 }
291 }
292 {
293 auto * enum_type = dynamic_cast<InputParameters::Parameter<std::vector<MultiMooseEnum>> *>(val);
294 if (enum_type)
295 {
296 out_of_range_allowed = (enum_type->get())[0].isOutOfRangeAllowed();
297 options = (enum_type->get())[0].getRawNames();
298 docs = enum_type->get()[0].getItemDocumentation();
299 }
300 }
301 return options;
302}

Referenced by setParams().

◆ buildOutputString()

std::string JsonSyntaxTree::buildOutputString ( const std::iterator_traits< InputParameters::iterator >::value_type &  p)
staticprotected

Definition at line 305 of file JsonSyntaxTree.C.

307{
308 libMesh::Parameters::Value * val = MooseUtils::get(p.second);
309
310 // Account for Point
311 std::stringstream str;
312 InputParameters::Parameter<Point> * ptr0 = dynamic_cast<InputParameters::Parameter<Point> *>(val);
313
314 // Account for RealVectorValues
315 InputParameters::Parameter<RealVectorValue> * ptr1 =
316 dynamic_cast<InputParameters::Parameter<RealVectorValue> *>(val);
317
318 // Output the Point components
319 if (ptr0)
320 str << ptr0->get().operator()(0) << " " << ptr0->get().operator()(1) << " "
321 << ptr0->get().operator()(2);
322
323 // Output the RealVectorValue components
324 else if (ptr1)
325 str << ptr1->get().operator()(0) << " " << ptr1->get().operator()(1) << " "
326 << ptr1->get().operator()(2);
327
328 // General case, call the print operator
329 else
330 val->print(str);
331
332 // remove additional '\n' possibly generated in output (breaks JSON parsing)
333 std::string tmp_str = str.str();
334 for (auto & ch : tmp_str)
335 if (ch == '\n')
336 ch = ' ';
337
338 return tmp_str.substr(0, tmp_str.find("<RESIDUAL>"));
339}
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
virtual void print(std::ostream &) const=0

Referenced by MooseServer::addParametersToList(), and setParams().

◆ documentationCppType()

std::string JsonSyntaxTree::documentationCppType ( const std::string &  cpp_type)
static

Utilities for making sense of c++ types.

Definition at line 368 of file JsonSyntaxTree.C.

369{
370 auto s = cpp_type;
371 pcrecpp::RE("\\bdouble\\b").GlobalReplace("Real", &s);
372 return s;
373}

Referenced by setParams().

◆ getActionLabel()

std::pair< std::string, std::string > JsonSyntaxTree::getActionLabel ( const std::string &  action) const
protected

Definition at line 441 of file JsonSyntaxTree.C.

442{
443 auto it = _action_label_map.find(action);
444 if (it != _action_label_map.end())
445 return it->second;
446 else
447 return std::make_pair("", "");
448}

Referenced by addParameters().

◆ getJson() [1/2]

nlohmann::json & JsonSyntaxTree::getJson ( const std::string &  parent,
const std::string &  path,
bool  is_type 
)
protected

Definition at line 77 of file JsonSyntaxTree.C.

78{
79 if (parent.empty())
80 {
81 auto & j = getJson(path);
82 if (path.back() == '*' && !j.contains("subblock_types"))
83 j["subblock_types"] = nlohmann::json();
84 else if (path.back() != '*' && !j.contains("types"))
85 j["types"] = nlohmann::json();
86 return j["actions"];
87 }
88
89 auto & parent_json = getJson(parent);
90 auto paths = splitPath(path);
91 std::string key = "subblock_types";
92 if (is_type)
93 key = "types";
94 auto & val = parent_json[key][paths.back()];
95 return val;
96}
static std::vector< std::string > splitPath(const std::string &path)

Referenced by addActionTask(), addParameters(), addSyntaxType(), and getJson().

◆ getJson() [2/2]

nlohmann::json & JsonSyntaxTree::getJson ( const std::string &  path)
protected

Definition at line 57 of file JsonSyntaxTree.C.

58{
59 auto paths = splitPath(path);
60 mooseAssert(paths.size() > 0, "path is empty");
61 auto * next = &(_root["blocks"][paths[0]]);
62
63 for (auto pit = paths.begin() + 1; pit != paths.end(); ++pit)
64 {
65 if (*pit == "*")
66 // It has an action syntax as a parent
67 next = &(*next)["star"];
68 else if (*pit == "<type>")
69 next = &(*next)["types"];
70 else
71 next = &(*next)["subblocks"][*pit];
72 }
73 return *next;
74}

◆ getObjectLabel()

std::pair< std::string, std::string > JsonSyntaxTree::getObjectLabel ( const std::string &  obj) const
protected

Definition at line 430 of file JsonSyntaxTree.C.

431{
432 auto paths = splitPath(obj);
433 auto it = _object_label_map.find(paths.back());
434 if (it != _object_label_map.end())
435 return it->second;
436 else
437 return std::make_pair("", "");
438}

Referenced by addParameters().

◆ getRoot()

const nlohmann::json & JsonSyntaxTree::getRoot ( ) const
inline

Get the root of the tree.

Returns
The top level Json::Value holding the tree.

Definition at line 64 of file JsonSyntaxTree.h.

64{ return _root; }

Referenced by MooseApp::setupOptions().

◆ setParams()

size_t JsonSyntaxTree::setParams ( InputParameters params,
bool  search_match,
nlohmann::json &  all_params 
)
protected

Definition at line 99 of file JsonSyntaxTree.C.

100{
101 size_t count = 0;
102 for (auto & iter : *params)
103 {
104 // Make sure we want to see this parameter
105 bool param_match = !_search.empty() && MooseUtils::wildCardMatch(iter.first, _search);
106 if (params->isPrivate(iter.first) || (!_search.empty() && !search_match && !param_match))
107 continue;
108
109 ++count;
110 nlohmann::json param_json;
111
112 param_json["required"] = params->isParamRequired(iter.first);
113
114 // Only output default if it has one
115 if (params->isParamValid(iter.first))
116 param_json["default"] = buildOutputString(iter);
117 else if (params->hasDefaultCoupledValue(iter.first))
118 param_json["default"] = params->defaultCoupledValue(iter.first);
119
120 bool out_of_range_allowed = false;
121 std::map<MooseEnumItem, std::string> docs;
122 param_json["options"] = buildOptions(iter, out_of_range_allowed, docs);
123 if (!nlohmann::to_string(param_json["options"]).empty())
124 {
125 param_json["out_of_range_allowed"] = out_of_range_allowed;
126 if (!docs.empty())
127 {
128 nlohmann::json jdocs;
129 for (const auto & doc : docs)
130 jdocs[doc.first.name()] = doc.second;
131 param_json["option_docs"] = jdocs;
132 }
133 }
134 auto reserved_values = params->reservedValues(iter.first);
135 for (const auto & reserved : reserved_values)
136 param_json["reserved_values"].push_back(reserved);
137
138 std::string t = documentationCppType(MooseUtils::prettyCppType(params->type(iter.first)));
139 param_json["cpp_type"] = t;
140 param_json["basic_type"] = basicCppType(t);
141 param_json["group_name"] = params->getGroupName(iter.first);
142 param_json["name"] = iter.first;
143
144 std::string doc = params->getDocString(iter.first);
146 param_json["description"] = doc;
147
148 param_json["doc_unit"] = params->getDocUnit(iter.first);
149 param_json["doc_range"] =
150 params->isRangeChecked(iter.first) ? params->rangeCheckedFunction(iter.first) : "";
151
152 param_json["controllable"] = params->isControllable(iter.first);
153 param_json["deprecated"] = params->isParamDeprecated(iter.first);
154 all_params[iter.first] = param_json;
155 }
156 return count;
157}
bool isPrivate(const std::string &name) const
Returns a Boolean indicating whether the specified parameter is private or not.
std::string rangeCheckedFunction(const std::string &name) const
Return the range check function for any parameter (empty string if it is not range checked)
std::string getDocString(const std::string &name) const
Returns the documentation string for the specified parameter name.
std::string type(const std::string &name) const
Prints the type of the requested parameter by name.
std::string getDocUnit(const std::string &name) const
Returns the documentation unit string for the specified parameter name.
bool isParamRequired(const std::string &name) const
Returns a boolean indicating whether the specified parameter is required or not.
std::set< std::string > reservedValues(const std::string &name) const
Get a set of reserved parameter values.
bool hasDefaultCoupledValue(const std::string &coupling_name) const
Return whether or not the requested parameter has a default coupled value.
std::string getGroupName(const std::string &param_name) const
This method retrieves the group name for the passed parameter name if one exists.
Real defaultCoupledValue(const std::string &coupling_name, unsigned int i=0) const
Get the default value for an optionally coupled variable.
bool isParamDeprecated(const std::string &name) const
Returns True if the parameters is deprecated.
bool isControllable(const std::string &name) const
Returns a Boolean indicating whether the specified parameter is controllable.
bool isRangeChecked(const std::string &param_name) const
Return whether a parameter has a range check.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another,...
static std::string documentationCppType(const std::string &cpp_type)
Utilities for making sense of c++ types.
static std::string buildOutputString(const std::iterator_traits< InputParameters::iterator >::value_type &p)
std::string buildOptions(const std::iterator_traits< InputParameters::iterator >::value_type &p, bool &out_of_range_allowed, std::map< MooseEnumItem, std::string > &docs)
void escape(std::string &str)
Definition MooseUtils.C:218
std::string prettyCppType(const std::string &cpp_type)

Referenced by addGlobal(), and addParameters().

◆ splitPath()

std::vector< std::string > JsonSyntaxTree::splitPath ( const std::string &  path)
staticprotected

Definition at line 45 of file JsonSyntaxTree.C.

46{
47 std::string s;
48 std::istringstream f(path);
49 std::vector<std::string> paths;
50 while (std::getline(f, s, '/'))
51 if (s.size() > 0)
52 paths.push_back(s);
53 return paths;
54}

Referenced by getJson(), getJson(), and getObjectLabel().

Friends And Related Symbol Documentation

◆ MooseServer

friend class MooseServer
friend

Definition at line 109 of file JsonSyntaxTree.h.

Member Data Documentation

◆ _action_label_map

std::map<std::string, std::pair<std::string, std::string> > JsonSyntaxTree::_action_label_map
protected

Maps storing action/object name to the label and file location

Definition at line 104 of file JsonSyntaxTree.h.

Referenced by getActionLabel(), and JsonSyntaxTree().

◆ _object_label_map

std::map<std::string, std::pair<std::string, std::string> > JsonSyntaxTree::_object_label_map
protected

Definition at line 105 of file JsonSyntaxTree.h.

Referenced by getObjectLabel(), and JsonSyntaxTree().

◆ _root

nlohmann::json JsonSyntaxTree::_root
protected

Definition at line 99 of file JsonSyntaxTree.h.

Referenced by addGlobal(), addSyntaxType(), getJson(), and getRoot().

◆ _search

std::string JsonSyntaxTree::_search
protected

Definition at line 100 of file JsonSyntaxTree.h.

Referenced by addGlobal(), addParameters(), addSyntaxType(), and setParams().


The documentation for this class was generated from the following files: