34 #include <agrum/agrum.h> 35 #include <agrum/tools/core/hashTable.h> 36 #include <agrum/tools/core/math/formula.h> 38 #ifndef GUM_PRM_O3PRM_PRM_H 39 # define GUM_PRM_O3PRM_PRM_H 55 O3Position(
const std::string& filename,
int line,
int column);
64 const std::string&
file()
const;
186 std::string&
label();
187 const std::string&
label()
const;
194 std::ostream& operator<<(std::ostream& o,
const O3Label& src);
515 const O3Attribute::O3LabelList& parents,
516 const O3FormulaList& values);
550 const O3Attribute::O3LabelList& parents,
std::unique_ptr< O3AttributeList > _attrs_
O3ReferenceSlot(const O3Label &type, const O3Label &name, bool isArray)
virtual O3RuleCPT & operator=(const O3RuleCPT &src)
O3RealType(O3RealType &&src)
std::unique_ptr< O3RuleList > _rules_
virtual O3RuleCPT & operator=(O3RuleCPT &&src)
O3ReferenceSlot & operator=(const O3ReferenceSlot &src)
O3IncrementList & increments()
virtual O3LabelList & parents()
const O3Integer & leftIndex() const
const O3IntTypeList & int_types() const
const O3Float & value() const
virtual std::unique_ptr< O3Attribute > copy() const =0
const O3Label & superLabel() const
const bool & deprecated() const
O3ReferenceSlot(O3ReferenceSlot &&src)
virtual O3Attribute & operator=(O3Attribute &&src)
O3Position & operator=(const O3Position &src)
O3IntType(O3IntType &&src)
const O3Label & type() const
O3Label(const O3Position &pos, const std::string &label)
The O3Increment is part of the AST of the O3PRM language.
O3InstanceParameter & operator=(O3InstanceParameter &&src)
O3Attribute(const O3Attribute &src)
const O3Label & leftInstance() const
virtual const O3FormulaList & values() const
virtual O3RuleList & rules()
const O3InterfaceList & interfaces() const
O3IntTypeList _int_types_
The O3InstanceParameter is part of the AST of the O3PRM language.
const O3Integer & size() const
O3Label & leftReference()
const O3Label & name() const
O3Increment & operator=(const O3Increment &src)
O3Increment(O3Increment &&src)
The O3Parameter is part of the AST of the O3PRM language.
virtual const O3LabelList & parents() const
O3InterfaceElement(O3InterfaceElement &&src)
O3PRM & operator=(const O3PRM &src)
The O3IntType is part of the AST of the O3PRM language.
const O3Label & name() const
O3RuleCPT(const O3RuleCPT &src)
O3ReferenceSlotList & referenceSlots()
O3RawCPT(const O3RawCPT &src)
O3Type(const O3Type &src)
const O3Position & position() const
const O3Position & position() const
INLINE void emplace(Args &&... args)
O3RealType & operator=(O3RealType &&src)
O3RealTypeList & real_types()
O3Interface & operator=(const O3Interface &src)
O3Parameter & operator=(O3Parameter &&src)
const O3Integer & start() const
The O3Aggregate is part of the AST of the O3PRM language.
const O3Label & leftInstance() const
const std::string & label() const
const O3Position & position() const
const LabelMap & labels() const
O3Position(O3Position &&src)
O3ReferenceSlot(const O3ReferenceSlot &src)
const O3Label & variableType() const
O3AggregateList & aggregates()
const O3Position & position() const
const O3LabelList & parameters() const
const std::string & file() const
const O3TypeList & types() const
O3Instance(const O3Instance &src)
const O3Label & type() const
The O3RealType is part of the AST of the O3PRM language.
const O3Position & position() const
O3InstanceParameterList & parameters()
const O3InstanceParameterList & parameters() const
const O3Label & name() const
O3Label(const O3Label &src)
The O3Type is part of the AST of the O3PRM language.
const O3RealTypeList & real_types() const
O3Label & rightInstance()
O3InterfaceElement & operator=(O3InterfaceElement &&src)
O3RealType & operator=(const O3RealType &src)
O3InstanceList & instances()
O3Parameter(const O3Position &pos, const O3Label &name, const O3Float &value)
O3Assignment & operator=(const O3Assignment &src)
const O3ImportList & imports() const
O3InterfaceList _interfaces_
O3Position(const std::string &filename, int line, int column)
The O3Label is part of the AST of the O3PRM language.
The O3Attribute is part of the AST of the O3PRM language.
std::unique_ptr< O3InterfaceElementList > _elts_
O3PRM & operator=(O3PRM &&src)
O3AssignmentList _assigments_
virtual O3FormulaList & values()
const O3Label & name() const
O3Attribute(const O3Label &type, const O3Label &name, const O3LabelList &parents)
O3Instance(O3Instance &&src)
const O3Label & rightInstance() const
The O3Import is part of the AST of the O3PRM language.
const O3LabelList & parents() const
const O3Label & superLabel() const
O3LabelList & parameters()
O3ParameterList & parameters()
const O3InterfaceElementList & elements() const
const O3Label & name() const
virtual const O3RuleList & rules() const
const O3ParameterList & parameters() const
const std::vector< O3Float > & values() const
O3Aggregate & operator=(O3Aggregate &&src)
O3Integer(const O3Integer &src)
O3RuleCPT(O3RuleCPT &&src)
virtual std::unique_ptr< O3Attribute > copy() const
virtual O3Attribute & operator=(const O3Attribute &src)
O3Parameter(O3Parameter &&src)
O3Parameter & operator=(const O3Parameter &src)
The O3RuleCPT is part of the AST of the O3PRM language.
const O3Position & position() const
const O3Label & leftReference() const
O3Assignment(const O3Assignment &src)
std::vector< O3Float > & values()
const O3Position & position() const
The O3Position is part of the AST of the O3PRM language.
O3InstanceParameter(const O3InstanceParameter &src)
O3Float(const O3Position &pos, float value)
std::vector< O3Float > _values_
const O3Integer & leftIndex() const
std::unique_ptr< O3ReferenceSlotList > _refs_
The O3Class is part of the AST of the O3PRM language.
const bool & deprecated() const
const O3Label & import() const
std::unique_ptr< O3AggregateList > _aggs_
const O3AttributeList & attributes() const
virtual O3RawCPT & operator=(const O3RawCPT &src)
O3Integer & operator=(const O3Integer &src)
O3Integer & operator=(O3Integer &&src)
The O3Instance is part of the AST of the O3PRM language.
O3IntType & operator=(const O3IntType &src)
O3InterfaceElement(const O3Label &type, const O3Label &name, bool isArray)
O3Position & operator=(O3Position &&src)
const O3ReferenceSlotList & referenceSlots() const
O3Parameter(const O3Parameter &src)
virtual O3RawCPT & operator=(O3RawCPT &&src)
The O3ReferenceSlot is part of the AST of the O3PRM language.
const O3ClassList & classes() const
const O3Integer & rightIndex() const
O3Interface(O3Interface &&src)
const O3Label & aggregateType() const
O3AssignmentList & assignments()
O3Integer(O3Integer &&src)
O3IntTypeList & int_types()
O3Increment(const O3Increment &src)
O3Assignment(O3Assignment &&src)
O3Label & rightInstance()
ParamScopeData(const std::string &s, const PRMReferenceSlot< GUM_SCALAR > &ref, Idx d)
O3Instance & operator=(const O3Instance &src)
O3Aggregate & operator=(const O3Aggregate &src)
std::unique_ptr< O3LabelList > _interfaces_
The O3System is part of the AST of the O3PRM language.
O3AttributeList & attributes()
std::unique_ptr< O3FormulaList > _values_
virtual std::unique_ptr< O3Attribute > copy() const
const O3Position & position() const
O3Label & operator=(O3Label &&src)
const O3InstanceList & instances() const
O3Import(const O3Import &src)
O3InstanceParameterList _parameters_
O3RealType(const O3RealType &src)
O3InterfaceList & interfaces()
virtual const O3Label & type() const
const O3AssignmentList & assignments() const
const bool & deprecated() const
const O3Label & name() const
O3InterfaceElement(const O3InterfaceElement &src)
O3InterfaceElementList & elements()
The O3Float is part of the AST of the O3PRM language.
The O3RawCPT is part of the AST of the O3PRM language.
O3Import & operator=(O3Import &&src)
const O3LabelList & interfaces() const
O3Increment & operator=(O3Increment &&src)
O3RuleCPT(const O3Label &type, const O3Label &name, const O3Attribute::O3LabelList &parents, O3RuleList &&rules)
O3Interface & operator=(O3Interface &&src)
O3InterfaceElement & operator=(const O3InterfaceElement &src)
const O3Label & superLabel() const
O3Import & operator=(const O3Import &src)
O3Parameter(const O3Position &pos, const O3Label &name, const O3Integer &value)
The O3Assignment is part of the AST of the O3PRM language.
const O3Float & value() const
O3Label & aggregateType()
O3Interface(const O3Interface &src)
std::unique_ptr< O3ParameterList > _params_
O3IntType(const O3IntType &src)
const O3Label & name() const
const O3Position & position() const
O3Class & operator=(O3Class &&src)
O3Assignment & operator=(O3Assignment &&src)
O3LabelList & interfaces()
const O3IncrementList & increments() const
O3Integer(const O3Position &pos, int value)
O3Aggregate(const O3Aggregate &src)
O3IncrementList _increments_
const O3Label & leftReference() const
O3Float & operator=(const O3Float &src)
O3Float(const O3Float &src)
O3System(const O3System &src)
The O3Integer is part of the AST of the O3PRM language.
O3IntType & operator=(O3IntType &&src)
O3ReferenceSlot & operator=(O3ReferenceSlot &&src)
The O3InterfaceElement is part of the AST of the O3PRM language.
O3Aggregate(O3Aggregate &&src)
const O3Integer & end() const
const O3Label & name() const
The O3PRM is part of the AST of the O3PRM language.
O3Class(const O3Class &src)
const O3Label & name() const
O3Attribute(O3Attribute &&src)
O3Label & operator=(const O3Label &src)
O3Type & operator=(O3Type &&src)
O3Label & leftReference()
O3InstanceList _instances_
const O3Integer & rightIndex() const
O3RealTypeList _real_types_
O3RawCPT(const O3Label &type, const O3Label &name, const O3Attribute::O3LabelList &parents, const O3FormulaList &values)
const O3Label & rightInstance() const
O3Type & operator=(const O3Type &src)
const O3Label & name() const
const O3Label & name() const
O3Class & operator=(const O3Class &src)
const O3AggregateList & aggregates() const
The O3Interface is part of the AST of the O3PRM language.
O3System & operator=(O3System &&src)
O3InstanceParameter(O3InstanceParameter &&src)
O3Instance & operator=(O3Instance &&src)
O3Position(const O3Position &src)
virtual const O3Label & name() const
const O3Label & type() const
const O3Label & name() const
O3InstanceParameter & operator=(const O3InstanceParameter &src)
const O3SystemList & systems() const
O3Float & operator=(O3Float &&src)
O3System & operator=(const O3System &src)