aGrUM  0.13.2
gum::prm::o3prm::O3TypeFactory< GUM_SCALAR > Class Template Reference

Builds gum::prm::PRMType from gum::prm::o3prm::O3Type, gum::prm::o3prm::O3IntType and gum::prm::o3prm::O3RealType. More...

#include <agrum/PRM/o3prm/O3TypeFactory.h>

+ Collaboration diagram for gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >:

Public Member Functions

 O3TypeFactory (PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
 
 O3TypeFactory (const O3TypeFactory< GUM_SCALAR > &src)
 
 O3TypeFactory (O3TypeFactory< GUM_SCALAR > &&src)
 
 ~O3TypeFactory ()
 
O3TypeFactoryoperator= (const O3TypeFactory< GUM_SCALAR > &src)
 
O3TypeFactoryoperator= (O3TypeFactory< GUM_SCALAR > &&src)
 
void build ()
 

Detailed Description

template<typename GUM_SCALAR>
class gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >

Builds gum::prm::PRMType from gum::prm::o3prm::O3Type, gum::prm::o3prm::O3IntType and gum::prm::o3prm::O3RealType.

Template Parameters
GUM_SCALARThe scalar type used by the gum::prm::PRM.

Definition at line 59 of file O3TypeFactory.h.

Constructor & Destructor Documentation

template<typename GUM_SCALAR >
INLINE gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::O3TypeFactory ( PRM< GUM_SCALAR > &  prm,
O3PRM o3_prm,
O3NameSolver< GUM_SCALAR > &  solver,
ErrorsContainer errors 
)

Definition at line 36 of file O3TypeFactory_tpl.h.

40  :
41  __prm(&prm),
42  __o3_prm(&o3_prm), __solver(&solver), __errors(&errors), __build(false) {
43  GUM_CONSTRUCTOR(O3TypeFactory);
44  }
PRM< GUM_SCALAR > * __prm
Definition: O3TypeFactory.h:74
O3TypeFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
O3NameSolver< GUM_SCALAR > * __solver
Definition: O3TypeFactory.h:76
template<typename GUM_SCALAR >
INLINE gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::O3TypeFactory ( const O3TypeFactory< GUM_SCALAR > &  src)

Definition at line 47 of file O3TypeFactory_tpl.h.

48  :
49  __prm(src.__prm),
50  __o3_prm(src.__o3_prm), __solver(src.__solver), __errors(src.__errors),
51  __build(src.__build) {
52  GUM_CONS_CPY(O3TypeFactory);
53  }
PRM< GUM_SCALAR > * __prm
Definition: O3TypeFactory.h:74
O3TypeFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
O3NameSolver< GUM_SCALAR > * __solver
Definition: O3TypeFactory.h:76
template<typename GUM_SCALAR >
INLINE gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::O3TypeFactory ( O3TypeFactory< GUM_SCALAR > &&  src)

Definition at line 56 of file O3TypeFactory_tpl.h.

57  :
58  __prm(std::move(src.__prm)),
59  __o3_prm(std::move(src.__o3_prm)), __solver(std::move(src.__solver)),
60  __errors(std::move(src.__errors)), __build(std::move(src.__build)) {
61  GUM_CONS_MOV(O3TypeFactory);
62  }
PRM< GUM_SCALAR > * __prm
Definition: O3TypeFactory.h:74
O3TypeFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
O3NameSolver< GUM_SCALAR > * __solver
Definition: O3TypeFactory.h:76
template<typename GUM_SCALAR >
INLINE gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::~O3TypeFactory ( )

Definition at line 65 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::operator=().

65  {
66  GUM_DESTRUCTOR(O3TypeFactory);
67  }
O3TypeFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)

+ Here is the call graph for this function:

Member Function Documentation

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__addArcs2Dag ( )
private

