17#ifndef _SDF_ELEMENT_HH_
18#define _SDF_ELEMENT_HH_
35#pragma warning(disable: 4251)
63 public std::enable_shared_from_this<Element>
90 public:
void SetName(
const std::string &_name);
94 public:
const std::string &
GetName()
const;
142 int _spacing,
int &_index)
const;
150 int _spacing,
int &_index)
const;
155 public: std::string
ToString(
const std::string &_prefix)
const;
165 const std::string &_type,
166 const std::string &_defaultvalue,
168 const std::string &_description=
"");
177 const std::string &_defaultValue,
bool _required,
178 const std::string &_description=
"");
231 public: boost::any
GetAny(
const std::string &_key =
"")
const;
239 public:
template<
typename T>
240 T
Get(
const std::string &_key =
"")
const;
248 public:
template<
typename T>
249 std::pair<T, bool>
Get(
const std::string &_key,
250 const T &_defaultValue)
const;
258 public:
template<
typename T>
259 bool Get(
const std::string &_key,
261 const T &_defaultValue)
const;
266 public:
template<
typename T>
267 bool Set(
const T &_value);
312 public: std::map<std::string, std::size_t>
382 private:
void ToString(
const std::string &_prefix,
383 std::ostringstream &_out)
const;
388 private:
void PrintValuesImpl(
const std::string &_prefix,
389 std::ostringstream &_out)
const;
399 private:
ParamPtr CreateParam(
const std::string &_key,
400 const std::string &_type,
401 const std::string &_defaultValue,
403 const std::string &_description=
"");
407 private: std::unique_ptr<ElementPrivate> dataPtr;
454 std::pair<T, bool> ret = this->
Get<T>(_key, result);
463 const T &_defaultValue)
const
465 std::pair<T, bool> ret = this->
Get<T>(_key, _defaultValue);
473 const T &_defaultValue)
const
475 std::pair<T, bool> result(_defaultValue,
true);
477 if (_key.empty() && this->dataPtr->value)
479 this->dataPtr->value->Get<T>(result.first);
481 else if (!_key.empty())
486 param->Get(result.first);
498 result.second =
false;
503 result.second =
false;
513 if (this->dataPtr->value)
515 this->dataPtr->value->Set(_value);
Definition Element.hh:413
std::string required
True if element is required.
Definition Element.hh:418
ElementPtr_V elements
Definition Element.hh:436
Param_V attributes
Definition Element.hh:430
std::string name
Element name.
Definition Element.hh:415
std::string referenceSDF
Name of reference sdf.
Definition Element.hh:445
std::string includeFilename
name of the include file that was used to create this element
Definition Element.hh:442
ElementPtr_V elementDescriptions
Definition Element.hh:439
ElementWeakPtr parent
Element's parent.
Definition Element.hh:427
bool copyChildren
True if element's children should be copied.
Definition Element.hh:424
std::string description
Element description.
Definition Element.hh:421
ParamPtr value
Definition Element.hh:433
SDF Element class.
Definition Element.hh:64
void SetRequired(const std::string &_req)
Set the requirement type.
void Reset()
Call reset on each element and element description before deleting all of them.
bool HasAttribute(const std::string &_key) const
Return true if an attribute exists.
ElementPtr GetFirstElement() const
Get the first child element.
ElementPtr GetParent() const
Get a pointer to this Element's parent.
void SetInclude(const std::string &_filename)
Set the include filename to the passed in filename.
void InsertElement(ElementPtr _elem)
Add an element object.
void SetDescription(const std::string &_desc)
Set a text description for the element.
bool HasElement(const std::string &_name) const
Return true if the named element exists.
void Copy(const ElementPtr _elem)
Copy values from an Element.
bool HasElementDescription(const std::string &_name) const
Return true if an element description exists.
void RemoveChild(ElementPtr _child)
Remove a child element.
virtual ~Element()
Destructor.
std::string ReferenceSDF() const
Get the name of the reference SDF element.
void SetName(const std::string &_name)
Set the name of the Element.
bool HasUniqueChildNames(const std::string &_type="") const
Checks whether any child elements of the specified element type have identical name attribute values ...
ElementPtr GetElement(const std::string &_name)
Return a pointer to the child element with the provided name.
const std::string & GetName() const
Get the Element's name.
std::map< std::string, std::size_t > CountNamedElements(const std::string &_type="") const
Count the number of child elements of the specified element type that have the same name attribute va...
ElementPtr AddElement(const std::string &_name)
Add a named element.
void PrintDocLeftPane(std::string &_html, int _spacing, int &_index) const
Helper function for SDF::PrintDoc.
void PrintDescription(const std::string &_prefix) const
Output Element's description to stdout.
void PrintValues(std::string _prefix) const
Output Element's values to stdout.
void AddAttribute(const std::string &_key, const std::string &_type, const std::string &_defaultvalue, bool _required, const std::string &_description="")
Add an attribute value.
void SetParent(const ElementPtr _parent)
Set the parent of this Element.
ParamPtr GetAttribute(unsigned int _index) const
Get an attribute using an index.
void AddValue(const std::string &_type, const std::string &_defaultValue, bool _required, const std::string &_description="")
Add a value to this Element.
std::string GetInclude() const
Get the include filename.
void AddElementDescription(ElementPtr _elem)
Add a new element description.
std::string ToString(const std::string &_prefix) const
Convert the element values to a string representation.
void SetReferenceSDF(const std::string &_value)
Set reference SDF element.
boost::any GetAny(const std::string &_key="") const
Get the element value/attribute as a boost::any.
void SetCopyChildren(bool _value)
Set whether this element should copy its child elements during parsing.
size_t GetElementDescriptionCount() const
Get the number of element descriptions.
ParamPtr GetValue() const
Get the param of the elements value return A Param pointer to the value of this element.
void ClearElements()
Remove all child elements.
ElementPtr GetNextElement(const std::string &_name="") const
Get the next sibling of this element.
ElementPtr GetElementDescription(unsigned int _index) const
Get an element description using an index.
std::set< std::string > GetElementTypeNames() const
Get set of child element type names.
void Update()
Call the Update() callback on each element, as well as the embedded Param.
std::string GetDescription() const
Get a text description of the element.
const std::string & GetRequired() const
Get the requirement string.
ElementPtr GetElementImpl(const std::string &_name) const
Get a pointer to the named element.
size_t GetAttributeCount() const
Get the number of attributes.
ElementPtr Clone() const
Create a copy of this Element.
void RemoveFromParent()
Remove this element from its parent.
ParamPtr GetAttribute(const std::string &_key) const
Get the param of an attribute.
bool GetCopyChildren() const
Return true if this Element's child elements should be copied during parsing.
bool GetAttributeSet(const std::string &_key) const
Return true if the attribute was set (i.e.
ElementPtr GetElementDescription(const std::string &_key) const
Get an element description using a key.
void PrintDocRightPane(std::string &_html, int _spacing, int &_index) const
Helper function for SDF::PrintDoc.
T Get(const std::string &_key="") const
Get the value of a key.
Definition Element.hh:450
bool Set(const T &_value)
Set the value of this element.
Definition Element.hh:511
namespace for Simulation Description Format parser
Definition Console.hh:36
std::vector< ElementPtr > ElementPtr_V
Definition Element.hh:55
std::vector< ParamPtr > Param_V
Definition Param.hh:64
std::shared_ptr< Element > ElementPtr
Definition Element.hh:47
std::shared_ptr< Param > ParamPtr
Definition Param.hh:60
std::weak_ptr< Element > ElementWeakPtr
Definition Element.hh:51
#define SDFORMAT_VISIBLE
Use to represent "symbol visible" if supported.
Definition system_util.hh:48