aGrUM 3.2.0
a C++ library for (probabilistic) graphical models
gum::prm::o3prm::O3Class Class Reference

The O3Class is part of the AST of the O3PRM language. More...

#include <agrum/PRM/o3prm/O3prm.h>

Collaboration diagram for gum::prm::o3prm::O3Class:
[legend]

Public Types

using O3LabelList = std::vector< O3Label >
using O3ParameterList = std::vector< O3Parameter >
using O3ReferenceSlotList = std::vector< O3ReferenceSlot >
using O3AttributeList = std::vector< std::unique_ptr< O3Attribute > >
using O3AggregateList = std::vector< O3Aggregate >

Public Member Functions

 O3Class ()
 O3Class (const O3Class &src)
 O3Class (O3Class &&src)
 ~O3Class ()
O3Class & operator= (const O3Class &src)
O3Class & operator= (O3Class &&src)
O3Position & position ()
const O3Position & position () const
O3Label & name ()
const O3Label & name () const
O3Label & superLabel ()
const O3Label & superLabel () const
O3LabelList & interfaces ()
const O3LabelList & interfaces () const
O3ParameterList & parameters ()
const O3ParameterList & parameters () const
O3ReferenceSlotList & referenceSlots ()
const O3ReferenceSlotList & referenceSlots () const
O3AttributeList & attributes ()
const O3AttributeList & attributes () const
O3AggregateList & aggregates ()
const O3AggregateList & aggregates () const

Private Attributes

O3Position _pos_
O3Label _name_
O3Label _superLabel_
std::unique_ptr< O3LabelList > _interfaces_
std::unique_ptr< O3ParameterList > _params_
std::unique_ptr< O3ReferenceSlotList > _refs_
std::unique_ptr< O3AttributeList > _attrs_
std::unique_ptr< O3AggregateList > _aggs_

Detailed Description

The O3Class is part of the AST of the O3PRM language.

Definition at line 642 of file O3prm.h.

Member Typedef Documentation

◆ O3AggregateList

Definition at line 648 of file O3prm.h.

◆ O3AttributeList

using gum::prm::o3prm::O3Class::O3AttributeList = std::vector< std::unique_ptr< O3Attribute > >

Definition at line 647 of file O3prm.h.

◆ O3LabelList

Definition at line 644 of file O3prm.h.

◆ O3ParameterList

Definition at line 645 of file O3prm.h.

◆ O3ReferenceSlotList

Definition at line 646 of file O3prm.h.

Constructor & Destructor Documentation

◆ O3Class() [1/3]

gum::prm::o3prm::O3Class::O3Class ( )

Definition at line 859 of file O3prm.cpp.

859 {
860 GUM_CONSTRUCTOR(O3Class);
861
862 auto i = new O3LabelList();
863 _interfaces_ = std::unique_ptr< O3LabelList >(i);
864
865 auto p = new O3ParameterList();
866 _params_ = std::unique_ptr< O3ParameterList >(p);
867
868 auto r = new O3ReferenceSlotList();
869 _refs_ = std::unique_ptr< O3ReferenceSlotList >(r);
870
871 auto e = new O3AttributeList();
872 _attrs_ = std::unique_ptr< O3AttributeList >(e);
873
874 auto a = new O3AggregateList();
875 _aggs_ = std::unique_ptr< O3AggregateList >(a);
876 }
std::vector< std::unique_ptr< O3Attribute > > O3AttributeList
Definition O3prm.h:647
std::unique_ptr< O3ParameterList > _params_
Definition O3prm.h:687
std::vector< O3Aggregate > O3AggregateList
Definition O3prm.h:648
std::vector< O3Label > O3LabelList
Definition O3prm.h:644
std::vector< O3Parameter > O3ParameterList
Definition O3prm.h:645
std::unique_ptr< O3ReferenceSlotList > _refs_
Definition O3prm.h:688
std::unique_ptr< O3AttributeList > _attrs_
Definition O3prm.h:689
std::unique_ptr< O3LabelList > _interfaces_
Definition O3prm.h:686
std::unique_ptr< O3AggregateList > _aggs_
Definition O3prm.h:690
std::vector< O3ReferenceSlot > O3ReferenceSlotList
Definition O3prm.h:646

