aGrUM  0.16.0
gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR > Class Template Reference

Bulds gum::prm:PRMInterface from gum::prm::o3prm::O3Interface. More...

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

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

Public Member Functions

 O3InterfaceFactory (PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
 
 O3InterfaceFactory (const O3InterfaceFactory< GUM_SCALAR > &src)
 
 O3InterfaceFactory (O3InterfaceFactory< GUM_SCALAR > &&src)
 
 ~O3InterfaceFactory ()
 
O3InterfaceFactory< GUM_SCALAR > & operator= (const O3InterfaceFactory< GUM_SCALAR > &src)
 
O3InterfaceFactory< GUM_SCALAR > & operator= (O3InterfaceFactory< GUM_SCALAR > &&src)
 
void buildInterfaces ()
 
void buildElements ()
 

Detailed Description

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

Bulds gum::prm:PRMInterface from gum::prm::o3prm::O3Interface.

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

Definition at line 59 of file O3InterfaceFactory.h.

Constructor & Destructor Documentation

◆ O3InterfaceFactory() [1/3]

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

Definition at line 38 of file O3InterfaceFactory_tpl.h.

42  :
43  __prm(&prm),
44  __o3_prm(&o3_prm), __solver(&solver), __errors(&errors) {
45  GUM_CONSTRUCTOR(O3InterfaceFactory);
46  }
O3InterfaceFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
O3NameSolver< GUM_SCALAR > * __solver

◆ O3InterfaceFactory() [2/3]

template<typename GUM_SCALAR >
INLINE gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::O3InterfaceFactory ( const O3InterfaceFactory< GUM_SCALAR > &  src)

Definition at line 49 of file O3InterfaceFactory_tpl.h.

50  :
51  __prm(src.__prm),
52  __o3_prm(src.__o3_prm), __solver(src.__solver), __errors(src.__errors) {
53  GUM_CONS_CPY(O3InterfaceFactory);
54  }
O3InterfaceFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
O3NameSolver< GUM_SCALAR > * __solver

◆ O3InterfaceFactory() [3/3]

template<typename GUM_SCALAR >
INLINE gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::O3InterfaceFactory ( O3InterfaceFactory< GUM_SCALAR > &&  src)

Definition at line 57 of file O3InterfaceFactory_tpl.h.

58  :
59  __prm(std::move(src.__prm)),
60  __o3_prm(std::move(src.__o3_prm)), __solver(std::move(src.__solver)),
61  __errors(std::move(src.__errors)) {
62  GUM_CONS_MOV(O3InterfaceFactory);
63  }
O3InterfaceFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
O3NameSolver< GUM_SCALAR > * __solver

◆ ~O3InterfaceFactory()

template<typename GUM_SCALAR >
INLINE gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::~O3InterfaceFactory ( )

Definition at line 66 of file O3InterfaceFactory_tpl.h.

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

66  {
67  GUM_DESTRUCTOR(O3InterfaceFactory);
68  }
O3InterfaceFactory(PRM< GUM_SCALAR > &prm, O3PRM &o3_prm, O3NameSolver< GUM_SCALAR > &solver, ErrorsContainer &errors)
+ Here is the call graph for this function:

Member Function Documentation

◆ __addArcs2Dag()

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

Definition at line 133 of file O3InterfaceFactory_tpl.h.

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

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkO3Interfaces().

133  {
134  // Adding arcs to the graph inheritance graph
135  for (auto& i : __o3_prm->interfaces()) {
136  if (i->superLabel().label() != "") {
137  if (!__solver->resolveInterface(i->superLabel())) { return false; }
138 
139  auto head = __nameMap[i->superLabel().label()];
140  auto tail = __nameMap[i->name().label()];
141 
142  try {
143  __dag.addArc(tail, head);
144 
145  } catch (InvalidDirectedCycle&) {
146  // Cyclic inheritance
147  O3PRM_INTERFACE_CYCLIC_INHERITANCE(
148  i->name(), i->superLabel(), *__errors);
149  return false;
150  }
151  }
152  }
153  return true;
154  }
O3NameSolver< GUM_SCALAR > * __solver
virtual void addArc(const NodeId tail, const NodeId head)
insert a new arc into the directed graph
Definition: DAG_inl.h:43
O3InterfaceList & interfaces()
Definition: O3prm.cpp:498
HashTable< std::string, gum::NodeId > __nameMap
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __addInterface2Dag()

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__addInterface2Dag ( )
private

Definition at line 114 of file O3InterfaceFactory_tpl.h.

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

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkO3Interfaces().

114  {
115  // Adding nodes to the type inheritance graph
116  for (auto& i : __o3_prm->interfaces()) {
117  auto id = __dag.addNode();
118  try {
119  __nameMap.insert(i->name().label(), id);
120  __interfaceMap.insert(i->name().label(), i.get());
121  __nodeMap.insert(id, i.get());
122 
123  } catch (DuplicateElement&) {
124  // Raised if duplicate type names
125  O3PRM_INTERFACE_DUPLICATE(i->name(), *__errors);
126  return false;
127  }
128  }
129  return true;
130  }
HashTable< NodeId, O3Interface *> __nodeMap
virtual NodeId addNode()
insert a new node and return its id
O3InterfaceList & interfaces()
Definition: O3prm.cpp:498
HashTable< std::string, gum::NodeId > __nameMap
HashTable< std::string, O3Interface *> __interfaceMap
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:

◆ __checkAttributeOverloadLegality()

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkAttributeOverloadLegality ( O3Interface i,
O3InterfaceElement elt 
)
private

Definition at line 234 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__prm, gum::prm::o3prm::O3Label::label(), gum::prm::o3prm::O3InterfaceElement::name(), gum::prm::o3prm::O3Interface::name(), and gum::prm::o3prm::O3InterfaceElement::type().

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkOverloadLegality().

235  {
236  const auto& real_i = __prm->getInterface(i.name().label());
237  const auto& real_elt = real_i.get(elt.name().label());
238 
239  const auto& sub_type = __prm->type(elt.type().label());
240  const auto& super_type = real_elt.type();
241 
242  if (!sub_type.isSubTypeOf(super_type)) {
243  O3PRM_INTERFACE_ILLEGAL_OVERLOAD(elt, *__errors);
244  return false;
245  }
246 
247  if (sub_type.name() == super_type.name()) {
248  O3PRM_INTERFACE_DUPLICATE_ELEMENT(elt, *__errors);
249  return false;
250  }
251 
252  return true;
253  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __checkCyclicReference()

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkCyclicReference ( O3Interface i,
O3InterfaceElement elt 
)
private

Definition at line 288 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__prm, gum::prm::o3prm::O3Label::label(), gum::prm::o3prm::O3Interface::name(), and gum::prm::o3prm::O3InterfaceElement::type().

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkInterfaceElement().

289  {
290  if (__prm->isInterface(elt.type().label())
291  || __prm->isClass(elt.type().label())) {
292  auto ref_type = (const PRMClassElementContainer< GUM_SCALAR >*)nullptr;
293 
294  if (__prm->isInterface(elt.type().label())) {
295  ref_type = &(__prm->getInterface(elt.type().label()));
296  } else {
297  ref_type = &(__prm->getClass(elt.type().label()));
298  }
299 
300  const auto& real_i = __prm->getInterface(i.name().label());
301 
302  if (&real_i == ref_type) {
303  O3PRM_INTERFACE_SELF_REFERENCE(i, elt, *__errors);
304  return false;
305  }
306 
307  if (ref_type->isSubTypeOf(real_i)) {
308  O3PRM_INTERFACE_ILLEGAL_SUB_REFERENCE(i, elt, *__errors);
309  return false;
310  }
311  }
312 
313  return true;
314  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __checkInterfaceElement()

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkInterfaceElement ( O3Interface i,
O3InterfaceElement elt 
)
private

Definition at line 195 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkCyclicReference(), gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkOverloadLegality(), gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__prm, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__solver, gum::prm::o3prm::O3InterfaceElement::isArray(), gum::prm::o3prm::O3Label::label(), gum::prm::o3prm::O3InterfaceElement::name(), gum::prm::o3prm::O3Interface::name(), and gum::prm::o3prm::O3InterfaceElement::type().

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::buildElements().

196  {
197  if (!__solver->resolveClassElement(elt.type())) { return false; }
198 
199  if (__prm->isType(elt.type().label()) && elt.isArray()) {
200  O3PRM_INTERFACE_ILLEGAL_ARRAY(elt.name(), *__errors);
201  return false;
202  }
203 
204  const auto& real_i = __prm->getInterface(i.name().label());
205 
206  if (real_i.exists(elt.name().label())) {
207  if (!__checkOverloadLegality(i, elt)) { return false; }
208  }
209 
210  if (!__checkCyclicReference(i, elt)) { return false; }
211 
212  return true;
213  }
bool __checkOverloadLegality(O3Interface &i, O3InterfaceElement &elt)
O3NameSolver< GUM_SCALAR > * __solver
bool __checkCyclicReference(O3Interface &i, O3InterfaceElement &elt)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __checkO3Interfaces()

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkO3Interfaces ( )
private

Definition at line 109 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__addArcs2Dag(), and gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__addInterface2Dag().

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::buildInterfaces().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __checkOverloadLegality()

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkOverloadLegality ( O3Interface i,
O3InterfaceElement elt 
)
private

Definition at line 216 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkAttributeOverloadLegality(), gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkReferenceOverloadLegality(), gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__prm, gum::prm::o3prm::O3Label::label(), gum::prm::o3prm::O3InterfaceElement::name(), and gum::prm::o3prm::O3Interface::name().

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkInterfaceElement().

217  {
218  const auto& real_i = __prm->getInterface(i.name().label());
219  const auto& real_elt = real_i.get(elt.name().label());
220 
222  return __checkAttributeOverloadLegality(i, elt);
223  }
224 
226  return __checkReferenceOverloadLegality(i, elt);
227  }
228 
229  return false;
230  }
bool __checkReferenceOverloadLegality(O3Interface &i, O3InterfaceElement &elt)
bool __checkAttributeOverloadLegality(O3Interface &i, O3InterfaceElement &elt)
static INLINE bool isAttribute(const PRMClassElement< GUM_SCALAR > &elt)
Returns true if obj_ptr is of type PRMAttribute.
static INLINE bool isReferenceSlot(const PRMClassElement< GUM_SCALAR > &elt)
Returns true if obj_ptr is of type PRMReferenceSlot.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __checkReferenceOverloadLegality()

template<typename GUM_SCALAR >
INLINE bool gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkReferenceOverloadLegality ( O3Interface i,
O3InterfaceElement elt 
)
private

Definition at line 257 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__prm, gum::prm::o3prm::O3Label::label(), gum::prm::o3prm::O3InterfaceElement::name(), gum::prm::o3prm::O3Interface::name(), and gum::prm::o3prm::O3InterfaceElement::type().

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkOverloadLegality().

258  {
259  const auto& real_i = __prm->getInterface(i.name().label());
260  const auto& real_elt =
261  static_cast< const PRMReferenceSlot< GUM_SCALAR >& >(
262  real_i.get(elt.name().label()));
263 
264  auto sub_type = (const PRMClassElementContainer< GUM_SCALAR >*)nullptr;
265 
266  if (__prm->isClass(elt.type().label())) {
267  sub_type = &(__prm->getClass(elt.type().label()));
268  } else {
269  sub_type = &(__prm->getInterface(elt.type().label()));
270  }
271 
272  auto super_type = &(real_elt.slotType());
273 
274  if (!sub_type->isSubTypeOf(*super_type)) {
275  O3PRM_INTERFACE_ILLEGAL_OVERLOAD(elt, *__errors);
276  return false;
277  }
278 
279  if (sub_type->name() == super_type->name()) {
280  O3PRM_INTERFACE_DUPLICATE_ELEMENT(elt, *__errors);
281  return false;
282  }
283 
284  return true;
285  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __setO3InterfaceCreationOrder()

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__setO3InterfaceCreationOrder ( )
private

Definition at line 158 of file O3InterfaceFactory_tpl.h.

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

Referenced by gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::buildInterfaces().

158  {
159  auto topo_order = __dag.topologicalOrder();
160  for (auto id = topo_order.rbegin(); id != topo_order.rend(); --id) {
161  __o3Interface.push_back(__nodeMap[*id]);
162  }
163  }
HashTable< NodeId, O3Interface *> __nodeMap
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:91
std::vector< O3Interface *> __o3Interface
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildElements()

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::buildElements ( )

Definition at line 166 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkInterfaceElement(), gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__o3Interface, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__prm, gum::prm::PRMFactory< GUM_SCALAR >::addAttribute(), gum::prm::PRMFactory< GUM_SCALAR >::addReferenceSlot(), gum::prm::PRMFactory< GUM_SCALAR >::continueInterface(), and gum::prm::PRMFactory< GUM_SCALAR >::endInterface().

166  {
167  PRMFactory< GUM_SCALAR > factory(__prm);
168 
169  for (auto i : __o3Interface) {
170  __prm->getInterface(i->name().label()).inheritInterface();
171 
172  factory.continueInterface(i->name().label());
173 
174  for (auto& elt : i->elements()) {
175  if (__checkInterfaceElement(*i, elt)) {
176  try {
177  if (__prm->isType(elt.type().label())) {
178  factory.addAttribute(elt.type().label(), elt.name().label());
179  } else {
180  factory.addReferenceSlot(
181  elt.type().label(), elt.name().label(), elt.isArray());
182  }
183 
184  } catch (OperationNotAllowed&) {
185  // Duplicate or Wrong overload
186  O3PRM_INTERFACE_DUPLICATE_ELEMENT(elt, *__errors);
187  }
188  }
189  }
190  factory.endInterface();
191  }
192  }
bool __checkInterfaceElement(O3Interface &i, O3InterfaceElement &elt)
std::vector< O3Interface *> __o3Interface
+ Here is the call graph for this function:

◆ buildInterfaces()

template<typename GUM_SCALAR >
INLINE void gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::buildInterfaces ( )

Definition at line 93 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__checkO3Interfaces(), gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__o3Interface, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__prm, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__setO3InterfaceCreationOrder(), gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__solver, gum::prm::PRMFactory< GUM_SCALAR >::endInterface(), and gum::prm::PRMFactory< GUM_SCALAR >::startInterface().

93  {
94  PRMFactory< GUM_SCALAR > factory(__prm);
95  if (__checkO3Interfaces()) {
97 
98  for (auto i : __o3Interface) {
99  if (__solver->resolveInterface(i->superLabel())) {
100  factory.startInterface(
101  i->name().label(), i->superLabel().label(), true);
102  factory.endInterface();
103  }
104  }
105  }
106  }
O3NameSolver< GUM_SCALAR > * __solver
std::vector< O3Interface *> __o3Interface
+ Here is the call graph for this function:

◆ operator=() [1/2]

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

Definition at line 72 of file O3InterfaceFactory_tpl.h.

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

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

72  {
73  if (this == &src) { return *this; }
74  __prm = src.__prm;
75  __o3_prm = src.__o3_prm;
76  __solver = src.__solver;
77  __errors = src.__errors;
78  return *this;
79  }
O3NameSolver< GUM_SCALAR > * __solver
+ Here is the caller graph for this function:

◆ operator=() [2/2]

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

Definition at line 83 of file O3InterfaceFactory_tpl.h.

References gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__errors, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__o3_prm, gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__prm, and gum::prm::o3prm::O3InterfaceFactory< 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  return *this;
90  }
O3NameSolver< GUM_SCALAR > * __solver

Member Data Documentation

◆ __dag

◆ __eltName

template<typename GUM_SCALAR>
HashTable< std::string, std::string > gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__eltName
private

Definition at line 83 of file O3InterfaceFactory.h.

◆ __errors

◆ __interfaceMap

template<typename GUM_SCALAR>
HashTable< std::string, O3Interface* > gum::prm::o3prm::O3InterfaceFactory< GUM_SCALAR >::__interfaceMap
private

◆ __nameMap

◆ __nodeMap

◆ __o3_prm

◆ __o3Interface

◆ __prm

◆ __solver


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