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, std::string super =
"") = 0;
73 virtual void addLabel(
const std::string& l, std::string extends =
"") = 0;
74 virtual void endDiscreteType() = 0;
75 virtual void startDiscretizedType(
const std::string& name) = 0;
76 virtual void addTick(
double tick) = 0;
77 virtual void endDiscretizedType() = 0;
78 virtual void addRangeType(
const std::string& name,
long minVal,
long maxVal) = 0;
79 virtual void startClass(
const std::string& c,
80 const std::string& extends =
"",
81 const Set< std::string >* implements =
nullptr,
82 bool delayInheritance =
false)
84 virtual void continueClass(
const std::string& c) = 0;
85 virtual void endClass(
bool checkImplementations =
true) = 0;
86 virtual void startInterface(
const std::string& i,
87 const std::string& extends =
"",
88 bool delayInheritance =
false)
90 virtual void continueInterface(
const std::string& name) = 0;
91 virtual void addAttribute(
const std::string& type,
const std::string& name) = 0;
92 virtual void endInterface() = 0;
95 startAttribute(
const std::string& type,
const std::string& name,
bool scalar_attr =
false)
97 virtual void continueAttribute(
const std::string& name) = 0;
98 virtual void addParent(
const std::string& name) = 0;
99 virtual void setRawCPFByFloatLines(
const std::vector<
float >& array) = 0;
100 virtual void setRawCPFByFloatColumns(
const std::vector<
float >& array) = 0;
101 virtual void setCPFByFloatRule(
const std::vector< std::string >& labels,
102 const std::vector<
float >& values)
104 virtual void setCPFByRule(
const std::vector< std::string >& labels,
105 const std::vector< std::string >& values)
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,
const std::string& name,
double value) = 0;
111 virtual void addAggregator(
const std::string& name,
112 const std::string& agg_type,
113 const std::vector< std::string >& chains,
114 const std::vector< std::string >& params,
115 std::string type =
"")
117 virtual void addNoisyOrCompound(
const std::string& name,
118 const std::vector< std::string >& chains,
119 const std::vector<
float >& numbers,
121 const std::vector< std::string >& label)
123 virtual void addReferenceSlot(
const std::string& type,
const std::string& name,
bool isArray)
125 virtual void startSystem(
const std::string& name) = 0;
126 virtual void endSystem() = 0;
127 virtual void addInstance(
const std::string& type,
const std::string& name) = 0;
128 virtual void addInstance(
const std::string& type,
129 const std::string& name,
130 const HashTable< std::string,
double >& params)
132 virtual void addArray(
const std::string& type,
const std::string& name, Size size) = 0;
133 virtual void incArray(
const std::string& l_i,
const std::string& r_i) = 0;
134 virtual void setReferenceSlot(
const std::string& left_instance,
135 const std::string& left_reference,
136 const std::string& right_instance)
138 virtual void setReferenceSlot(
const std::string& l_i,
const std::string& r_i) = 0;
140 virtual bool isClassOrInterface(
const std::string& type)
const = 0;
141 virtual bool isArrayInCurrentSystem(
const std::string& name)
const = 0;