34 #ifndef _Wolframe_SERIALIZE_STRUCT_DESCRIPTION_BASE_HPP_INCLUDED
35 #define _Wolframe_SERIALIZE_STRUCT_DESCRIPTION_BASE_HPP_INCLUDED
63 typedef std::vector<std::pair<std::string,StructDescriptionBase> >
Map;
96 bool setAtomicValue(
void* obj, std::size_t idx,
const std::string& value)
const;
99 bool init(
void* obj)
const
129 Map::const_iterator
find(
const std::string& name)
const;
131 Map::const_iterator
find_cis(
const std::string& name)
const;
133 std::string
names(
const char* sep)
const;
144 m_elem.push_back( Map::value_type(name,dd));
188 if (
m_elem.empty())
throw std::logic_error(
"access of last element in empty structure");
189 return m_elem.back().second;
State stack for an initializer of a structure.
Definition: parseStack.hpp:80
Fetch fetch() const
Non intrusive serializer call (fetch the next element) function of this sructure. ...
Definition: structDescriptionBase.hpp:72
void(* Destructor)(void *obj)
Definition: structDescriptionBase.hpp:67
std::string names(const char *sep) const
Return the element names of this structure as string for error messages.
Atomic element type.
Definition: structDescriptionBase.hpp:58
ElementType type() const
Get the element kind (type of access) of this structure or atomic element.
Definition: structDescriptionBase.hpp:123
std::size_t m_nof_attributes
Definition: structDescriptionBase.hpp:198
ElementType
Type of a structure element.
Definition: structDescriptionBase.hpp:56
no explicit condition
Definition: structDescriptionBase.hpp:78
StructDescriptionBase & last()
Definition: structDescriptionBase.hpp:186
Base class for structure description used for introspection in serialization/deserialization.
Definition: structDescriptionBase.hpp:51
Map::const_iterator begin() const
Get the start iterator on the elements of this structure.
Definition: structDescriptionBase.hpp:136
ElementRequirement
Constraints definition of a structure element.
Definition: structDescriptionBase.hpp:76
std::size_t size() const
Get the allocation size of this structure in bytes.
Definition: structDescriptionBase.hpp:111
StructDescriptionBase()
Default constructor.
const char * typeName() const
Get the type name of this structure.
Definition: structDescriptionBase.hpp:171
Map::const_iterator end() const
Get the end iterator on the elements of this structure.
Definition: structDescriptionBase.hpp:138
static const serialize::StructDescriptionBase * getStructDescription()
std::size_t m_ofs
Definition: structDescriptionBase.hpp:196
Parse m_parse
Definition: structDescriptionBase.hpp:201
bool init(void *obj) const
Initialize the structure referenced with 'obj'.
Definition: structDescriptionBase.hpp:99
void requirement(ElementRequirement requirement_)
Set element occurrence requirement.
Definition: structDescriptionBase.hpp:183
bool setAtomicValue(void *obj, std::size_t idx, const std::string &value) const
Initializes an atomic element in a structure.
bool(* Parse)(langbind::TypedInputFilter &flt, Context &ctx, ParseStateStack &stk)
Definition: structDescriptionBase.hpp:64
Defines the parsing stack for serialization of objects.
ElementRequirement m_requirement
Definition: structDescriptionBase.hpp:203
Parse parse() const
Non intrusive parser call function of this sructure.
Definition: structDescriptionBase.hpp:70
const char * m_typename
Definition: structDescriptionBase.hpp:195
std::size_t m_size
Definition: structDescriptionBase.hpp:197
Map::const_iterator find(const std::string &name) const
Find an element in this structure by name.
ElementType m_type
Definition: structDescriptionBase.hpp:200
std::vector< std::pair< std::string, StructDescriptionBase > > Map
Definition: structDescriptionBase.hpp:63
void defineEndOfAttributes()
Define the number of attributes of a struct.
Definition: structDescriptionBase.hpp:158
std::size_t ofs() const
Get the offset of this structure inside the holding parent structure.
Definition: structDescriptionBase.hpp:117
Array of structures or atomic values.
Definition: structDescriptionBase.hpp:60
bool(* Constructor)(void *obj)
Definition: structDescriptionBase.hpp:66
Defines the data structure holding the global serialization state variables (without the stack) ...
Defines the parsing stack for deserialization.
element is always mandatory, even if structure is filled and validated in "relaxed" mode ...
Definition: structDescriptionBase.hpp:79
Map::const_iterator find_cis(const std::string &name) const
Case insensitive find an element in this structure by name.
bool mandatory() const
Find out if the element in the structure is mandatory.
Definition: structDescriptionBase.hpp:178
std::vector< SerializeState > SerializeStateStack
State stack for an iterator on a structure (serializer)
Definition: serializeStack.hpp:79
Constructor m_constructor
Definition: structDescriptionBase.hpp:193
void define(const std::string &name, const StructDescriptionBase &dd)
Define an element of this structure.
Definition: structDescriptionBase.hpp:142
Structure with fixed number of named elements.
Definition: structDescriptionBase.hpp:59
Destructor m_destructor
Definition: structDescriptionBase.hpp:194
element is always optional, even if structure is filled and validated in "strict" mode ...
Definition: structDescriptionBase.hpp:80
bool(* Fetch)(Context &ctx, SerializeStateStack &stk)
Definition: structDescriptionBase.hpp:65
Fetch m_fetch
Definition: structDescriptionBase.hpp:202
Typed interface for input/output filter.
bool optional() const
Find out if the element in the structure is optional.
Definition: structDescriptionBase.hpp:181
Global state variables of a running serialization/deserialization procedure (without the stack) ...
Definition: mapContext.hpp:46
std::size_t nof_elements() const
Get the number of elements in the structure or array.
Definition: structDescriptionBase.hpp:165
Map m_elem
Definition: structDescriptionBase.hpp:199
std::size_t nof_attributes() const
Get the number of attributes of a struct.
Definition: structDescriptionBase.hpp:150
Class representing an empty structure.
Definition: structDescriptionBase.hpp:208
void done(void *obj) const
Destroy the structure referenced with 'obj'.
Definition: structDescriptionBase.hpp:105