58 if (
this == &src) {
return *
this; }
66 if (
this == &src) {
return *
this; }
67 __file = std::move(src.__file);
68 __line = std::move(src.__line);
102 if (
this == &src) {
return *
this; }
109 if (
this == &src) {
return *
this; }
110 __pos = std::move(src.__pos);
111 __value = std::move(src.__value);
141 if (
this == &src) {
return *
this; }
148 if (
this == &src) {
return *
this; }
149 __pos = std::move(src.__pos);
150 __value = std::move(src.__value);
184 if (
this == &src) {
return *
this; }
191 if (
this == &src) {
return *
this; }
192 __pos = std::move(src.__pos);
223 if (
this == &src) {
return *
this; }
230 if (
this == &src) {
return *
this; }
231 __pos = std::move(src.__pos);
232 __label = std::move(src.__label);
261 if (
this == &src) {
return *
this; }
271 if (
this == &src) {
return *
this; }
272 __pos = std::move(src.__pos);
273 __name = std::move(src.__name);
313 if (
this == &src) {
return *
this; }
323 if (
this == &src) {
return *
this; }
324 __pos = std::move(src.__pos);
325 __name = std::move(src.__name);
326 __start = std::move(src.__start);
327 __end = std::move(src.__end);
365 if (
this == &src) {
return *
this; }
375 if (
this == &src) {
return *
this; }
377 __pos = std::move(src.__pos);
378 __name = std::move(src.__name);
397 GUM_CONSTRUCTOR(
O3PRM);
405 auto boolean = std::unique_ptr< O3Type >(
new O3Type());
406 boolean->name() = std::move(
name);
407 boolean->labels() = std::move(labels);
408 __types.push_back(std::move(
boolean));
413 for (
const auto& t : src.
__types) {
414 __types.emplace_back(
new O3Type(*t));
417 __int_types.emplace_back(
new O3IntType(*t));
420 __real_types.emplace_back(
new O3RealType(*t));
426 __classes.emplace_back(
new O3Class(*c));
429 __systems.emplace_back(
new O3System(*s));
432 __imports.emplace_back(
new O3Import(*i));
437 __types(
std::move(src.__types)), __int_types(
std::move(src.__int_types)),
438 __real_types(
std::move(src.__real_types)),
439 __interfaces(
std::move(src.__interfaces)),
440 __classes(
std::move(src.__classes)), __systems(
std::move(src.__systems)),
441 __imports(
std::move(src.__imports)) {
448 if (
this == &src) {
return *
this; }
449 for (
const auto& t : src.
__types) {
474 if (
this == &src) {
return *
this; }
475 __types = std::move(src.__types);
542 if (
this == &src) {
return *
this; }
550 if (
this == &src) {
return *
this; }
551 __type = std::move(src.__type);
552 __name = std::move(src.__name);
574 __elts = std::unique_ptr< O3InterfaceElementList >(copy);
587 if (
this == &src) {
return *
this; }
592 __elts = std::unique_ptr< O3InterfaceElementList >(copy);
597 if (
this == &src) {
return *
this; }
598 __pos = std::move(src.__pos);
599 __name = std::move(src.__name);
601 __elts = std::move(src.__elts);
627 __name(name), __parents(parents) {
645 if (
this == &src) {
return *
this; }
653 if (
this == &src) {
return *
this; }
654 __type = std::move(src.__type);
655 __name = std::move(src.__name);
699 if (
this == &src) {
return *
this; }
707 if (
this == &src) {
return *
this; }
719 return std::unique_ptr< O3Attribute >(
copy);
749 if (
this == &src) {
return *
this; }
757 if (
this == &src) {
return *
this; }
760 __rules = std::move(src.__rules);
769 return std::unique_ptr< O3Attribute >(
copy);
776 __interfaces = std::unique_ptr< O3LabelList >(i);
779 __params = std::unique_ptr< O3ParameterList >(p);
782 __refs = std::unique_ptr< O3ReferenceSlotList >(r);
785 __attrs = std::unique_ptr< O3AttributeList >(e);
788 __aggs = std::unique_ptr< O3AggregateList >(a);
792 __pos(src.__pos),
__name(src.
__name), __superLabel(src.__superLabel) {
798 __params = std::unique_ptr< O3ParameterList >(p);
801 __refs = std::unique_ptr< O3ReferenceSlotList >(r);
804 __attrs = std::unique_ptr< O3AttributeList >(e);
806 __attrs->push_back(elt->copy());
810 __aggs = std::unique_ptr< O3AggregateList >(a);
825 if (
this == &src) {
return *
this; }
834 __params = std::unique_ptr< O3ParameterList >(p);
837 __refs = std::unique_ptr< O3ReferenceSlotList >(r);
840 __attrs = std::unique_ptr< O3AttributeList >(e);
842 __attrs->push_back(elt->copy());
846 __aggs = std::unique_ptr< O3AggregateList >(a);
851 if (
this == &src) {
return *
this; }
852 __pos = std::move(src.__pos);
853 __name = std::move(src.__name);
857 __refs = std::move(src.__refs);
858 __attrs = std::move(src.__attrs);
859 __aggs = std::move(src.__aggs);
934 if (
this == &src) {
return *
this; }
943 if (
this == &src) {
return *
this; }
944 __type = std::move(src.__type);
945 __pos = std::move(src.__pos);
946 __name = std::move(src.__name);
947 __value = std::move(src.__value);
969 __name(name), __isArray(isArray) {
987 if (
this == &src) {
return *
this; }
995 if (
this == &src) {
return *
this; }
996 __type = std::move(src.__type);
997 __name = std::move(src.__name);
1012 __variableType(), __aggregateType(),
__name(), __parents(),
1035 if (
this == &src) {
return *
this; }
1045 if (
this == &src) {
return *
this; }
1048 __name = std::move(src.__name);
1081 __leftInstance(src.__leftInstance), __leftIndex(src.__leftIndex),
1082 __leftReference(src.__leftReference),
1083 __rightInstance(src.__rightInstance), __rightIndex(src.__rightIndex) {
1099 if (
this == &src) {
return *
this; }
1109 if (
this == &src) {
return *
this; }
1163 if (
this == &src) {
return *
this; }
1173 if (
this == &src) {
return *
this; }
1204 __type(src.__type), __name(src.__name), __size(src.__size),
1205 __parameters(src.__parameters) {
1219 if (
this == &src) {
return *
this; }
1228 if (
this == &src) {
return *
this; }
1229 __type = std::move(src.__type);
1230 __name = std::move(src.__name);
1231 __size = std::move(src.__size);
1260 __assigments(src.__assigments), __increments(src.__increments) {
1274 if (
this == &src) {
return *
this; }
1283 if (
this == &src) {
return *
this; }
1284 __name = std::move(src.__name);
1339 if (
this == &src) {
return *
this; }
1348 if (
this == &src) {
return *
this; }
1349 __name = std::move(src.__name);
1350 __value = std::move(src.__value);
1380 if (
this == &src) {
return *
this; }
1386 if (
this == &src) {
return *
this; }
1387 __import = std::move(src.__import);
std::vector< std::unique_ptr< O3RealType > > O3RealTypeList
virtual O3RuleCPT & operator=(const O3RuleCPT &src)
O3ReferenceSlot & operator=(const O3ReferenceSlot &src)
std::vector< O3ReferenceSlot > O3ReferenceSlotList
O3IncrementList & increments()
virtual O3LabelList & parents()
O3Position & operator=(const O3Position &src)
std::unique_ptr< O3ParameterList > __params
std::vector< O3InstanceParameter > O3InstanceParameterList
O3IncrementList __increments
The O3Increment is part of the AST of the O3PRM language.
virtual O3RuleList & rules()
std::vector< O3Increment > O3IncrementList
The O3InstanceParameter is part of the AST of the O3PRM language.
O3Label & leftReference()
O3Increment & operator=(const O3Increment &src)
The O3Parameter is part of the AST of the O3PRM language.
std::vector< O3Label > O3LabelList
O3PRM & operator=(const O3PRM &src)
The O3IntType is part of the AST of the O3PRM language.
O3ReferenceSlotList & referenceSlots()
std::unique_ptr< O3ReferenceSlotList > __refs
O3RealTypeList & real_types()
O3Interface & operator=(const O3Interface &src)
std::vector< std::unique_ptr< O3Attribute > > O3AttributeList
std::unique_ptr< O3LabelList > __interfaces
std::vector< std::unique_ptr< O3Import > > O3ImportList
The O3Aggregate is part of the AST of the O3PRM language.
O3AggregateList & aggregates()
std::ostream & operator<<(std::ostream &o, const O3Label &src)
std::vector< std::unique_ptr< O3IntType > > O3IntTypeList
The O3RealType is part of the AST of the O3PRM language.
std::unique_ptr< O3AttributeList > __attrs
O3InstanceParameterList & parameters()
std::vector< O3Label > O3LabelList
The O3Type is part of the AST of the O3PRM language.
O3Label & rightInstance()
O3RealType & operator=(const O3RealType &src)
O3InstanceList & instances()
O3Assignment & operator=(const O3Assignment &src)
The O3Label is part of the AST of the O3PRM language.
The O3Attribute is part of the AST of the O3PRM language.
virtual O3FormulaList & values()
std::unique_ptr< O3FormulaList > __values
gum is the global namespace for all aGrUM entities
O3RealTypeList __real_types
The O3Import is part of the AST of the O3PRM language.
O3LabelList & parameters()
O3ParameterList & parameters()
std::vector< O3Label > O3LabelList
virtual std::unique_ptr< O3Attribute > copy() const
virtual O3Attribute & operator=(const O3Attribute &src)
std::vector< O3Formula > O3FormulaList
O3IntTypeList __int_types
O3Parameter & operator=(const O3Parameter &src)
std::vector< std::unique_ptr< O3Interface > > O3InterfaceList
The O3RuleCPT is part of the AST of the O3PRM language.
std::vector< O3Float > & values()
The O3Position is part of the AST of the O3PRM language.
std::unique_ptr< O3AggregateList > __aggs
std::vector< O3Float > __values
std::unique_ptr< O3RuleList > __rules
std::vector< std::unique_ptr< O3Class > > O3ClassList
The O3Class is part of the AST of the O3PRM language.
std::vector< O3Rule > O3RuleList
virtual O3RawCPT & operator=(const O3RawCPT &src)
O3Integer & operator=(const O3Integer &src)
The O3Instance is part of the AST of the O3PRM language.
O3IntType & operator=(const O3IntType &src)
std::unique_ptr< O3InterfaceElementList > __elts
The O3ReferenceSlot is part of the AST of the O3PRM language.
std::vector< LabelPair > LabelMap
O3AssignmentList & assignments()
O3IntTypeList & int_types()
O3InstanceParameterList __parameters
O3Label & rightInstance()
O3Instance & operator=(const O3Instance &src)
std::vector< O3Aggregate > O3AggregateList
std::vector< O3Parameter > O3ParameterList
O3Aggregate & operator=(const O3Aggregate &src)
std::pair< O3Label, O3Label > LabelPair
The O3System is part of the AST of the O3PRM language.
std::vector< std::unique_ptr< O3Type > > O3TypeList
O3AttributeList & attributes()
virtual std::unique_ptr< O3Attribute > copy() const
O3InterfaceList __interfaces
O3InterfaceList & interfaces()
Headers for the AST of the O3PRM language.
O3InterfaceElementList & elements()
The O3Float is part of the AST of the O3PRM language.
The O3RawCPT is part of the AST of the O3PRM language.
std::vector< O3Label > O3LabelList
O3InterfaceElement & operator=(const O3InterfaceElement &src)
O3Import & operator=(const O3Import &src)
The O3Assignment is part of the AST of the O3PRM language.
O3Label & aggregateType()
std::vector< O3InterfaceElement > O3InterfaceElementList
O3LabelList & interfaces()
O3Float & operator=(const O3Float &src)
The O3Integer is part of the AST of the O3PRM language.
std::vector< O3Instance > O3InstanceList
The O3InterfaceElement is part of the AST of the O3PRM language.
The O3PRM is part of the AST of the O3PRM language.
O3Label & operator=(const O3Label &src)
O3Label & leftReference()
O3Type & operator=(const O3Type &src)
O3InstanceList __instances
O3Class & operator=(const O3Class &src)
The O3Interface is part of the AST of the O3PRM language.
O3AssignmentList __assigments
std::vector< std::unique_ptr< O3System > > O3SystemList
std::vector< O3Assignment > O3AssignmentList
O3InstanceParameter & operator=(const O3InstanceParameter &src)
O3System & operator=(const O3System &src)