29 #ifndef GUM_IPRM_FACTORY_H 30 #define GUM_IPRM_FACTORY_H 38 #include <agrum/agrum.h> 40 #include <agrum/tools/core/hashTable.h> 41 #include <agrum/tools/multidim/implementations/multiDimSparse.h> 42 #include <agrum/tools/variables/discreteVariable.h> 44 #include <agrum/PRM/PRM.h> 45 #include <agrum/PRM/utils_prm.h> 57 virtual ~IPRMFactory(){};
60 virtual PRMObject::prm_type currentType()
const = 0;
61 virtual PRMObject* getCurrent() = 0;
62 virtual const PRMObject* getCurrent()
const = 0;
63 virtual PRMObject* closeCurrent() = 0;
64 virtual std::string currentPackage()
const = 0;
69 virtual void pushPackage(
const std::string& name) = 0;
70 virtual std::string popPackage() = 0;
71 virtual void addImport(
const std::string& name) = 0;
72 virtual void startDiscreteType(
const std::string& name,
73 std::string super =
"")
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 addRangeType(
const std::string& name,
long minVal,
long maxVal)
82 virtual void startClass(
const std::string& c,
83 const std::string& extends =
"",
84 const Set< std::string >* implements =
nullptr,
85 bool delayInheritance =
false)
87 virtual void continueClass(
const std::string& c) = 0;
88 virtual void endClass(
bool checkImplementations =
true) = 0;
89 virtual void startInterface(
const std::string& i,
90 const std::string& extends =
"",
91 bool delayInheritance =
false)
93 virtual void continueInterface(
const std::string& name) = 0;
94 virtual void addAttribute(
const std::string& type,
const std::string& name)
96 virtual void endInterface() = 0;
98 virtual void startAttribute(
const std::string& type,
99 const std::string& name,
100 bool scalar_attr =
false)
102 virtual void continueAttribute(
const std::string& name) = 0;
103 virtual void addParent(
const std::string& name) = 0;
104 virtual void setRawCPFByFloatLines(
const std::vector<
float >& array) = 0;
105 virtual void setRawCPFByFloatColumns(
const std::vector<
float >& array) = 0;
106 virtual void setCPFByFloatRule(
const std::vector< std::string >& labels,
107 const std::vector<
float >& values)
109 virtual void setCPFByRule(
const std::vector< std::string >& labels,
110 const std::vector< std::string >& values)
112 virtual void setRawCPFByColumns(
const std::vector< std::string >& array) = 0;
113 virtual void setRawCPFByLines(
const std::vector< std::string >& array) = 0;
114 virtual void endAttribute() = 0;
115 virtual void addParameter(
const std::string& type,
116 const std::string& name,
119 virtual void addAggregator(
const std::string& name,
120 const std::string& agg_type,
121 const std::vector< std::string >& chains,
122 const std::vector< std::string >& params,
123 std::string type =
"")
125 virtual void addNoisyOrCompound(
const std::string& name,
126 const std::vector< std::string >& chains,
127 const std::vector<
float >& numbers,
129 const std::vector< std::string >& label)
131 virtual void addReferenceSlot(
const std::string& type,
132 const std::string& name,
135 virtual void startSystem(
const std::string& name) = 0;
136 virtual void endSystem() = 0;
137 virtual void addInstance(
const std::string& type,
const std::string& name)
139 virtual void addInstance(
const std::string& type,
140 const std::string& name,
141 const HashTable< std::string,
double >& params)
144 addArray(
const std::string& type,
const std::string& name, Size size)
146 virtual void incArray(
const std::string& l_i,
const std::string& r_i) = 0;
147 virtual void setReferenceSlot(
const std::string& left_instance,
148 const std::string& left_reference,
149 const std::string& right_instance)
151 virtual void setReferenceSlot(
const std::string& l_i,
const std::string& r_i)
154 virtual bool isClassOrInterface(
const std::string& type)
const = 0;
155 virtual bool isArrayInCurrentSystem(
const std::string& name)
const = 0;