aGrUM  0.16.0
O3InterfaceFactory.h
Go to the documentation of this file.
1 
31 #include <memory>
32 #include <string>
33 
34 #include <agrum/PRM/PRM.h>
35 #include <agrum/PRM/PRMFactory.h>
37 #include <agrum/PRM/o3prm/O3prm.h>
38 #include <agrum/PRM/o3prm/errors.h>
39 #include <agrum/core/hashTable.h>
40 #include <agrum/core/set.h>
41 
42 #ifndef GUM_PRM_O3PRM_O3INTERFACE_FACTORY_H
43 # define GUM_PRM_O3PRM_O3INTERFACE_FACTORY_H
44 
45 namespace gum {
46  namespace prm {
47  namespace o3prm {
48 
58  template < typename GUM_SCALAR >
60  public:
62  O3PRM& o3_prm,
64  ErrorsContainer& errors);
72 
73  void buildInterfaces();
74 
75  void buildElements();
76 
77  private:
82 
88  std::vector< O3Interface* > __o3Interface;
89 
90  bool __addInterface2Dag();
91 
92  bool __addArcs2Dag();
93 
95 
96  bool __checkO3Interfaces();
97 
99 
101 
103  O3InterfaceElement& elt);
104 
106  O3InterfaceElement& elt);
107 
109  };
110 
111  } // namespace o3prm
112  } // namespace prm
113 } // namespace gum
114 
115 // always include the implementation of the templates
117 
118 
119 # ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
121 # endif
122 
123 
124 #endif // GUM_PRM_O3PRM_O3INTERFACE_FACTORY_H
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
bool __checkReferenceOverloadLegality(O3Interface &i, O3InterfaceElement &elt)
bool __checkAttributeOverloadLegality(O3Interface &i, O3InterfaceElement &elt)
O3InterfaceFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
This class is used contain and manipulate gum::ParseError.
bool __checkOverloadLegality(O3Interface &i, O3InterfaceElement &elt)
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
O3InterfaceFactory< GUM_SCALAR > & operator=(const O3InterfaceFactory< GUM_SCALAR > &src)
HashTable< NodeId, O3Interface *> __nodeMap
O3NameSolver< GUM_SCALAR > * __solver
Bulds gum::prm:PRMInterface from gum::prm::o3prm::O3Interface.
Resolves names for the different O3PRM factories.
Definition: O3NameSolver.h:57
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
This class represents a Probabilistic Relational PRMSystem<GUM_SCALAR>.
Definition: PRM.h:66
HashTable< std::string, gum::NodeId > __nameMap
bool __checkCyclicReference(O3Interface &i, O3InterfaceElement &elt)
HashTable< std::string, O3Interface *> __interfaceMap
The O3InterfaceElement is part of the AST of the O3PRM language.
Definition: O3prm.h:323
The O3PRM is part of the AST of the O3PRM language.
Definition: O3prm.h:892
bool __checkInterfaceElement(O3Interface &i, O3InterfaceElement &elt)
HashTable< std::string, std::string > __eltName
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
The O3Interface is part of the AST of the O3PRM language.
Definition: O3prm.h:356
std::vector< O3Interface *> __o3Interface
Base class for dag.
Definition: DAG.h:102
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.