PropertyDefinitionVisitors.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @package robdekon
17  * @author Christoph Pohl ( christoph dot pohl at kit dot edu )
18  * @date 06.09.22
19  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 
24 
28 
32 
33 #include "Util.h"
34 
35 #define INPUT_GUARD(i) \
36  ARMARX_TRACE; \
37  ARMARX_CHECK_NOT_NULL(i); \
38  if (in_list_) \
39  return;
40 
41 inline std::string
42 joinNamespaces(const std::vector<std::string>& namespaces)
43 {
44  std::string result = "";
45  std::for_each(
46  namespaces.begin(), namespaces.end(), [&result](const auto& i) { result += i + "."; });
47  return result;
48 }
49 
51 {
52 
53  void
55  {
56  INPUT_GUARD(i);
58  auto name = global_namespace_ + pathToName(i);
59  property_user_->getProperty(value->getValue(), name);
60  }
61 
62  void
64  {
65  INPUT_GUARD(f);
67  auto name = global_namespace_ + pathToName(f);
68  property_user_->getProperty(value->getValue(), name);
69  }
70 
71  void
73  {
74  INPUT_GUARD(d);
76  auto name = global_namespace_ + pathToName(d);
77  property_user_->getProperty(value->getValue(), name);
78  }
79 
80  void
82  {
83  INPUT_GUARD(b);
85  auto name = global_namespace_ + pathToName(b);
86  property_user_->getProperty(value->getValue(), name);
87  }
88 
89  void
91  {
92  INPUT_GUARD(string);
94  auto name = global_namespace_ + pathToName(string);
95  auto property = property_user_->getProperty<std::string>(name);
96  if (not property.getValue().empty())
97  {
98  value->getValue() = property.getValueAndReplaceAllVars();
99  }
100  else
101  {
102  value->getValue() = "";
103  }
104  }
105 
106  void
108  {
109  ARMARX_TRACE;
110  in_list_ = true;
111  const auto& name = global_namespace_ + pathToName(o);
112  const auto& type = type::List::DynamicCast(t)->getAcceptedType()->getDescriptor();
113  if (std::find(implementedListDescriptors.begin(), implementedListDescriptors.end(), type) ==
114  implementedListDescriptors.end())
115  {
116  return;
117  }
118  auto old_list = data::List::DynamicCast(o);
119  old_list->clear();
120  auto get_list = [this, &name]() -> std::vector<std::string>
121  {
122  std::string list;
123  property_user_->getProperty(list, name);
124  return simox::alg::split(list, ",");
125  };
126  int i = 0;
127  std::vector<std::string> vector = get_list();
128  std::for_each(vector.begin(),
129  vector.end(),
130  [&old_list, &i, &type](const auto& el)
131  {
132  old_list->addElement(factories::VariantHelper::make(type)->from_string(
133  el, old_list->getPath().withIndex(i)));
134  i++;
135  });
136  }
137 
138  void
140  {
141  in_list_ = false;
142  }
143 
144  void
146  {
147  ARMARX_TRACE;
148  auto data = data::Int::DynamicCastAndCheck(enumData);
149  auto name = global_namespace_ + pathToName(enumData);
150  property_user_->getProperty(data->getValue(), name);
151  }
152 
153  void
155  {
156  ARMARX_WARNING << "Unknown data encountered: "
157  << (unknown ? unknown->getFullName() : "nullptr");
158  }
159 
161  const armarx::PropertyUser& defs,
162  const std::string& globalNamespace) :
163  property_user_(std::experimental::make_observer(&defs)),
164  global_namespace_(globalNamespace),
165  in_list_(false)
166  {
167  }
168 
169  void
171  {
172  ARMARX_TRACE;
173  in_list_ = true;
174  const auto& name = global_namespace_ + pathToName(o);
175  const auto& type = type::Dict::DynamicCast(t)->getAcceptedType()->getDescriptor();
176  if (std::find(implementedListDescriptors.begin(), implementedListDescriptors.end(), type) ==
177  implementedListDescriptors.end())
178  {
179  return;
180  }
181  auto old_dict = data::Dict::DynamicCast(o);
182  old_dict->clear();
183  auto get_list = [this, &name]() -> std::vector<std::string>
184  {
185  std::string list;
186  property_user_->getProperty(list, name);
187  return simox::alg::split(list, ",");
188  };
189  std::vector<std::string> vector = get_list();
190  std::for_each(
191  vector.begin(),
192  vector.end(),
193  [&old_dict, &type](const auto& el)
194  {
195  auto key_value = simox::alg::split(el, ":");
196  old_dict->addElement(
197  key_value.front(),
198  factories::VariantHelper::make(type)->from_string(
199  key_value.back(), old_dict->getPath().withElement(key_value.front())));
200  });
201  }
202 
203  void
205  TypeInput& /*elementType*/)
206  {
207  in_list_ = false;
208  }
209 
212  {
214  }
215 
218  {
220  }
221 
224  {
226  }
227 
230  {
232  }
233 
236  {
238  }
239 
242  {
244  }
245 
246  void
248  {
249  INPUT_GUARD(matrix);
251  const auto name = global_namespace_ + pathToName(matrix);
252  const std::string property = property_user_->getProperty<std::string>(name).getValue();
253  const auto vec = simox::alg::to_eigen_vec(property, ", ");
254  ARMARX_CHECK_EQUAL(sizeof(float) * vec.size(), data->getDataAsVector().size())
255  << "Matrix recovered from properties does not match the aron type";
256 
257  data->setData(data->getDataAsVector().size(),
258  reinterpret_cast<const unsigned char*>(vec.data()));
259  }
260 
261  void
263  {
264  INPUT_GUARD(quaternion);
265  auto value = data::NDArray::DynamicCastAndCheck(quaternion);
266  auto name = global_namespace_ + pathToName(quaternion);
267  const std::string property = property_user_->getProperty<std::string>(name).getValue();
268  const Eigen::Quaternion quat(simox::alg::to_eigen_vec(property, ", ").data());
270  value->setData(newQuat->getDataAsVector().size(), newQuat->getData());
271  }
272 
273  void
275  {
276  INPUT_GUARD(i);
277  if (global_namespace_.empty())
278  {
280  global_namespace_ = t->getObjectNameWithoutNamespace() + ".";
281  }
282  }
283 
285  const PropertyDefinitionsPtr& defs,
286  const std::string& globalNamespace) :
287  property_definitions_(std::experimental::make_observer(defs.get())),
288  global_namespace_(globalNamespace)
289  {
290  }
291 
292  void
294  const type::IntPtr& /*unused*/)
295  {
296  INPUT_GUARD(i);
297  auto name = global_namespace_ + pathToName(i);
298  property_definitions_->defineOptionalProperty<int>(name, i->getValue());
299  }
300 
301  void
303  const type::FloatPtr& /*unused*/)
304  {
305  INPUT_GUARD(f);
306  auto name = global_namespace_ + pathToName(f);
307  property_definitions_->defineOptionalProperty<float>(name, f->getValue());
308  }
309 
310  void
312  const type::DoublePtr& /*unused*/)
313  {
314  INPUT_GUARD(d);
315  auto name = global_namespace_ + pathToName(d);
316  property_definitions_->defineOptionalProperty<double>(name, d->getValue());
317  }
318 
319  void
321  const type::BoolPtr& /*unused*/)
322  {
323  INPUT_GUARD(b);
324  auto name = global_namespace_ + pathToName(b);
325  property_definitions_->defineOptionalProperty<bool>(name, b->getValue());
326  }
327 
328  void
330  const type::StringPtr& /*type*/)
331  {
332  INPUT_GUARD(string);
333  auto name = global_namespace_ + pathToName(string);
334  property_definitions_->defineOptionalProperty<std::string>(name, string->getValue());
335  }
336 
337  void
339  const type::IntEnumPtr& t)
340  {
341  INPUT_GUARD(i);
342  auto name = global_namespace_ + pathToName(i);
343  property_definitions_->defineOptionalProperty<int>(name, i->getValue())
344  .map(t->getAcceptedValueMap());
345  }
346 
347  void
349  const type::ListPtr& t)
350  {
351  ARMARX_TRACE;
353  in_list_ = true;
354  const auto& name = global_namespace_ + pathToName(l);
355  const auto& type = t->getAcceptedType()->getDescriptor();
356  if (std::find(implementedListDescriptors.begin(), implementedListDescriptors.end(), type) ==
357  implementedListDescriptors.end())
358  {
359  return;
360  }
361  const auto& input = l->getElements();
362  std::string str;
363  std::vector<std::string> vector;
364  std::transform(input.begin(),
365  input.end(),
366  std::back_inserter(vector),
367  [&type](const auto& el)
368  { return factories::VariantHelper::make(type)->to_string(el); });
369  str = simox::alg::to_string(vector, ", ");
370  property_definitions_->defineOptionalProperty<std::string>(name, str);
371  }
372 
373  void
375  const type::ListPtr& /*unused*/)
376  {
377  in_list_ = false;
378  }
379 
380  void
382  const type::DictPtr& t)
383  {
384  ARMARX_TRACE;
385  in_list_ = true;
386  const auto& name = global_namespace_ + pathToName(d);
387  const auto& type = t->getAcceptedType()->getDescriptor();
388  if (std::find(implementedListDescriptors.begin(), implementedListDescriptors.end(), type) ==
389  implementedListDescriptors.end())
390  {
391  return;
392  }
393  const auto& input = d->getElements();
394  std::stringstream ss;
395  for (const auto& [key, el] : input)
396  {
397  ss << key << ":";
398  ss << factories::VariantHelper::make(type)->to_string(el);
399  ss << ",";
400  }
401  std::string value = ss.str();
402  if (not value.empty())
403  {
404  value.pop_back();
405  }
406  property_definitions_->defineOptionalProperty<std::string>(name, value);
407  }
408 
409  void
411  const type::DictPtr& /*unused*/)
412  {
413  in_list_ = false;
414  }
415 
416  void
418  const type::ObjectPtr& type)
419  {
420  INPUT_GUARD(obj);
421  if (global_namespace_.empty())
422  {
423  global_namespace_ = type->getObjectNameWithoutNamespace() + ".";
424  }
425  }
426 
427  void
429  const type::QuaternionPtr& /*type*/)
430  {
431  INPUT_GUARD(quaternion);
432  auto name = global_namespace_ + pathToName(quaternion);
433  const auto quat =
434  data::converter::AronEigenConverter::ConvertToQuaternion<float>(quaternion);
435  property_definitions_->defineOptionalProperty<std::string>(
436  name, simox::alg::to_string(quat.coeffs(), ", "));
437  }
438 
439  void
441  const type::MatrixPtr& /*type*/)
442  {
443  INPUT_GUARD(matrix);
444  auto name = global_namespace_ + pathToName(matrix);
445  auto shape = matrix->getShape();
446  // TODO: why is shape 3 for a matrix?
447  if (shape.size() != 3 or (shape[0] != 1 and shape[1] != 1))
448  {
449  ARMARX_WARNING << "Matrix is not a vector, ignoring";
450  return;
451  }
452  const auto mat = data::converter::AronEigenConverter::ConvertToMatrix<float>(*matrix);
453  std::string value = "";
454  for (int i = 0; i < shape[0]; i++)
455  {
456  for (int j = 0; j < shape[1]; j++)
457  {
458  value += std::to_string(mat(i, j)) + ", ";
459  }
460  }
461  if (not value.empty())
462  {
463  value.pop_back();
464  value.pop_back();
465  }
466  property_definitions_->defineOptionalProperty<std::string>(name, value);
467  }
468 } // namespace armarx::aron::component_config
469 
470 #undef INPUT_GUARD
armarx::aron::type::MatrixPtr
std::shared_ptr< class Matrix > MatrixPtr
Definition: forward_declarations.h:20
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitListOnEnter
void visitListOnEnter(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:107
str
std::string str(const T &t)
Definition: UserAssistedSegmenterGuiWidgetController.cpp:42
Util.h
armarx::aron::component_config
Definition: PropertyDefinitionVisitors.cpp:50
armarx::aron::component_config::getObjectElements
std::map< std::string, std::pair< typename std::remove_const< DataInputT >::type, typename std::remove_const< TypeInputT >::type > > getObjectElements(DataInputT &o, TypeInputT &t)
Definition: Util.h:50
armarx::aron::component_config::PropertyDefinitionGetterVisitor::getDescriptor
type::Descriptor getDescriptor(DataInput &o, TypeInput &t) override
Definition: PropertyDefinitionVisitors.cpp:241
armarx::aron::component_config::PropertyDefinitionSetterVisitor::visitAronVariant
void visitAronVariant(const data::IntPtr &, const type::IntEnumPtr &) override
Definition: PropertyDefinitionVisitors.cpp:338
armarx::aron::component_config::getTupleElements
std::vector< std::pair< typename std::remove_const< DataInputT >::type, typename std::remove_const< TypeInputT >::type > > getTupleElements(DataInputT &o, TypeInputT &t)
Definition: Util.h:143
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitInt
void visitInt(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:54
armarx::aron::component_config::PropertyDefinitionSetterVisitor::PropertyDefinitionSetterVisitor
PropertyDefinitionSetterVisitor(const armarx::PropertyDefinitionsPtr &defs, const std::string &global_namespace="")
Definition: PropertyDefinitionVisitors.cpp:284
PropertyDefinitionVisitors.h
list
list(APPEND SOURCES ${QT_RESOURCES}) set(COMPONENT_LIBS ArmarXGui ArmarXCoreObservers ArmarXCoreEigen3Variants PlotterController $
Definition: CMakeLists.txt:49
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitMatrix
void visitMatrix(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:247
ARMARX_CHECK_NOT_NULL
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
Definition: ExpressionException.h:206
armarx::aron::data::converter::AronEigenConverter::ConvertFromQuaternion
static data::NDArrayPtr ConvertFromQuaternion(const Eigen::Quaternion< T > &quat)
Definition: EigenConverter.h:139
armarx::Factory< VariantHelper, type::Descriptor >::make
static auto make(const type::Descriptor &s, Args &&... args)
Definition: SelfRegisteringFactory.h:58
armarx::aron::component_config::getDictElements
std::map< std::string, std::pair< typename std::remove_const< DataInputT >::type, typename std::remove_const< TypeInputT >::type > > getDictElements(DataInputT &o, TypeInputT &t)
Definition: Util.h:73
armarx::aron::component_config::PropertyDefinitionSetterVisitor::visitAronVariantOnEnter
void visitAronVariantOnEnter(const data::ListPtr &, const type::ListPtr &) override
Definition: PropertyDefinitionVisitors.cpp:348
std::experimental::fundamentals_v2::make_observer
observer_ptr< _Tp > make_observer(_Tp *__p) noexcept
armarx::aron::data::RecursiveTypedVisitor< data::VariantPtr, const type::VariantPtr >::MapElements
std::map< std::string, std::pair< DataInputNonConst, TypeInputNonConst > > MapElements
Definition: RecursiveVisitor.h:86
armarx::aron::data::NDArrayPtr
std::shared_ptr< NDArray > NDArrayPtr
Definition: NDArray.h:46
armarx::aron::data::DoublePtr
std::shared_ptr< Double > DoublePtr
Definition: forward_declarations.h:32
armarx::aron::component_config::PropertyDefinitionGetterVisitor::getPairElements
PairElements getPairElements(DataInput &o, TypeInput &t) override
Definition: PropertyDefinitionVisitors.cpp:229
armarx::aron::data::RecursiveTypedVisitor< data::VariantPtr, const type::VariantPtr >::PairElements
std::pair< std::pair< DataInputNonConst, TypeInputNonConst >, std::pair< DataInputNonConst, TypeInputNonConst > > PairElements
Definition: RecursiveVisitor.h:88
armarx::aron::data::detail::SpecializedVariantBase< data::dto::AronInt, Int >::DynamicCastAndCheck
static PointerType DynamicCastAndCheck(const VariantPtr &n)
Definition: SpecializedVariant.h:135
INPUT_GUARD
#define INPUT_GUARD(i)
Definition: PropertyDefinitionVisitors.cpp:35
armarx::aron::type::FloatPtr
std::shared_ptr< class Float > FloatPtr
Definition: forward_declarations.h:29
armarx::aron::component_config::PropertyDefinitionGetterVisitor::PropertyDefinitionGetterVisitor
PropertyDefinitionGetterVisitor(const armarx::PropertyUser &defs, const std::string &global_namespace="")
Definition: PropertyDefinitionVisitors.cpp:160
armarx::VariantType::Quaternion
const VariantTypeId Quaternion
Definition: Pose.h:39
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitString
void visitString(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:90
VariantHelperFactory.h
armarx::aron::data::detail::SpecializedVariantBase< data::dto::List, List >::DynamicCast
static PointerType DynamicCast(const VariantPtr &n)
Definition: SpecializedVariant.h:117
armarx::aron::component_config::PropertyDefinitionSetterVisitor::visitAronVariantOnExit
void visitAronVariantOnExit(const data::ListPtr &, const type::ListPtr &) override
Definition: PropertyDefinitionVisitors.cpp:374
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitIntEnum
void visitIntEnum(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:145
armarx::aron::type::ListPtr
std::shared_ptr< class List > ListPtr
Definition: forward_declarations.h:14
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:69
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitUnknown
void visitUnknown(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:154
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:926
armarx::aron::type::StringPtr
std::shared_ptr< class String > StringPtr
Definition: forward_declarations.h:31
armarx::aron::data::RecursiveTypedVisitor< data::VariantPtr, const type::VariantPtr >::TypeInput
typename TypedVisitorBase< data::VariantPtr, const type::VariantPtr >::TypeInput TypeInput
Definition: RecursiveVisitor.h:81
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitFloat
void visitFloat(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:63
armarx::aron::type::detail::SpecializedVariantBase< type::dto::List, List >::DynamicCast
static List & DynamicCast(Variant &n)
Definition: SpecializedVariant.h:106
PropertyUser.h
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:19
armarx::aron::component_config::PropertyDefinitionGetterVisitor::getObjectElements
MapElements getObjectElements(DataInput &o, TypeInput &t) override
Definition: PropertyDefinitionVisitors.cpp:211
All.h
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitObjectOnEnter
void visitObjectOnEnter(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:274
armarx::aron::type::DictPtr
std::shared_ptr< class Dict > DictPtr
Definition: forward_declarations.h:13
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitDouble
void visitDouble(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:72
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitDictOnEnter
void visitDictOnEnter(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:170
EigenConverter.h
armarx::aron::component_config::PropertyDefinitionGetterVisitor::getTupleElements
TupleElements getTupleElements(DataInput &o, TypeInput &t) override
Definition: PropertyDefinitionVisitors.cpp:235
armarx::aron::type::BoolPtr
std::shared_ptr< class Bool > BoolPtr
Definition: forward_declarations.h:32
armarx::aron::type::List::getAcceptedType
VariantPtr getAcceptedType() const
Definition: List.cpp:43
armarx::to_string
const std::string & to_string(const std::string &s)
Definition: StringHelpers.h:40
armarx::aron::data::RecursiveTypedVisitor< data::VariantPtr, const type::VariantPtr >::DataInput
typename TypedVisitorBase< data::VariantPtr, const type::VariantPtr >::DataInput DataInput
Definition: RecursiveVisitor.h:80
armarx::aron::component_config::getPairElements
std::pair< std::pair< typename std::remove_const< DataInputT >::type, typename std::remove_const< TypeInputT >::type >, std::pair< typename std::remove_const< DataInputT >::type, typename std::remove_const< TypeInputT >::type > > getPairElements(DataInputT &o, TypeInputT &t)
Definition: Util.h:122
armarx::aron::data::DictPtr
std::shared_ptr< Dict > DictPtr
Definition: Dict.h:41
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitBool
void visitBool(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:81
armarx::aron::component_config::getListElements
std::vector< std::pair< typename std::remove_const< DataInputT >::type, typename std::remove_const< TypeInputT >::type > > getListElements(DataInputT &o, TypeInputT &t)
Definition: Util.h:97
PropertyDefinitionContainer.h
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitListOnExit
void visitListOnExit(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:139
armarx::aron::component_config::PropertyDefinitionGetterVisitor::getDictElements
MapElements getDictElements(DataInput &o, TypeInput &t) override
Definition: PropertyDefinitionVisitors.cpp:217
armarx::aron::component_config::pathToName
std::string pathToName(const std::shared_ptr< data::Variant > &v)
Definition: Util.h:36
std
Definition: Application.h:66
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::transform
auto transform(const Container< InputT, Alloc > &in, OutputT(*func)(InputT const &)) -> Container< OutputT, typename std::allocator_traits< Alloc >::template rebind_alloc< OutputT > >
Convenience function (with less typing) to transform a container of type InputT into the same contain...
Definition: algorithm.h:315
armarx::aron::type::detail::SpecializedVariantBase< type::dto::AronObject, Object >::DynamicCastAndCheck
static std::shared_ptr< Object > DynamicCastAndCheck(const VariantPtr &n)
Definition: SpecializedVariant.h:124
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitQuaternion
void visitQuaternion(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:262
armarx::aron::data::FloatPtr
std::shared_ptr< Float > FloatPtr
Definition: forward_declarations.h:29
armarx::aron::type::Dict::getAcceptedType
VariantPtr getAcceptedType() const
Definition: Dict.cpp:42
armarx::aron::data::RecursiveTypedVisitor< data::VariantPtr, const type::VariantPtr >::ListElements
std::vector< std::pair< DataInputNonConst, TypeInputNonConst > > ListElements
Definition: RecursiveVisitor.h:87
armarx::aron::data::StringPtr
std::shared_ptr< String > StringPtr
Definition: forward_declarations.h:35
armarx::aron::type::IntEnumPtr
std::shared_ptr< IntEnum > IntEnumPtr
Definition: IntEnum.h:36
armarx::aron::type::ObjectPtr
std::shared_ptr< Object > ObjectPtr
Definition: Object.h:36
armarx::aron::data::IntPtr
std::shared_ptr< Int > IntPtr
Definition: forward_declarations.h:23
ARMARX_CHECK_EQUAL
#define ARMARX_CHECK_EQUAL(lhs, rhs)
This macro evaluates whether lhs is equal (==) rhs and if it turns out to be false it will throw an E...
Definition: ExpressionException.h:130
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:186
armarx::PropertyUser
Abstract PropertyUser class.
Definition: PropertyUser.h:62
armarx::aron::type::QuaternionPtr
std::shared_ptr< class Quaternion > QuaternionPtr
Definition: forward_declarations.h:21
armarx::aron::type::IntPtr
std::shared_ptr< class Int > IntPtr
Definition: forward_declarations.h:27
armarx::aron::component_config::PropertyDefinitionGetterVisitor::visitDictOnExit
void visitDictOnExit(DataInput &elementData, TypeInput &elementType) override
Definition: PropertyDefinitionVisitors.cpp:204
armarx::aron::type::Descriptor
Descriptor
Definition: Descriptor.h:76
armarx::aron::type::DoublePtr
std::shared_ptr< class Double > DoublePtr
Definition: forward_declarations.h:30
joinNamespaces
std::string joinNamespaces(const std::vector< std::string > &namespaces)
Definition: PropertyDefinitionVisitors.cpp:42
armarx::aron::component_config::PropertyDefinitionGetterVisitor::getListElements
ListElements getListElements(DataInput &o, TypeInput &t) override
Definition: PropertyDefinitionVisitors.cpp:223
armarx::aron::data::ListPtr
std::shared_ptr< List > ListPtr
Definition: List.h:40
PropertyDefinition.h
armarx::aron::data::ConstTypedVariantVisitor::GetDescriptor
static type::Descriptor GetDescriptor(DataInput &i, TypeInput &j)
Definition: VariantVisitor.cpp:117
armarx::split
std::vector< std::string > split(const std::string &source, const std::string &splitBy, bool trimElements=false, bool removeEmptyElements=false)
Definition: StringHelpers.cpp:36
armarx::aron::data::RecursiveTypedVisitor< data::VariantPtr, const type::VariantPtr >::TupleElements
std::vector< std::pair< DataInputNonConst, TypeInputNonConst > > TupleElements
Definition: RecursiveVisitor.h:89
armarx::aron::data::BoolPtr
std::shared_ptr< Bool > BoolPtr
Definition: forward_declarations.h:38