aGrUM  0.16.0
IPRMFactory.h
Go to the documentation of this file.
1 
30 #ifndef GUM_IPRM_FACTORY_H
31 #define GUM_IPRM_FACTORY_H
32 
33 #include <iostream>
34 #include <limits>
35 #include <sstream>
36 #include <string>
37 #include <vector>
38 
39 #include <agrum/agrum.h>
40 
41 #include <agrum/core/hashTable.h>
44 
45 #include <agrum/PRM/PRM.h>
46 #include <agrum/PRM/utils_prm.h>
47 
48 namespace gum {
49 
50  namespace prm {
57  struct IPRMFactory {
58  virtual ~IPRMFactory(){};
59 
60  // virtual PRM<GUM_SCALAR>* prm() const=0;
61  virtual PRMObject::prm_type currentType() const = 0;
62  virtual PRMObject* getCurrent() = 0;
63  virtual const PRMObject* getCurrent() const = 0;
64  virtual PRMObject* closeCurrent() = 0;
65  virtual std::string currentPackage() const = 0;
66  // Class<GUM_SCALAR>& retrieveClass ( const std::string& name )=0;
67  // PRMType& retrieveType ( const std::string& name )=0;
68  // PRMType& retrieveCommonType ( const
69  // std::vector<PRMClassElement<GUM_SCALAR>*>& elts )=0;
70  virtual void pushPackage(const std::string& name) = 0;
71  virtual std::string popPackage() = 0;
72  virtual void addImport(const std::string& name) = 0;
73  virtual void startDiscreteType(const std::string& name,
74  std::string super = "") = 0;
75  virtual void addLabel(const std::string& l, std::string extends = "") = 0;
76  virtual void endDiscreteType() = 0;
77  virtual void startDiscretizedType(const std::string& name) = 0;
78  virtual void addTick(double tick) = 0;
79  virtual void endDiscretizedType() = 0;
80  virtual void
81  addRangeType(const std::string& name, long minVal, long maxVal) = 0;
82  virtual void startClass(const std::string& c,
83  const std::string& extends = "",
84  const Set< std::string >* implements = nullptr,
85  bool delayInheritance = false) = 0;
86  virtual void continueClass(const std::string& c) = 0;
87  virtual void endClass(bool checkImplementations = true) = 0;
88  virtual void startInterface(const std::string& i,
89  const std::string& extends = "",
90  bool delayInheritance = false) = 0;
91  virtual void continueInterface(const std::string& name) = 0;
92  virtual void addAttribute(const std::string& type,
93  const std::string& name) = 0;
94  virtual void endInterface() = 0;
95  // virtual void addAttribute ( PRMAttribute<GUM_SCALAR>* attr ) =0;
96  virtual void startAttribute(const std::string& type,
97  const std::string& name,
98  bool scalar_attr = false) = 0;
99  virtual void continueAttribute(const std::string& name) = 0;
100  virtual void addParent(const std::string& name) = 0;
101  virtual void setRawCPFByFloatLines(const std::vector< float >& array) = 0;
102  virtual void setRawCPFByFloatColumns(const std::vector< float >& array) = 0;
103  virtual void setCPFByFloatRule(const std::vector< std::string >& labels,
104  const std::vector< float >& values) = 0;
105  virtual void setCPFByRule(const std::vector< std::string >& labels,
106  const std::vector< std::string >& values) = 0;
107  virtual void setRawCPFByColumns(const std::vector< std::string >& array) = 0;
108  virtual void setRawCPFByLines(const std::vector< std::string >& array) = 0;
109  virtual void endAttribute() = 0;
110  virtual void addParameter(const std::string& type,
111  const std::string& name,
112  double value) = 0;
113  virtual void addAggregator(const std::string& name,
114  const std::string& agg_type,
115  const std::vector< std::string >& chains,
116  const std::vector< std::string >& params,
117  std::string type = "") = 0;
118  virtual void addNoisyOrCompound(const std::string& name,
119  const std::vector< std::string >& chains,
120  const std::vector< float >& numbers,
121  float leak,
122  const std::vector< std::string >& label) = 0;
123  virtual void addReferenceSlot(const std::string& type,
124  const std::string& name,
125  bool isArray) = 0;
126  virtual void startSystem(const std::string& name) = 0;
127  virtual void endSystem() = 0;
128  virtual void addInstance(const std::string& type,
129  const std::string& name) = 0;
130  virtual void addInstance(const std::string& type,
131  const std::string& name,
132  const HashTable< std::string, double >& params) = 0;
133  virtual void
134  addArray(const std::string& type, const std::string& name, Size size) = 0;
135  virtual void incArray(const std::string& l_i, const std::string& r_i) = 0;
136  virtual void setReferenceSlot(const std::string& left_instance,
137  const std::string& left_reference,
138  const std::string& right_instance) = 0;
139  virtual void setReferenceSlot(const std::string& l_i,
140  const std::string& r_i) = 0;
141 
142  virtual bool isClassOrInterface(const std::string& type) const = 0;
143  virtual bool isArrayInCurrentSystem(const std::string& name) const = 0;
144  };
145  } /* namespace prm */
146 } /* namespace gum */
147 
148 #endif /* GUM_IPRM_FACTORY_H */
virtual void setCPFByFloatRule(const std::vector< std::string > &labels, const std::vector< float > &values)=0
virtual void addAttribute(const std::string &type, const std::string &name)=0
virtual void endInterface()=0
virtual void startAttribute(const std::string &type, const std::string &name, bool scalar_attr=false)=0
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.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual void addInstance(const std::string &type, const std::string &name)=0
virtual void addTick(double tick)=0
virtual void setRawCPFByColumns(const std::vector< std::string > &array)=0
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
virtual void addNoisyOrCompound(const std::string &name, const std::vector< std::string > &chains, const std::vector< float > &numbers, float leak, const std::vector< std::string > &label)=0
virtual void addParameter(const std::string &type, const std::string &name, double value)=0
virtual PRMObject::prm_type currentType() const =0
virtual void addReferenceSlot(const std::string &type, const std::string &name, bool isArray)=0
virtual void endDiscretizedType()=0
virtual void endClass(bool checkImplementations=true)=0
prm_type
Enumeration of the different types of objects handled by a PRM.
Definition: PRMObject.h:69
virtual void endAttribute()=0
virtual PRMObject * closeCurrent()=0
virtual void startClass(const std::string &c, const std::string &extends="", const Set< std::string > *implements=nullptr, bool delayInheritance=false)=0
virtual std::string currentPackage() const =0
virtual void setReferenceSlot(const std::string &left_instance, const std::string &left_reference, const std::string &right_instance)=0
virtual void pushPackage(const std::string &name)=0
virtual void startInterface(const std::string &i, const std::string &extends="", bool delayInheritance=false)=0
virtual void addRangeType(const std::string &name, long minVal, long maxVal)=0
virtual void continueClass(const std::string &c)=0
virtual bool isClassOrInterface(const std::string &type) const =0
virtual void setCPFByRule(const std::vector< std::string > &labels, const std::vector< std::string > &values)=0
virtual void addAggregator(const std::string &name, const std::string &agg_type, const std::vector< std::string > &chains, const std::vector< std::string > &params, std::string type="")=0
virtual void setRawCPFByFloatLines(const std::vector< float > &array)=0
virtual ~IPRMFactory()
Definition: IPRMFactory.h:58
Abstract base class for any element defined in a PRM.
Definition: PRMObject.h:56
virtual std::string popPackage()=0
virtual void startDiscretizedType(const std::string &name)=0
virtual void continueInterface(const std::string &name)=0
virtual void startDiscreteType(const std::string &name, std::string super="")=0
virtual void setRawCPFByLines(const std::vector< std::string > &array)=0
virtual void addLabel(const std::string &l, std::string extends="")=0
virtual void addArray(const std::string &type, const std::string &name, Size size)=0
virtual void incArray(const std::string &l_i, const std::string &r_i)=0
virtual void endDiscreteType()=0
virtual void endSystem()=0
virtual void addImport(const std::string &name)=0
virtual void setRawCPFByFloatColumns(const std::vector< float > &array)=0
virtual void startSystem(const std::string &name)=0
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48
virtual void continueAttribute(const std::string &name)=0
virtual bool isArrayInCurrentSystem(const std::string &name) const =0
virtual PRMObject * getCurrent()=0
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual void addParent(const std::string &name)=0
non-template interface-like parent for every PRM Factory
Definition: IPRMFactory.h:57