References O3Class(), _aggs_, _attrs_, _interfaces_, _params_, and _refs_.

Referenced by O3Class(), O3Class(), O3Class(), ~O3Class(), operator=(), operator=(), and gum::prm::o3prm::O3PRM::operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ O3Class() [2/3]

gum::prm::o3prm::O3Class::O3Class ( const O3Class & src)

Definition at line 878 of file O3prm.cpp.

878 :
879 _pos_(src._pos_), _name_(src._name_), _superLabel_(src._superLabel_) {
880 GUM_CONS_CPY(O3Class);
881 auto i = new O3LabelList(src.interfaces());
882 _interfaces_ = std::unique_ptr< O3LabelList >(i);
883
884 auto p = new O3ParameterList(src.parameters());
885 _params_ = std::unique_ptr< O3ParameterList >(p);
886
887 auto r = new O3ReferenceSlotList(src.referenceSlots());
888 _refs_ = std::unique_ptr< O3ReferenceSlotList >(r);
889
890 auto e = new O3AttributeList();
891 _attrs_ = std::unique_ptr< O3AttributeList >(e);
892 for (const auto& elt: src.attributes()) {
893 _attrs_->push_back(elt->copy());
894 }
895
896 auto a = new O3AggregateList(src.aggregates());
897 _aggs_ = std::unique_ptr< O3AggregateList >(a);
898 }

References O3Class(), _aggs_, _attrs_, _interfaces_, _name_, _params_, _pos_, _refs_, _superLabel_, aggregates(), attributes(), interfaces(), parameters(), and referenceSlots().

Here is the call graph for this function:

◆ O3Class() [3/3]

gum::prm::o3prm::O3Class::O3Class ( O3Class && src)

Definition at line 900 of file O3prm.cpp.

900 :
901 _pos_(std::move(src._pos_)), _name_(std::move(src._name_)),
902 _superLabel_(std::move(src._superLabel_)), _interfaces_(std::move(src._interfaces_)),
903 _params_(std::move(src._params_)), _refs_(std::move(src._refs_)),
904 _attrs_(std::move(src._attrs_)), _aggs_(std::move(src._aggs_)) {
905 GUM_CONS_MOV(O3Class);
906 }

References O3Class(), _aggs_, _attrs_, _interfaces_, _name_, _params_, _pos_, _refs_, and _superLabel_.

Here is the call graph for this function:

◆ ~O3Class()

gum::prm::o3prm::O3Class::~O3Class ( )

Definition at line 908 of file O3prm.cpp.

908 {
909 GUM_DESTRUCTOR(O3Class);
910 ;
911 }

References O3Class().

Here is the call graph for this function:

Member Function Documentation

◆ aggregates() [1/2]

O3Class::O3AggregateList & gum::prm::o3prm::O3Class::aggregates ( )

Definition at line 980 of file O3prm.cpp.

980{ return *_aggs_; }

References _aggs_.

