34 #include <agrum/PRM/PRM.h> 35 #include <agrum/PRM/PRMFactory.h> 36 #include <agrum/PRM/o3prm/O3NameSolver.h> 37 #include <agrum/PRM/o3prm/O3prm.h> 38 #include <agrum/tools/core/hashTable.h> 39 #include <agrum/tools/core/set.h> 41 #ifndef GUM_PRM_O3PRM_O3CLASS_FACTORY_H 42 # define GUM_PRM_O3PRM_O3CLASS_FACTORY_H 57 template <
typename GUM_SCALAR >
62 O3NameSolver< GUM_SCALAR >& solver,
63 ErrorsContainer& errors);
119 HashTable< std::string, O3Attribute* >& attrMap,
120 HashTable< std::string, O3Aggregate* >& aggMap,
121 HashTable< std::string, O3ReferenceSlot* >& refMap);
127 const PRMClassElementContainer< GUM_SCALAR >& type);
154 bool checkParent__(
const PRMClass< GUM_SCALAR >& c,
const O3Label& prnt);
157 const O3Label& prnt);
160 const O3Label& prnt);
162 bool checkRawCPT__(
const PRMClass< GUM_SCALAR >& c, O3RawCPT& attr);
164 bool checkRuleCPT__(
const PRMClass< GUM_SCALAR >& c, O3RuleCPT& attr);
167 const O3RuleCPT::O3Rule& rule);
170 const O3RuleCPT& attr,
171 const O3RuleCPT::O3Rule& rule);
174 const HashTable< std::string,
const PRMParameter< GUM_SCALAR >* >&
176 O3RuleCPT::O3Rule& rule);
179 const O3RuleCPT& attr,
180 const O3RuleCPT::O3Rule& rule);
191 const O3Label& chain,
192 const std::string& s);
224 # include <agrum/PRM/o3prm/O3ClassFactory_tpl.h> 227 # ifndef GUM_NO_EXTERN_TEMPLATE_CLASS bool checkAggregateForDeclaration__(O3Class &o3class, O3Aggregate &agg)
void completeAggregates()
O3ClassFactory< GUM_SCALAR > & operator=(O3ClassFactory< GUM_SCALAR > &&src)
bool checkParameterValue__(O3Aggregate &agg, const gum::prm::PRMType &t)
bool checkParametersNumber__(O3Aggregate &agg, Size n)
bool checkAggregateForCompletion__(O3Class &o3class, O3Aggregate &agg)
void completeAggregates__(PRMFactory< GUM_SCALAR > &factory, O3Class &c)
bool checkImplementation__(O3Class &c, O3Label &i, HashTable< std::string, O3Attribute * > &attrMap, HashTable< std::string, O3Aggregate * > &aggMap, HashTable< std::string, O3ReferenceSlot * > &refMap)
O3NameSolver< GUM_SCALAR > * solver__
bool checkSlotChainLink__(const PRMClassElementContainer< GUM_SCALAR > &c, const O3Label &chain, const std::string &s)
void buildReferenceSlots()
INLINE void emplace(Args &&... args)
bool checkAttributeForCompletion__(const O3Class &o3_c, O3Attribute &attr)
void declareAggregates__(O3Class &c)
ErrorsContainer * errors__
O3ClassFactory(O3ClassFactory< GUM_SCALAR > &&src)
std::vector< O3Class *> o3Classes__
HashTable< std::string, gum::NodeId > nameMap__
bool checkAggParameters__(O3Class &o3class, O3Aggregate &agg, const PRMType *t)
void addReferenceSlots__(O3Class &c)
bool checkImplementation__(O3Class &c)
bool checkLocalParent__(const PRMClass< GUM_SCALAR > &c, const O3Label &prnt)
HashTable< std::string, O3Class *> classMap__
void setO3ClassCreationOrder__()
bool checkRuleCPTSumsTo1__(const PRMClass< GUM_SCALAR > &c, const O3RuleCPT &attr, const O3RuleCPT::O3Rule &rule)
void addParameters__(PRMFactory< GUM_SCALAR > &factory, O3Class &c)
void buildImplementations()
bool checkImplementation__(O3Label &o3_type, const PRMClassElementContainer< GUM_SCALAR > &type)
bool checkAndAddNodesToDag__()
const PRMClassElement< GUM_SCALAR > * resolveSlotChain__(const PRMClassElementContainer< GUM_SCALAR > &c, const O3Label &chain)
void addParamsToForms__(const HashTable< std::string, const PRMParameter< GUM_SCALAR > * > &scope, O3RuleCPT::O3Rule &rule)
O3ClassFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
bool checkParent__(const PRMClass< GUM_SCALAR > &c, const O3Label &prnt)
bool checkAggTypeLegality__(O3Class &o3class, O3Aggregate &agg)
const PRMType * checkAggParents__(O3Class &o3class, O3Aggregate &agg)
bool checkAttributeForDeclaration__(O3Class &o3_c, O3Attribute &attr)
ParamScopeData(const std::string &s, const PRMReferenceSlot< GUM_SCALAR > &ref, Idx d)
void completeAttribute__(PRMFactory< GUM_SCALAR > &factory, O3Class &c)
bool checkRuleCPT__(const PRMClass< GUM_SCALAR > &c, O3RuleCPT &attr)
O3ClassFactory(const O3ClassFactory< GUM_SCALAR > &src)
Builds gum::prm::Class from gum::prm::o3prm::O3Class.
bool checkRemoteParent__(const PRMClassElementContainer< GUM_SCALAR > &c, const O3Label &prnt)
void declareAttribute__(O3Class &c)
bool checkAndAddArcsToDag__()
HashTable< NodeId, O3Class *> nodeMap__
bool checkRawCPT__(const PRMClass< GUM_SCALAR > &c, O3RawCPT &attr)
O3ClassFactory< GUM_SCALAR > & operator=(const O3ClassFactory< GUM_SCALAR > &src)
void completeAttributes()
PRM< GUM_SCALAR > * prm__
bool checkLabelsValues__(const PRMClass< GUM_SCALAR > &c, const O3RuleCPT &attr, const O3RuleCPT::O3Rule &rule)
bool checkLabelsNumber__(const O3RuleCPT &attr, const O3RuleCPT::O3Rule &rule)
bool checkReferenceSlot__(O3Class &c, O3ReferenceSlot &ref)