57#ifndef GUM_PRM_O3PRM_O3CLASS_FACTORY_H
58# define GUM_PRM_O3PRM_O3CLASS_FACTORY_H
73 template < GUM_Numeric GUM_SCALAR >
234# ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
Implementation for the O3ClassFactory class.
Headers for the O3NameSolver class.
This class is used contain and manipulate gum::ParseError.
<agrum/PRM/classElementContainer.h>
Abstract class representing an element of PRM class.
A PRMClass is an object of a PRM representing a fragment of a Bayesian network which can be instantia...
Factory which builds a PRM<GUM_SCALAR>.
PRMParameter is a member of a Class in a PRM.
This is a decoration of the DiscreteVariable class.
This class represents a Probabilistic Relational PRMSystem<GUM_SCALAR>.
The O3Aggregate is part of the AST of the O3PRM language.
The O3Attribute is part of the AST of the O3PRM language.
Builds gum::prm::Class from gum::prm::o3prm::O3Class.
bool _checkParent_(const PRMClass< GUM_SCALAR > &c, const O3Label &prnt)
O3NameSolver< GUM_SCALAR > * _solver_
bool _checkImplementation_(O3Class &c, O3Label &i, HashTable< std::string, O3Attribute * > &attrMap, HashTable< std::string, O3Aggregate * > &aggMap, HashTable< std::string, O3ReferenceSlot * > &refMap)
bool _checkLabelsValues_(const PRMClass< GUM_SCALAR > &c, const O3RuleCPT &attr, const O3RuleCPT::O3Rule &rule)
bool _checkImplementation_(O3Class &c)
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)
HashTable< std::string, gum::NodeId > _nameMap_
bool _checkAggTypeLegality_(O3Class &o3class, O3Aggregate &agg)
void _completeAggregates_(PRMFactory< GUM_SCALAR > &factory, O3Class &c)
void _declareAttribute_(O3Class &c)
void completeAggregates()
bool _checkLocalParent_(const PRMClass< GUM_SCALAR > &c, const O3Label &prnt)
void _addReferenceSlots_(O3Class &c)
std::vector< O3Class * > _o3Classes_
const PRMClassElement< GUM_SCALAR > * _resolveSlotChain_(const PRMClassElementContainer< GUM_SCALAR > &c, const O3Label &chain)
bool _checkAggParameters_(O3Class &o3class, O3Aggregate &agg, const PRMType *t)
bool _checkLabelsNumber_(const O3RuleCPT &attr, const O3RuleCPT::O3Rule &rule)
void _declareAggregates_(O3Class &c)
void buildReferenceSlots()
const PRMType * _checkAggParents_(O3Class &o3class, O3Aggregate &agg)
bool _checkParameterValue_(O3Aggregate &agg, const gum::prm::PRMType &t)
bool _checkAndAddArcsToDag_()
bool _checkAttributeForCompletion_(const O3Class &o3_c, O3Attribute &attr)
bool _checkAttributeForDeclaration_(O3Class &o3_c, O3Attribute &attr)
void completeAttributes()
void buildImplementations()
O3ClassFactory< GUM_SCALAR > & operator=(const O3ClassFactory< GUM_SCALAR > &src)
ErrorsContainer * _errors_
bool _checkAggregateForCompletion_(O3Class &o3class, O3Aggregate &agg)
bool _checkRemoteParent_(const PRMClassElementContainer< GUM_SCALAR > &c, const O3Label &prnt)
void _completeAttribute_(PRMFactory< GUM_SCALAR > &factory, O3Class &c)
bool _checkRuleCPT_(const PRMClass< GUM_SCALAR > &c, O3RuleCPT &attr)
PRM< GUM_SCALAR > * _prm_
void _addParameters_(PRMFactory< GUM_SCALAR > &factory, O3Class &c)
bool _checkParametersNumber_(O3Aggregate &agg, Size n)
bool _checkAndAddNodesToDag_()
HashTable< std::string, O3Class * > _classMap_
HashTable< NodeId, O3Class * > _nodeMap_
bool _checkReferenceSlot_(O3Class &c, O3ReferenceSlot &ref)
bool _checkRawCPT_(const PRMClass< GUM_SCALAR > &c, O3RawCPT &attr)
bool _checkRuleCPTSumsTo1_(const PRMClass< GUM_SCALAR > &c, const O3RuleCPT &attr, const O3RuleCPT::O3Rule &rule)
void _setO3ClassCreationOrder_()
bool _checkAggregateForDeclaration_(O3Class &o3class, O3Aggregate &agg)
bool _checkSlotChainLink_(const PRMClassElementContainer< GUM_SCALAR > &c, const O3Label &chain, std::string_view s)
The O3Class is part of the AST of the O3PRM language.
The O3Label is part of the AST of the O3PRM language.
Resolves names for the different O3PRM factories.
The O3PRM is part of the AST of the O3PRM language.
The O3RawCPT is part of the AST of the O3PRM language.
The O3ReferenceSlot is part of the AST of the O3PRM language.
The O3RuleCPT is part of the AST of the O3PRM language.
std::pair< O3LabelList, O3FormulaList > O3Rule
std::size_t Size
In aGrUM, hashed values are unsigned long int.
namespace for all probabilistic relational models entities
gum is the global namespace for all aGrUM entities