Referenced by O3Class(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_checkImplementation_(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_completeAggregates_(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_declareAggregates_(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::completeAttributes(), and operator=().

Here is the caller graph for this function:

◆ aggregates() [2/2]

const O3Class::O3AggregateList & gum::prm::o3prm::O3Class::aggregates ( ) const

Definition at line 982 of file O3prm.cpp.

982{ return *_aggs_; }

References _aggs_.

◆ attributes() [1/2]

O3Class::O3AttributeList & gum::prm::o3prm::O3Class::attributes ( )

Definition at line 976 of file O3prm.cpp.

976{ return *_attrs_; }

References _attrs_.

Referenced by O3Class(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_checkImplementation_(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_completeAttribute_(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_declareAttribute_(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::completeAttributes(), and operator=().

Here is the caller graph for this function:

◆ attributes() [2/2]

const O3Class::O3AttributeList & gum::prm::o3prm::O3Class::attributes ( ) const

Definition at line 978 of file O3prm.cpp.

978{ return *_attrs_; }

References _attrs_.

◆ interfaces() [1/2]

O3Class::O3LabelList & gum::prm::o3prm::O3Class::interfaces ( )

Definition at line 966 of file O3prm.cpp.

966{ return *_interfaces_; }

References _interfaces_.

Referenced by O3Class(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_checkImplementation_(), and operator=().

Here is the caller graph for this function:

◆ interfaces() [2/2]

const O3Class::O3LabelList & gum::prm::o3prm::O3Class::interfaces ( ) const

Definition at line 964 of file O3prm.cpp.

964{ return *_interfaces_; }

References _interfaces_.

◆ name() [1/2]

◆ name() [2/2]

const O3Label & gum::prm::o3prm::O3Class::name ( ) const

Definition at line 956 of file O3prm.cpp.

956{ return _name_; }

References _name_.

◆ operator=() [1/2]

O3Class & gum::prm::o3prm::O3Class::operator= ( const O3Class & src)

Definition at line 913 of file O3prm.cpp.

913 {
914 if (this == &src) { return *this; }
915 _pos_ = src._pos_;
916 _name_ = src._name_;
917 _superLabel_ = src._superLabel_;
918
919 auto i = new O3LabelList(src.interfaces());
920 _interfaces_ = std::unique_ptr< O3LabelList >(i);
921
922 auto p = new O3ParameterList(src.parameters());
923 _params_ = std::unique_ptr< O3ParameterList >(p);
924
925 auto r = new O3ReferenceSlotList(src.referenceSlots());
926 _refs_ = std::unique_ptr< O3ReferenceSlotList >(r);
927
928 auto e = new O3AttributeList();
929 _attrs_ = std::unique_ptr< O3AttributeList >(e);
930 for (const auto& elt: src.attributes()) {
931 _attrs_->push_back(elt->copy());
932 }
933
934 auto a = new O3AggregateList(src.aggregates());
935 _aggs_ = std::unique_ptr< O3AggregateList >(a);
936 return *this;
937 }

References O3Class(), _aggs_, _attrs_, _interfaces_, _name_, _params_, _pos_, _refs_, _superLabel_, aggregates(), attributes(), interfaces(), parameters(), and referenceSlots().

Here is the call graph for this function:

◆ operator=() [2/2]

O3Class & gum::prm::o3prm::O3Class::operator= ( O3Class && src)

Definition at line 939 of file O3prm.cpp.

939 {
940 if (this == &src) { return *this; }
941 _pos_ = std::move(src._pos_);
942 _name_ = std::move(src._name_);
943 _superLabel_ = std::move(src._superLabel_);
944 _interfaces_ = std::move(src._interfaces_);
945 _params_ = std::move(src._params_);
946 _refs_ = std::move(src._refs_);
947 _attrs_ = std::move(src._attrs_);
948 _aggs_ = std::move(src._aggs_);
949 return *this;
950 }

References O3Class(), _aggs_, _attrs_, _interfaces_, gum::prm::o3prm::O3PRM::_interfaces_, _name_, _params_, _pos_, _refs_, and _superLabel_.

Here is the call graph for this function:

◆ parameters() [1/2]

O3Class::O3ParameterList & gum::prm::o3prm::O3Class::parameters ( )

Definition at line 970 of file O3prm.cpp.

970{ return *_params_; }

References _params_.

Referenced by O3Class(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_addParameters_(), and operator=().

Here is the caller graph for this function:

◆ parameters() [2/2]

const O3Class::O3ParameterList & gum::prm::o3prm::O3Class::parameters ( ) const

Definition at line 968 of file O3prm.cpp.

968{ return *_params_; }

References _params_.

◆ position() [1/2]

O3Position & gum::prm::o3prm::O3Class::position ( )

Definition at line 954 of file O3prm.cpp.

954{ return _pos_; }

References _pos_.

◆ position() [2/2]

const O3Position & gum::prm::o3prm::O3Class::position ( ) const

Definition at line 952 of file O3prm.cpp.

952{ return _pos_; }

References _pos_.

◆ referenceSlots() [1/2]

O3Class::O3ReferenceSlotList & gum::prm::o3prm::O3Class::referenceSlots ( )

Definition at line 974 of file O3prm.cpp.

974{ return *_refs_; }

References _refs_.

Referenced by O3Class(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_addReferenceSlots_(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_checkImplementation_(), and operator=().

Here is the caller graph for this function:

◆ referenceSlots() [2/2]

const O3Class::O3ReferenceSlotList & gum::prm::o3prm::O3Class::referenceSlots ( ) const

Definition at line 972 of file O3prm.cpp.

972{ return *_refs_; }

References _refs_.

◆ superLabel() [1/2]

O3Label & gum::prm::o3prm::O3Class::superLabel ( )

Definition at line 962 of file O3prm.cpp.

962{ return _superLabel_; }

References _superLabel_.

Referenced by gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_checkAggTypeLegality_(), gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::_checkAttributeForDeclaration_(), and gum::prm::o3prm::O3ClassFactory< GUM_SCALAR >::completeAttributes().

Here is the caller graph for this function:

◆ superLabel() [2/2]

const O3Label & gum::prm::o3prm::O3Class::superLabel ( ) const

Definition at line 960 of file O3prm.cpp.

960{ return _superLabel_; }

References _superLabel_.

Member Data Documentation

◆ _aggs_

std::unique_ptr< O3AggregateList > gum::prm::o3prm::O3Class::_aggs_
private

Definition at line 690 of file O3prm.h.

Referenced by O3Class(), O3Class(), O3Class(), aggregates(), aggregates(), operator=(), and operator=().

◆ _attrs_

std::unique_ptr< O3AttributeList > gum::prm::o3prm::O3Class::_attrs_
private

Definition at line 689 of file O3prm.h.

Referenced by O3Class(), O3Class(), O3Class(), attributes(), attributes(), operator=(), and operator=().

◆ _interfaces_

std::unique_ptr< O3LabelList > gum::prm::o3prm::O3Class::_interfaces_
private

Definition at line 686 of file O3prm.h.

Referenced by O3Class(), O3Class(), O3Class(), interfaces(), interfaces(), operator=(), and operator=().

◆ _name_

O3Label gum::prm::o3prm::O3Class::_name_
private

Definition at line 684 of file O3prm.h.

Referenced by O3Class(), O3Class(), name(), name(), operator=(), and operator=().

◆ _params_

std::unique_ptr< O3ParameterList > gum::prm::o3prm::O3Class::_params_
private

Definition at line 687 of file O3prm.h.

Referenced by O3Class(), O3Class(), O3Class(), operator=(), operator=(), parameters(), and parameters().

◆ _pos_

O3Position gum::prm::o3prm::O3Class::_pos_
private

Definition at line 683 of file O3prm.h.

Referenced by O3Class(), O3Class(), operator=(), operator=(), position(), and position().

◆ _refs_

std::unique_ptr< O3ReferenceSlotList > gum::prm::o3prm::O3Class::_refs_
private

Definition at line 688 of file O3prm.h.

Referenced by O3Class(), O3Class(), O3Class(), operator=(), operator=(), referenceSlots(), and referenceSlots().

◆ _superLabel_

O3Label gum::prm::o3prm::O3Class::_superLabel_
private

Definition at line 685 of file O3prm.h.

Referenced by O3Class(), O3Class(), operator=(), operator=(), superLabel(), and superLabel().


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