Definition at line 245 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkLabels(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__dag, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__nameMap, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3_prm, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__solver, gum::DAG::addArc(), and gum::prm::o3prm::O3PRM::types().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkO3Types().

245  {
246  // Adding arcs to the graph inheritance graph
247  for (auto& type : __o3_prm->types()) {
248  if (type->superLabel().label() != "") {
249  if (!__solver->resolveType(type->superLabel())) { return false; }
250 
251  auto head = __nameMap[type->superLabel().label()];
252  auto tail = __nameMap[type->name().label()];
253 
254  try {
255  __dag.addArc(tail, head);
256 
257  } catch (InvalidDirectedCycle&) {
258  // Cyclic inheritance
259  O3PRM_TYPE_CYCLIC_INHERITANCE(
260  type->name(), type->superLabel(), *__errors);
261  return false;
262  }
263 
264  // Check labels inheritance
265  if (!__checkLabels(*type)) { return false; }
266  }
267  }
268 
269  return true;
270  }
HashTable< std::string, gum::NodeId > __nameMap
Definition: O3TypeFactory.h:82
virtual void addArc(const NodeId tail, const NodeId head)
insert a new arc into the directed graph
Definition: DAG_inl.h:40
O3NameSolver< GUM_SCALAR > * __solver
Definition: O3TypeFactory.h:76
O3TypeList & types()
Definition: O3prm.cpp:485

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__addTypes2Dag ( )
private

Definition at line 226 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__dag, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__nameMap, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__nodeMap, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3_prm, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__typeMap, gum::NodeGraphPart::addNode(), gum::HashTable< Key, Val, Alloc >::insert(), and gum::prm::o3prm::O3PRM::types().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkO3Types().

226  {
227  // Adding nodes to the type inheritance graph
228  for (auto& type : __o3_prm->types()) {
229  auto id = __dag.addNode();
230  try {
231  __nameMap.insert(type->name().label(), id);
232  __typeMap.insert(type->name().label(), type.get());
233  __nodeMap.insert(id, type.get());
234 
235  } catch (DuplicateElement&) {
236  // Raised if duplicate type names
237  O3PRM_TYPE_DUPPLICATE(type->name(), *__errors);
238  return false;
239  }
240  }
241  return true;
242  }
HashTable< std::string, gum::NodeId > __nameMap
Definition: O3TypeFactory.h:82
HashTable< std::string, O3Type * > __typeMap
Definition: O3TypeFactory.h:83
HashTable< NodeId, O3Type * > __nodeMap
Definition: O3TypeFactory.h:84
virtual NodeId addNode()
insert a new node and return its id
O3TypeList & types()
Definition: O3prm.cpp:485
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildIntTypes ( )
private

Definition at line 159 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkO3IntTypes(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3IntTypes, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__prm, and gum::prm::PRMFactory< GUM_SCALAR >::addRangeType().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::build().

159  {
160  if (__checkO3IntTypes()) {
161  PRMFactory< GUM_SCALAR > factory(__prm);
162  for (auto type : __o3IntTypes) {
163  factory.addRangeType(
164  type->name().label(), type->start().value(), type->end().value());
165  }
166  }
167  }
PRM< GUM_SCALAR > * __prm
Definition: O3TypeFactory.h:74
std::vector< O3IntType * > __o3IntTypes
Definition: O3TypeFactory.h:87

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildRealTypes ( )
private

Definition at line 170 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkO3RealTypes(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3RealTypes, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__prm, gum::prm::PRMFactory< GUM_SCALAR >::addTick(), gum::prm::PRMFactory< GUM_SCALAR >::endDiscretizedType(), and gum::prm::PRMFactory< GUM_SCALAR >::startDiscretizedType().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::build().

170  {
171  if (__checkO3RealTypes()) {
172  PRMFactory< GUM_SCALAR > factory(__prm);
173  for (auto type : __o3RealTypes) {
174  factory.startDiscretizedType(type->name().label());
175 
176  for (auto value : type->values()) {
177  factory.addTick(value.value());
178  }
179  factory.endDiscretizedType();
180  }
181  }
182  }
std::vector< O3RealType * > __o3RealTypes
Definition: O3TypeFactory.h:88
PRM< GUM_SCALAR > * __prm
Definition: O3TypeFactory.h:74

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildTypes ( )
private

Definition at line 115 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkO3Types(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__isPrimitiveType(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3Types, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__prm, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__setO3TypeCreationOrder(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__solver, gum::prm::PRMFactory< GUM_SCALAR >::addLabel(), gum::prm::PRMFactory< GUM_SCALAR >::endDiscreteType(), and gum::prm::PRMFactory< GUM_SCALAR >::startDiscreteType().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::build().

115  {
116  if (__checkO3Types()) {
118 
119  PRMFactory< GUM_SCALAR > factory(__prm);
120  for (auto type : __o3Types) {
121  if (!__isPrimitiveType(*type)) {
122  if (__solver->resolveType(type->superLabel())) {
123  factory.startDiscreteType(type->name().label(),
124  type->superLabel().label());
125 
126  for (auto& label : type->labels()) {
127  factory.addLabel(label.first.label(), label.second.label());
128  }
129 
130  factory.endDiscreteType();
131  }
132  }
133  }
134  }
135  }
PRM< GUM_SCALAR > * __prm
Definition: O3TypeFactory.h:74
std::vector< O3Type * > __o3Types
Definition: O3TypeFactory.h:86
bool __isPrimitiveType(O3Type &type)
O3NameSolver< GUM_SCALAR > * __solver
Definition: O3TypeFactory.h:76

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkDepreactedO3Types ( )
private

Definition at line 138 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3_prm, gum::prm::o3prm::O3PRM::int_types(), gum::prm::o3prm::O3PRM::real_types(), and gum::prm::o3prm::O3PRM::types().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::build().

138  {
139  for (auto& t : __o3_prm->types()) {
140  if (t->deprecated()) {
141  O3PRM_DEPRECATED_TYPE_WARNING(t->name(), *__errors);
142  }
143  }
144 
145  for (auto& t : __o3_prm->int_types()) {
146  if (t->deprecated()) {
147  O3PRM_DEPRECATED_TYPE_WARNING(t->name(), *__errors);
148  }
149  }
150 
151  for (auto& t : __o3_prm->real_types()) {
152  if (t->deprecated()) {
153  O3PRM_DEPRECATED_TYPE_WARNING(t->name(), *__errors);
154  }
155  }
156  }
O3RealTypeList & real_types()
Definition: O3prm.cpp:491
O3IntTypeList & int_types()
Definition: O3prm.cpp:488
O3TypeList & types()
Definition: O3prm.cpp:485

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkLabels ( O3Type type)
private

Definition at line 273 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__typeMap, gum::prm::o3prm::O3Label::label(), gum::prm::o3prm::O3Type::labels(), and gum::prm::o3prm::O3Type::superLabel().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__addArcs2Dag().

273  {
274  for (auto& pair : type.labels()) {
275  auto super_labels = Set< std::string >();
276  auto super = __typeMap[type.superLabel().label()];
277 
278  for (auto& label : super->labels()) {
279  super_labels.insert(label.first.label());
280  }
281 
282  if (!super_labels.contains(pair.second.label())) {
283  O3PRM_TYPE_UNKNOWN_LABEL(type.superLabel(), pair.second, *__errors);
284  return false;
285  }
286  }
287  return true;
288  }
HashTable< std::string, O3Type * > __typeMap
Definition: O3TypeFactory.h:83

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkO3IntTypes ( )
private

Definition at line 302 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3_prm, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3IntTypes, gum::Set< Key, Alloc >::insert(), gum::prm::o3prm::O3PRM::int_types(), and gum::prm::o3prm::O3PRM::types().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildIntTypes().

302  {
303  auto names = gum::Set< std::string >();
304  for (auto& type : __o3_prm->types()) {
305  names.insert(type->name().label());
306  }
307 
308  for (const auto& type : __o3_prm->int_types()) {
309  if (names.contains(type->name().label())) {
310  // Raised if duplicate type names
311  O3PRM_TYPE_DUPPLICATE(type->name(), *__errors);
312  return false;
313 
314  } else if (type->end().value() - type->start().value() < 1) {
315  // Invalid range
316  O3PRM_TYPE_INVALID_RANGE(*type, *__errors);
317  return false;
318 
319  } else {
320  __o3IntTypes.push_back(type.get());
321  }
322  }
323  return true;
324  }
O3IntTypeList & int_types()
Definition: O3prm.cpp:488
std::vector< O3IntType * > __o3IntTypes
Definition: O3TypeFactory.h:87
O3TypeList & types()
Definition: O3prm.cpp:485
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:613

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkO3RealTypes ( )
private

Definition at line 185 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3_prm, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3RealTypes, gum::Set< Key, Alloc >::insert(), gum::prm::o3prm::O3PRM::int_types(), gum::prm::o3prm::O3PRM::real_types(), and gum::prm::o3prm::O3PRM::types().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildRealTypes().

185  {
186  auto names = gum::Set< std::string >();
187  for (auto& type : __o3_prm->types()) {
188  names.insert(type->name().label());
189  }
190  for (auto& type : __o3_prm->int_types()) {
191  names.insert(type->name().label());
192  }
193 
194  for (const auto& type : __o3_prm->real_types()) {
195  if (names.contains(type->name().label())) {
196  // Raised if duplicate type names
197  O3PRM_TYPE_DUPPLICATE(type->name(), *__errors);
198  return false;
199 
200  } else if (type->values().size() < 3) {
201  // Invalid range
202  O3PRM_TYPE_INVALID_RANGE(*type, *__errors);
203  return false;
204 
205  } else {
206  __o3RealTypes.push_back(type.get());
207  }
208  }
209  return true;
210  }
std::vector< O3RealType * > __o3RealTypes
Definition: O3TypeFactory.h:88
O3RealTypeList & real_types()
Definition: O3prm.cpp:491
O3IntTypeList & int_types()
Definition: O3prm.cpp:488
O3TypeList & types()
Definition: O3prm.cpp:485
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:613

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkO3Types ( )
private

Definition at line 218 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__addArcs2Dag(), and gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__addTypes2Dag().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildTypes().

218  {
219  if (__addTypes2Dag()) {
220  if (__addArcs2Dag()) { return true; }
221  }
222  return false;
223  }

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__isPrimitiveType ( O3Type type)
private

Definition at line 213 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3Label::label(), and gum::prm::o3prm::O3Type::name().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildTypes().

213  {
214  return type.name().label() == "boolean";
215  }

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__setO3TypeCreationOrder ( )
private

Definition at line 291 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__dag, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__nodeMap, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3Types, and gum::DiGraph::topologicalOrder().

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildTypes().

291  {
292  auto v = __dag.topologicalOrder();
293 
294  for (auto id = v.rbegin(); id != v.rend(); --id) {
295  if (__nodeMap[*id]->name().label() != "boolean") {
296  __o3Types.push_back(__nodeMap[*id]);
297  }
298  }
299  }
std::vector< O3Type * > __o3Types
Definition: O3TypeFactory.h:86
HashTable< NodeId, O3Type * > __nodeMap
Definition: O3TypeFactory.h:84
const Sequence< NodeId > & topologicalOrder(bool clear=true) const
The topological order stays the same as long as no variable or arcs are added or erased src the topol...
Definition: diGraph.cpp:88

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::build ( )

Definition at line 94 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__build, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildIntTypes(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildRealTypes(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__buildTypes(), gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__checkDepreactedO3Types(), and GUM_ERROR.

94  {
95  if (__build) {
96  GUM_ERROR(FatalError,
97  "types have already been built, change PRM to rebuild");
98  }
99  __build = true;
100 
101  // checking deprecated declarations
103 
104  // building types
105  __buildTypes();
106 
107  // building int types
108  __buildIntTypes();
109 
110  // building real types
112  }
#define GUM_ERROR(type, msg)
Definition: exceptions.h:66

+ Here is the call graph for this function:

template<typename GUM_SCALAR >
INLINE O3TypeFactory< GUM_SCALAR > & gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::operator= ( const O3TypeFactory< GUM_SCALAR > &  src)

Definition at line 71 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__build, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3_prm, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__prm, and gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__solver.

Referenced by gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::~O3TypeFactory().

71  {
72  if (this == &src) { return *this; }
73  __prm = src.__prm;
74  __o3_prm = src.__o3_prm;
75  __solver = src.__solver;
76  __errors = src.__errors;
77  __build = src.__build;
78  return *this;
79  }
PRM< GUM_SCALAR > * __prm
Definition: O3TypeFactory.h:74
O3NameSolver< GUM_SCALAR > * __solver
Definition: O3TypeFactory.h:76

+ Here is the caller graph for this function:

template<typename GUM_SCALAR >
INLINE O3TypeFactory< GUM_SCALAR > & gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::operator= ( O3TypeFactory< GUM_SCALAR > &&  src)

Definition at line 83 of file O3TypeFactory_tpl.h.

References gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__build, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3_prm, gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__prm, and gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__solver.

83  {
84  if (this == &src) { return *this; }
85  __prm = std::move(src.__prm);
86  __o3_prm = std::move(src.__o3_prm);
87  __solver = std::move(src.__solver);
88  __errors = std::move(src.__errors);
89  __build = std::move(src.__build);
90  return *this;
91  }
PRM< GUM_SCALAR > * __prm
Definition: O3TypeFactory.h:74
O3NameSolver< GUM_SCALAR > * __solver
Definition: O3TypeFactory.h:76

Member Data Documentation

template<typename GUM_SCALAR>
bool gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__build
private
template<typename GUM_SCALAR>
HashTable< std::string, gum::NodeId > gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__nameMap
private
template<typename GUM_SCALAR>
std::vector< O3IntType* > gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3IntTypes
private
template<typename GUM_SCALAR>
std::vector< O3RealType* > gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3RealTypes
private
template<typename GUM_SCALAR>
std::vector< O3Type* > gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__o3Types
private
template<typename GUM_SCALAR>
HashTable< std::string, O3Type* > gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__superMap
private

Definition at line 81 of file O3TypeFactory.h.

template<typename GUM_SCALAR>
HashTable< std::string, O3Type* > gum::prm::o3prm::O3TypeFactory< GUM_SCALAR >::__typeMap
private

The documentation for this class was generated from the following files: