OpenLexocad  28.0
Variant.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Base/Color.h>
4 #include <Base/GlobalId.h>
5 #include <Base/Type.h>
6 #include <Base/md5.h>
7 #include <Draw/Arrowheads.h>
8 #include <Draw/DrawStyle.h>
9 #include <Draw/OglMaterial.h>
10 #include <Draw/Texture2.h>
11 #include <Draw/Texture2Transform.h>
12 #include <Draw/TextureCoordinateFunction.h>
13 #include <Draw/TextureCoordinateMapping.h>
14 #include <Geom/Ax2.h>
15 #include <Geom/Ax22d.h>
16 #include <Geom/Ax2d.h>
17 #include <Geom/BrepData.h>
19 #include <Geom/Dir.h>
20 #include <Geom/GTrsf.h>
21 #include <Geom/Pnt.h>
22 #include <Geom/Vec.h>
23 
24 #include <any>
25 #include <unordered_set>
26 
27 
28 
29 class QDateTime;
30 class QFont;
31 
32 namespace Base
33 {
34 class AbstractWriter;
35 class AbstractXMLReader;
36 class PersistenceVersion;
37 } // namespace Base
38 
39 namespace LxIfcBase
40 {
41 class LxIfcEntity;
42 }
43 
44 namespace Topo
45 {
46 class Shape;
47 }
48 
49 namespace Geom
50 {
51 class Geometry;
52 }
53 
54 namespace App
55 {
56 class Placement;
57 }
58 
59 namespace Sketcher
60 {
61 class Constraint;
62 }
63 
64 typedef std::shared_ptr<Topo::Shape> pShape;
65 typedef std::shared_ptr<Topo::Shape const> pConstShape;
66 
67 
68 
69 namespace Core
70 {
71 class DocObject;
72 class CoreDocument;
73 struct ImportMessageDataType;
74 struct SearchValue;
75 
76 
77 class LX_CORE_EXPORT Variant
78 {
79  explicit Variant(const char* s); // private to forbid creating Variant(const char *), which creates Variant of Bool type without this constructor
80 
81 public:
82  friend class VariantHandler;
83  friend class App::Placement;
84  friend class Sketcher::Constraint;
85  friend class Topo::Shape;
86 
87  enum Type
88  {
89  Undefined = 0,
159  User = 127
160  };
161 
163  Variant(const Variant& in);
164  explicit Variant(int i);
165  explicit Variant(long i);
166  explicit Variant(uint8_t i);
167  explicit Variant(uint32_t i);
168  explicit Variant(uint64_t i);
169  explicit Variant(double d);
170  // explicit Variant(const std::string &s);
171  explicit Variant(const wchar_t* s);
172  explicit Variant(const Base::String& s);
173  // explicit Variant(const char *s);
174  explicit Variant(bool b);
175  explicit Variant(const Base::Color& c);
176  explicit Variant(const Base::MColor& c);
177  explicit Variant(const std::vector<Base::Color>& cl);
178  explicit Variant(const std::vector<Base::MColor>& cl);
179  explicit Variant(const Draw::OglMaterial& m);
180  explicit Variant(const Draw::Texture2& t);
181  explicit Variant(const Draw::Texture2Transform& ttf);
182  explicit Variant(const Draw::TextureCoordinateMapping& tcm);
183  explicit Variant(const Draw::TextureCoordinateFunction& tcf);
184  explicit Variant(const Draw::DrawStyle& ds);
185  explicit Variant(const Draw::Arrowheads& ah);
186  explicit Variant(const std::list<std::string>& sl);
187  explicit Variant(const std::list<Base::String>& sl);
188  explicit Variant(const std::map<int, Draw::OglMaterial>& ml);
189  explicit Variant(const std::map<int, Draw::Texture2>& tl);
190  explicit Variant(const Geom::Ax1& ax1);
191  explicit Variant(const Geom::Ax2& ax2);
192  explicit Variant(const Geom::Ax2d& ax2d);
193  explicit Variant(const Geom::Ax22d& ax22d);
194  explicit Variant(Core::DocObject* o);
195  explicit Variant(const std::unordered_set<Core::DocObject*>& oset);
196  explicit Variant(const std::vector<Core::DocObject*>& objects);
197  explicit Variant(const Geom::Pnt& p);
198  explicit Variant(const Geom::Pnt2d& p);
199  explicit Variant(const Geom::Vec& v);
200  explicit Variant(const Geom::Dir& dir);
201  explicit Variant(const Geom::Trsf& t);
202  explicit Variant(const Geom::GTrsf& t);
203  explicit Variant(const std::vector<int>& ilist);
204  explicit Variant(const std::vector<uint8_t>& ilist);
205  explicit Variant(const std::list<Geom::Vec>& vlist);
206  explicit Variant(const std::vector<Geom::Pnt>& plist);
207  explicit Variant(const std::vector<Geom::Pnt2d>& plist);
208  explicit Variant(const std::list<Geom::Ax2>& vlist);
209  explicit Variant(const MD5& v);
210  explicit Variant(pBrepData data);
211  explicit Variant(const std::vector<pBrepData>& dataSet);
212  explicit Variant(pShape shape);
213  explicit Variant(pConstShape shape);
214  explicit Variant(const std::vector<double>& value);
215  explicit Variant(const std::list<std::list<Geom::Pnt>>& the_list);
216  explicit Variant(const Geom::CompoundPlaneAngle& compangle);
217  explicit Variant(const std::vector<Core::Variant>& varList);
218  explicit Variant(const Base::GlobalId& id);
219  explicit Variant(const std::shared_ptr<ImportMessageDataType> aData);
220  explicit Variant(const std::shared_ptr<LxIfcBase::LxIfcEntity> aEntity);
221  explicit Variant(const std::list<Core::DocObject*>& list);
222  explicit Variant(const std::vector<Geom::Geometry*>& aValue);
223  explicit Variant(Core::CoreDocument* value);
224  explicit Variant(const std::map<Base::Type, Core::DocObject*>& typeMap);
225  explicit Variant(const std::map<Base::String, Base::String>& stringMap);
226  explicit Variant(const std::map<Base::String, double>& string2doubleMap);
227 
228  ~Variant(void);
229 
230  bool operator==(const Variant& other) const;
231  bool operator!=(const Variant& other) const;
232 
235  virtual int getUserType() const { return (int)getType(); }
236  bool canConvert(Variant::Type t) const;
237  uint64_t toUInt64(bool* ok = 0) const;
238  uint32_t toUInt32(bool* ok = 0) const;
239  uint8_t toUInt8(bool* ok = 0) const;
240  int toInteger(bool* ok = 0) const;
241  long toLong(bool* ok = 0) const;
242  std::string toStdString(bool* ok = 0) const;
243  Base::String toString(bool* ok = 0) const;
244  double toDouble(bool* ok = 0) const;
245  bool toBool(bool* ok = 0) const;
246  Base::Color toColor(bool* ok = 0) const;
247  std::vector<Base::Color> toColorList(bool* ok = 0) const;
248  Draw::OglMaterial toMaterial(bool* ok = 0) const;
249  Draw::Texture2 toTexture2(bool* ok = 0) const;
250  Draw::Texture2Transform toTexture2Transform(bool* ok = 0) const;
251  Draw::TextureCoordinateMapping toTextureCoordinateMapping(bool* ok = 0) const;
252  Draw::TextureCoordinateFunction toTextureCoordinateFunction(bool* ok = 0) const;
253  Draw::DrawStyle toDrawStyle(bool* ok = 0) const;
254  Draw::Arrowheads toArrowheads(bool* ok = 0) const;
255  std::list<std::string> toStdStringList(bool* ok = 0) const;
256  std::list<Base::String> toStringList(bool* ok = 0) const;
257  std::map<int, Draw::OglMaterial> toMaterialList(bool* ok = 0) const;
258  std::map<int, Draw::Texture2> toTexture2List(bool* ok = 0) const;
259  Geom::Ax1 toAxis1(bool* ok = 0) const;
260  Geom::Ax2 toAxis2(bool* ok = 0) const;
261  Geom::Ax2d toAxis2d(bool* ok = 0) const;
262  Geom::Ax22d toAxis22d(bool* ok = 0) const;
263  Core::DocObject* toObject(bool* ok = 0) const;
264  Core::CoreDocument* toCoreDocument(bool* ok = 0) const;
265  std::unordered_set<Core::DocObject*> toObjectSet(bool* ok = 0) const;
266  std::vector<Core::DocObject*> toObjectVector(bool* ok = 0) const;
267  Geom::Pnt toPoint(bool* ok = 0) const;
268  Geom::Pnt2d toPoint2d(bool* ok = 0) const;
269  Geom::Vec toVector(bool* ok = 0) const;
270  Geom::Dir toDirection(bool* ok = 0) const;
271  Geom::Trsf toTransform(bool* ok = 0) const;
272  Geom::GTrsf toGTransform(bool* ok = 0) const;
273  std::list<Geom::Vec> toVectorList(bool* ok = 0) const;
274  std::vector<Geom::Pnt> toPointList(bool* ok = 0) const;
275  std::vector<Geom::Pnt2d> toPoint2dList(bool* ok = 0) const;
276  std::list<Geom::Ax2> toAxis2List(bool* ok = 0) const;
277  MD5 toMD5(bool* ok = 0) const;
278  pBrepData toBrepData(bool* ok = 0) const;
279  std::vector<pBrepData> toBrepDataSet(bool* ok = 0) const;
280  std::vector<int> toIntegerList(bool* ok = 0) const;
281  std::vector<uint8_t> toUInt8List(bool* ok = 0) const;
282  // pShape toShape(bool* ok = 0) const;
283  std::vector<double> toRealList(bool* ok = 0) const;
284  std::list<std::list<Geom::Pnt>> toListPointList(bool* ok = 0) const;
286  std::vector<Core::Variant> toVariantList(bool* ok = 0) const;
287  const std::shared_ptr<Core::ImportMessageDataType> toImportMessageDataType(bool* ok = 0) const;
288  std::shared_ptr<LxIfcBase::LxIfcEntity> toIfcEntity(bool* ok = 0) const;
289  std::list<Core::DocObject*> toLinkList(bool* ok = nullptr) const;
290  std::vector<Geom::Geometry*> toGeomGeometryList(bool* ok = nullptr) const;
291  std::map<Base::Type, Core::DocObject*> toTypeMap(bool* ok = nullptr) const;
292  std::map<Base::String, Base::String> toStringMap(bool* ok = nullptr) const;
293  std::map<Base::String, double> toString2DoubleMap(bool* ok = nullptr) const;
294 
297  Base::String getAsString(bool humanReadable = true, int* version = 0) const;
299  std::string getTypeAsString() const;
300 
301  bool hasValue() const;
302 
303  void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version) const;
306 
308  int type;
310  std::any data;
311 
312 #ifndef SWIG
313 
314  explicit Variant(const QFont& font);
315  explicit Variant(const QDateTime& dateTime);
316  explicit Variant(const std::list<QDateTime>& dateTime);
317  explicit Variant(const std::vector<std::vector<SearchValue>>& searchSettings);
318  explicit Variant(const std::vector<std::vector<std::vector<SearchValue>>>& searchSettingsVector);
319 
320  QFont toFont(bool* ok = 0) const;
321  QDateTime toDateTime(bool* ok = 0) const;
322  std::list<QDateTime> toDateTimeList(bool* ok = 0) const;
323  std::vector<std::vector<SearchValue>> toSearchSettings(bool* ok = 0) const;
324  std::vector<std::vector<std::vector<SearchValue>>> toSearchSettingsVector(bool* ok = 0) const;
325 
326  Base::GlobalId toGUID(bool* ok = 0) const;
327 
328  template <typename T>
329  T getValue(bool* ok) const
330  {
331  if (ok)
332  *ok = true;
333  return std::any_cast<T>(data);
334  }
335  template <>
336  int getValue<int>(bool* ok) const
337  {
338  return toInteger(ok);
339  }
340  template <>
341  uint32_t getValue<uint32_t>(bool* ok) const
342  {
343  return toUInt32(ok);
344  }
345  template <>
346  long getValue<long>(bool* ok) const
347  {
348  return toLong(ok);
349  }
350  template <>
351  std::string getValue<std::string>(bool* ok) const
352  {
353  return toStdString(ok);
354  }
355  template <>
356  double getValue<double>(bool* ok) const
357  {
358  return toDouble(ok);
359  }
360  template <>
361  bool getValue<bool>(bool* ok) const
362  {
363  return toBool(ok);
364  }
365  template <>
366  Base::Color getValue<Base::Color>(bool* ok) const
367  {
368  return toColor(ok);
369  }
370  template <>
371  Draw::OglMaterial getValue<Draw::OglMaterial>(bool* ok) const
372  {
373  return toMaterial(ok);
374  }
375  template <>
376  Draw::Texture2 getValue<Draw::Texture2>(bool* ok) const
377  {
378  return toTexture2(ok);
379  }
380  template <>
381  Draw::Texture2Transform getValue<Draw::Texture2Transform>(bool* ok) const
382  {
383  return toTexture2Transform(ok);
384  }
385  template <>
386  Draw::TextureCoordinateMapping getValue<Draw::TextureCoordinateMapping>(bool* ok) const
387  {
388  return toTextureCoordinateMapping(ok);
389  }
390  template <>
391  Draw::TextureCoordinateFunction getValue<Draw::TextureCoordinateFunction>(bool* ok) const
392  {
393  return toTextureCoordinateFunction(ok);
394  }
395  template <>
396  Draw::DrawStyle getValue<Draw::DrawStyle>(bool* ok) const
397  {
398  return toDrawStyle(ok);
399  }
400  template <>
401  Draw::Arrowheads getValue<Draw::Arrowheads>(bool* ok) const
402  {
403  return toArrowheads(ok);
404  }
405  template <>
406  std::list<std::string> getValue<std::list<std::string>>(bool* ok) const
407  {
408  return toStdStringList(ok);
409  }
410  template <>
411  std::list<Base::String> getValue<std::list<Base::String>>(bool* ok) const
412  {
413  return toStringList(ok);
414  }
415  template <>
416  std::map<int, Draw::OglMaterial> getValue<std::map<int, Draw::OglMaterial>>(bool* ok) const
417  {
418  return toMaterialList(ok);
419  }
420  template <>
421  std::map<int, Draw::Texture2> getValue<std::map<int, Draw::Texture2>>(bool* ok) const
422  {
423  return toTexture2List(ok);
424  }
425  template <>
426  Geom::Ax1 getValue<Geom::Ax1>(bool* ok) const
427  {
428  return toAxis1(ok);
429  }
430  template <>
431  Geom::Ax2 getValue<Geom::Ax2>(bool* ok) const
432  {
433  return toAxis2(ok);
434  }
435  template <>
436  Geom::Ax2d getValue<Geom::Ax2d>(bool* ok) const
437  {
438  return toAxis2d(ok);
439  }
440  template <>
441  Geom::Ax22d getValue<Geom::Ax22d>(bool* ok) const
442  {
443  return toAxis22d(ok);
444  }
445  /*template <>
446  Core::Placement getValue<Core::Placement>(bool* ok) const { return toPlacement(ok); } */
447  template <>
448  Core::DocObject* getValue<Core::DocObject*>(bool* ok) const
449  {
450  return toObject(ok);
451  }
452 
453 
454  template <>
455  std::unordered_set<Core::DocObject*> getValue<std::unordered_set<Core::DocObject*>>(bool* ok) const
456  {
457  return toObjectSet(ok);
458  }
459  template <>
460  std::vector<Core::DocObject*> getValue<std::vector<Core::DocObject*>>(bool* ok) const
461  {
462  return toObjectVector(ok);
463  }
464  template <>
465  std::map<Base::Type, DocObject*> getValue<std::map<Base::Type, DocObject*>>(bool* ok) const
466  {
467  return toTypeMap(ok);
468  }
469  template <>
470  std::map<Base::String, Base::String> getValue<std::map<Base::String, Base::String>>(bool* ok) const
471  {
472  return toStringMap(ok);
473  }
474  template <>
475  std::map<Base::String, double> getValue<std::map<Base::String, double>>(bool* ok) const
476  {
477  return toString2DoubleMap(ok);
478  }
479 
480  // template <>
481  // QFont getValue<QFont>(bool* ok) const { return toFont(ok); }
482  // template <>
483  // QDateTime getValue<QDateTime>(bool* ok) const { return toDateTime(ok); }
484  template <>
485  Geom::Pnt getValue<Geom::Pnt>(bool* ok) const
486  {
487  return toPoint(ok);
488  }
489  template <>
490  Geom::Pnt2d getValue<Geom::Pnt2d>(bool* ok) const
491  {
492  return toPoint2d(ok);
493  }
494  template <>
495  Geom::Vec getValue<Geom::Vec>(bool* ok) const
496  {
497  return toVector(ok);
498  }
499  template <>
500  Geom::Dir getValue<Geom::Dir>(bool* ok) const
501  {
502  return toDirection(ok);
503  }
504  template <>
505  Geom::Trsf getValue<Geom::Trsf>(bool* ok) const
506  {
507  return toTransform(ok);
508  }
509  template <>
510  Geom::GTrsf getValue<Geom::GTrsf>(bool* ok) const
511  {
512  return toGTransform(ok);
513  }
514  template <>
515  std::list<Geom::Vec> getValue<std::list<Geom::Vec>>(bool* ok) const
516  {
517  return toVectorList(ok);
518  }
519  template <>
520  std::vector<Geom::Pnt> getValue<std::vector<Geom::Pnt>>(bool* ok) const
521  {
522  return toPointList(ok);
523  }
524  template <>
525  std::vector<Geom::Pnt2d> getValue<std::vector<Geom::Pnt2d>>(bool* ok) const
526  {
527  return toPoint2dList(ok);
528  }
529  template <>
530  std::list<Geom::Ax2> getValue<std::list<Geom::Ax2>>(bool* ok) const
531  {
532  return toAxis2List(ok);
533  }
534  template <>
535  MD5 getValue<MD5>(bool* ok) const
536  {
537  return toMD5(ok);
538  }
539  template <>
540  pBrepData getValue<pBrepData>(bool* ok) const
541  {
542  return toBrepData(ok);
543  }
544  template <>
545  std::vector<pBrepData> getValue<std::vector<pBrepData>>(bool* ok) const
546  {
547  return toBrepDataSet(ok);
548  }
549  template <>
550  std::vector<int> getValue<std::vector<int>>(bool* ok) const
551  {
552  return toIntegerList(ok);
553  }
554  /*template <>
555  pShape getValue<pShape>(bool* ok) const { return toShape(ok); }*/
556  // template <>
557  // std::list<QDateTime> getValue< std::list<QDateTime> >(bool* ok) const { return toDateTimeList(ok); }
558  template <>
559  Base::GlobalId getValue<Base::GlobalId>(bool* ok) const
560  {
561  return toGUID(ok);
562  }
563  template <>
564  std::shared_ptr<LxIfcBase::LxIfcEntity> getValue<std::shared_ptr<LxIfcBase::LxIfcEntity>>(bool* ok) const
565  {
566  return toIfcEntity(ok);
567  }
568  template <>
569  std::list<Core::DocObject*> getValue<std::list<Core::DocObject*>>(bool* ok) const
570  {
571  return toLinkList(ok);
572  }
573  template <>
574  std::vector<Geom::Geometry*> getValue<std::vector<Geom::Geometry*>>(bool* ok) const
575  {
576  return toGeomGeometryList(ok);
577  }
578 
579 #endif
580 };
581 
582 LX_CORE_EXPORT std::ostream& operator<<(std::ostream& o, const Core::Variant& variant);
583 
584 class LX_CORE_EXPORT VariantHandler
585 {
586 public:
588  virtual Core::Variant create() = 0;
590  virtual bool isEqual(const Core::Variant& v1, const Core::Variant& v2, double tolerance = 1E-06) const = 0;
592  virtual int getType() = 0;
594  virtual Base::String getAsString(const Core::Variant& v) const = 0;
598  static bool registerVariantHandler(int type, VariantHandler* vhnd);
599 
600 private:
601  static std::map<int, VariantHandler*> registry;
602 };
603 
604 } // Namespace Core
CompoundPlaneAngle.h
Core::Variant::String
@ String
Definition: Variant.h:99
Core::Variant::StdString
@ StdString
Definition: Variant.h:98
Core::VariantHandler::registerVariantHandler
static bool registerVariantHandler(int type, VariantHandler *vhnd)
Registers a VariantHandler for a given type. returns true, if successful, false if a handler for this...
Core::Variant::DateTime
@ DateTime
Definition: Variant.h:120
Core::Variant::toDateTimeList
std::list< QDateTime > toDateTimeList(bool *ok=0) const
Core::Variant::toStringList
std::list< Base::String > toStringList(bool *ok=0) const
entt::registry
basic_registry< entity > registry
Alias declaration for the most common use case.
Definition: entt.hpp:3790
Core::Variant::toBrepDataSet
std::vector< pBrepData > toBrepDataSet(bool *ok=0) const
Vec.h
Base::Color
Definition: Color.h:39
Core::Variant::StringMap
@ StringMap
Definition: Variant.h:157
Core::Variant::Variant
Variant(const Draw::DrawStyle &ds)
Core::Variant::Arrowheads
@ Arrowheads
Definition: Variant.h:114
Core::Variant::getAsString
Base::String getAsString(bool humanReadable=true, int *version=0) const
Core::Variant::Variant
Variant(const Draw::TextureCoordinateMapping &tcm)
Core::Variant::toTextureCoordinateMapping
Draw::TextureCoordinateMapping toTextureCoordinateMapping(bool *ok=0) const
Core::Variant::Variant
Variant(const std::shared_ptr< ImportMessageDataType > aData)
Core::Variant::toAxis22d
Geom::Ax22d toAxis22d(bool *ok=0) const
Core::Variant::toObjectSet
std::unordered_set< Core::DocObject * > toObjectSet(bool *ok=0) const
Core::Variant::Variant
Variant(const std::vector< double > &value)
Core::CoreDocument
Definition: CoreDocument.h:269
Core::Variant::toDateTime
QDateTime toDateTime(bool *ok=0) const
Core::Variant::toBool
bool toBool(bool *ok=0) const
Core::Variant::toVectorList
std::list< Geom::Vec > toVectorList(bool *ok=0) const
Core::Variant::Variant
Variant(const std::list< Core::DocObject * > &list)
Core::Variant::Variant
Variant(const Draw::Texture2 &t)
Core::Variant::TextureCoordinateMapping
@ TextureCoordinateMapping
Definition: Variant.h:111
Base::MColor
Definition: Color.h:15
Core::Variant::toListPointList
std::list< std::list< Geom::Pnt > > toListPointList(bool *ok=0) const
Core::Variant::MColorList
@ MColorList
Definition: Variant.h:108
Core::Variant::toTypeMap
std::map< Base::Type, Core::DocObject * > toTypeMap(bool *ok=nullptr) const
Core::Variant::toIntegerList
std::vector< int > toIntegerList(bool *ok=0) const
Topo::Shape
Definition: Shape.h:132
Core::Variant::toPoint2d
Geom::Pnt2d toPoint2d(bool *ok=0) const
Core::Variant::Variant
Variant(const std::vector< Core::DocObject * > &objects)
Core::Variant::getUserType
virtual int getUserType() const
Must be overwritten for custom types.
Definition: Variant.h:235
Core::Variant::toGTransform
Geom::GTrsf toGTransform(bool *ok=0) const
Core::Variant::Variant
Variant(const QFont &font)
Core::Variant::UInt8List
@ UInt8List
Definition: Variant.h:91
Core::Variant::toAxis1
Geom::Ax1 toAxis1(bool *ok=0) const
Core::Variant::toTransform
Geom::Trsf toTransform(bool *ok=0) const
Ax2d.h
Core::VariantHandler::create
virtual Core::Variant create()=0
Creates a Variant.
Core::Variant::PointList
@ PointList
Definition: Variant.h:136
Core::Variant::Variant
Variant(const Geom::Trsf &t)
Geom::Vec
Defines a non-persistent vector in 3D space.
Definition: Vec.h:41
Core::Variant::toDirection
Geom::Dir toDirection(bool *ok=0) const
Core::Variant::Variant
Variant(pShape shape)
Base::GlobalId
Definition: GlobalId.h:28
Core::Variant::getType
Variant::Type getType() const
Core::Variant::Color
@ Color
Definition: Variant.h:105
Core::Variant::SearchSettings
@ SearchSettings
Definition: Variant.h:122
Core::Variant::Variant
Variant()
Core::Variant::toString
Base::String toString(bool *ok=0) const
Core::Variant::StdStringList
@ StdStringList
Definition: Variant.h:101
Core::Variant::toCompoundPlaneAngle
Geom::CompoundPlaneAngle toCompoundPlaneAngle(bool *ok=0) const
Core::Variant::RealList
@ RealList
Definition: Variant.h:144
Core::Variant::Variant
Variant(const Variant &in)
Core::Variant::Variant
Variant(pBrepData data)
Core::Variant::IntegerList
@ IntegerList
Definition: Variant.h:95
Core::Variant::toTextureCoordinateFunction
Draw::TextureCoordinateFunction toTextureCoordinateFunction(bool *ok=0) const
Core::Variant::GUID
@ GUID
Definition: Variant.h:149
Core::Variant::toIfcEntity
std::shared_ptr< LxIfcBase::LxIfcEntity > toIfcEntity(bool *ok=0) const
Core::Variant::Variant
Variant(Core::CoreDocument *value)
Core::Variant::DateTimeList
@ DateTimeList
Definition: Variant.h:121
Core::Variant::ObjectVector
@ ObjectVector
Definition: Variant.h:118
pBrepData
std::shared_ptr< Geom::BrepData > pBrepData
Definition: PropertyBrepData.h:5
Core::Variant::Type
Type
Definition: Variant.h:88
Core::Variant::Variant
Variant(const Draw::TextureCoordinateFunction &tcf)
Core::Variant::Variant
Variant(const Base::Color &c)
Core::Variant::Vector
@ Vector
Definition: Variant.h:131
Geom::CompoundPlaneAngle
A compound measure of plane angle in degrees, minutes, seconds, and optionally millionth-seconds of a...
Definition: CompoundPlaneAngle.h:13
Core::Variant::Font
@ Font
Definition: Variant.h:119
Core::Variant::Variant
Variant(const std::map< int, Draw::Texture2 > &tl)
Core::Variant::Placement
@ Placement
Definition: Variant.h:128
Geom::Ax1
Definition: Ax1.h:50
Core::Variant::operator==
bool operator==(const Variant &other) const
Core::Variant::Variant
Variant(const std::vector< Base::Color > &cl)
Core::Variant::IfcEntity
@ IfcEntity
Definition: Variant.h:151
pConstShape
std::shared_ptr< Topo::Shape const > pConstShape
Definition: Variant.h:65
Core::Variant::TextureCoordinateFunction
@ TextureCoordinateFunction
Definition: Variant.h:112
Core::Variant::toUInt64
uint64_t toUInt64(bool *ok=0) const
Ax22d.h
Core::Variant::canConvert
bool canConvert(Variant::Type t) const
Color.h
Core::Variant::Variant
Variant(const Draw::OglMaterial &m)
Core::Variant::ObjectSet
@ ObjectSet
Definition: Variant.h:117
Geom::Dir
Definition: Dir.h:45
Core::Variant::toBrepData
pBrepData toBrepData(bool *ok=0) const
Core::Variant::Variant
Variant(const std::list< std::list< Geom::Pnt >> &the_list)
Core::Variant::UInt32
@ UInt32
Definition: Variant.h:92
Core::Variant::toAxis2
Geom::Ax2 toAxis2(bool *ok=0) const
Core::Variant::Variant
Variant(const std::vector< pBrepData > &dataSet)
Core::Variant::Variant
Variant(const std::vector< Geom::Pnt > &plist)
Core::Variant::Variant
Variant(const std::shared_ptr< LxIfcBase::LxIfcEntity > aEntity)
Core::Variant::toCoreDocument
Core::CoreDocument * toCoreDocument(bool *ok=0) const
Core::Variant::toSearchSettingsVector
std::vector< std::vector< std::vector< SearchValue > > > toSearchSettingsVector(bool *ok=0) const
Core::Variant::toVector
Geom::Vec toVector(bool *ok=0) const
Core::Variant::Point
@ Point
Definition: Variant.h:129
Core::Variant::Axis2
@ Axis2
Definition: Variant.h:125
Core::Variant::Variant
Variant(const std::list< Geom::Vec > &vlist)
Base::toVector
Vector3< _Pr1 > toVector(const Vector3< _Pr2 > &v)
Definition: Vector3D.h:240
Core::Variant::toInteger
int toInteger(bool *ok=0) const
Core::Variant::toDouble
double toDouble(bool *ok=0) const
Core::Variant::L2D_Placement
@ L2D_Placement
Definition: Variant.h:145
Core::Variant::toColor
Base::Color toColor(bool *ok=0) const
Core::VariantHandler::isEqual
virtual bool isEqual(const Core::Variant &v1, const Core::Variant &v2, double tolerance=1E-06) const =0
Compares, if two Variants, both of the same type, are equal.
Core::DocObject
Definition: DocObject.h:54
pShape
std::shared_ptr< Topo::Shape > pShape
Definition: Variant.h:64
Core::Variant::ColorList
@ ColorList
Definition: Variant.h:107
Core::Variant::toAxis2d
Geom::Ax2d toAxis2d(bool *ok=0) const
Core::Variant::~Variant
~Variant(void)
Geom::GTrsf
Definition: GTrsf.h:49
Core::Variant::Variant
Variant(uint64_t i)
Core::Variant::String2DoubleMap
@ String2DoubleMap
Definition: Variant.h:158
Core::Variant::Texture2List
@ Texture2List
Definition: Variant.h:104
GlobalId.h
Core::Variant::Variant
Variant(const std::map< Base::String, Base::String > &stringMap)
Core::Variant::Variant
Variant(const std::list< QDateTime > &dateTime)
Core::Variant::Variant
Variant(bool b)
Core::Variant::Variant
Variant(const std::map< int, Draw::OglMaterial > &ml)
Core::Variant::Variant
Variant(const Base::GlobalId &id)
Base::PersistenceVersion
Definition: Persistence.h:13
Core::Variant::Variant
Variant(const Base::MColor &c)
Core::Variant::type
int type
The variant type.
Definition: Variant.h:308
Core::Variant::toAxis2List
std::list< Geom::Ax2 > toAxis2List(bool *ok=0) const
Core::Variant::UInt64
@ UInt64
Definition: Variant.h:93
Core
Definition: Base.h:5
Core::Variant::toUInt32
uint32_t toUInt32(bool *ok=0) const
Core::VariantHandler::getType
virtual int getType()=0
Returns the Variant type.
Core::Variant
Definition: Variant.h:78
Core::Variant::restore
void restore(Base::AbstractXMLReader &reader, Base::PersistenceVersion &version)
Core::Variant::GTransform
@ GTransform
Definition: Variant.h:134
Geom::Pnt
Defines a non-persistent 3D Cartesian point.
Definition: Pnt.h:44
BrepData.h
Geom::Ax2
Definition: Ax2.h:66
MD5
Definition: md5.h:70
Core::Variant::Variant
Variant(const std::vector< Core::Variant > &varList)
Core::Variant::Variant
Variant(pConstShape shape)
Core::Variant::toGUID
Base::GlobalId toGUID(bool *ok=0) const
Core::Variant::Variant
Variant(const wchar_t *s)
Base::AbstractWriter
Definition: Writer.h:13
Core::VariantHandler::getAsString
virtual Base::String getAsString(const Core::Variant &v) const =0
Returns a string representation of the value of the Variant.
Core::Variant::Variant
Variant(const Geom::CompoundPlaneAngle &compangle)
Core::Variant::toLinkList
std::list< Core::DocObject * > toLinkList(bool *ok=nullptr) const
Core::Variant::restore
void restore(Base::AbstractXMLReader &reader, Base::PersistenceVersion &version, const Base::String &variantType)
Core::Variant::Variant
Variant(const std::unordered_set< Core::DocObject * > &oset)
Core::Variant::Variant
Variant(const std::vector< std::vector< std::vector< SearchValue >>> &searchSettingsVector)
Core::Variant::toImportMessageDataType
const std::shared_ptr< Core::ImportMessageDataType > toImportMessageDataType(bool *ok=0) const
Core::Variant::Long
@ Long
Definition: Variant.h:96
Core::Variant::GeomGeometryList
@ GeomGeometryList
Definition: Variant.h:154
Pnt.h
Core::Variant::getValue
T getValue(bool *ok) const
Definition: Variant.h:329
LxIfcBase
Definition: Variant.h:40
Core::Variant::ImportData
@ ImportData
Definition: Variant.h:150
Core::Variant::Variant
Variant(const std::vector< Base::MColor > &cl)
Core::Variant::ConstShape
@ ConstShape
Definition: Variant.h:143
Core::Variant::ListPointList
@ ListPointList
Definition: Variant.h:146
Base::AbstractXMLReader
Definition: AbstractXMLReader.h:7
Core::Variant::Variant
Variant(const Geom::Vec &v)
Type.h
Core::Variant::VariantList
@ VariantList
Definition: Variant.h:148
Core::Variant::hasValue
bool hasValue() const
Core::Variant::Variant
Variant(const QDateTime &dateTime)
Core::Variant::Texture2Transform
@ Texture2Transform
Definition: Variant.h:110
Core::Variant::toStringMap
std::map< Base::String, Base::String > toStringMap(bool *ok=nullptr) const
Core::Variant::Variant
Variant(double d)
Core::Variant::Variant
Variant(const Geom::Ax2d &ax2d)
Core::Variant::toTexture2List
std::map< int, Draw::Texture2 > toTexture2List(bool *ok=0) const
Core::Variant::Axis2d
@ Axis2d
Definition: Variant.h:126
Core::Variant::BrepDataSet
@ BrepDataSet
Definition: Variant.h:141
Core::Variant::toGeomGeometryList
std::vector< Geom::Geometry * > toGeomGeometryList(bool *ok=nullptr) const
Core::Variant::toPoint
Geom::Pnt toPoint(bool *ok=0) const
Topo
Definition: DbgInfo.h:17
Core::Variant::toObjectVector
std::vector< Core::DocObject * > toObjectVector(bool *ok=0) const
Core::Variant::Variant
Variant(const Geom::Pnt2d &p)
Core::Variant::Variant
Variant(uint32_t i)
Geom::Ax2d
Definition: Ax2d.h:51
Core::Variant::Shape
@ Shape
Definition: Variant.h:142
Core::Variant::Variant
Variant(const Geom::Ax1 &ax1)
Core::Variant::UInt8
@ UInt8
Definition: Variant.h:90
Core::Variant::operator!=
bool operator!=(const Variant &other) const
Core::Variant::Object
@ Object
Definition: Variant.h:116
Core::Variant::Texture2
@ Texture2
Definition: Variant.h:109
md5.h
Core::Variant::StringList
@ StringList
Definition: Variant.h:102
Core::Variant::toMD5
MD5 toMD5(bool *ok=0) const
Core::Variant::toStdString
std::string toStdString(bool *ok=0) const
Core::Variant::toSearchSettings
std::vector< std::vector< SearchValue > > toSearchSettings(bool *ok=0) const
Core::Variant::Variant
Variant(const std::map< Base::Type, Core::DocObject * > &typeMap)
Core::Variant::Variant
Variant(const Geom::Pnt &p)
Core::Variant::Variant
Variant(const Draw::Arrowheads &ah)
Core::version
LX_CORE_EXPORT Version & version
Core::Variant::Bool
@ Bool
Definition: Variant.h:100
Core::VariantHandler
Definition: Variant.h:585
Core::Variant::toObject
Core::DocObject * toObject(bool *ok=0) const
Core::Variant::toVariantList
std::vector< Core::Variant > toVariantList(bool *ok=0) const
Core::Variant::Double
@ Double
Definition: Variant.h:97
Core::Variant::toUInt8List
std::vector< uint8_t > toUInt8List(bool *ok=0) const
Core::Variant::SearchSettingsVector
@ SearchSettingsVector
Definition: Variant.h:123
Core::Variant::Point2dList
@ Point2dList
Definition: Variant.h:137
Core::Variant::Variant
Variant(uint8_t i)
Core::Variant::VectorList
@ VectorList
Definition: Variant.h:135
Geom::Ax22d
Definition: Ax22d.h:51
Core::Variant::Integer
@ Integer
Definition: Variant.h:94
Core::Variant::Variant
Variant(const std::vector< Geom::Pnt2d > &plist)
Core::Variant::toPoint2dList
std::vector< Geom::Pnt2d > toPoint2dList(bool *ok=0) const
Core::Variant::toString2DoubleMap
std::map< Base::String, double > toString2DoubleMap(bool *ok=nullptr) const
Core::Variant::Variant
Variant(const std::vector< uint8_t > &ilist)
Core::Variant::toMaterialList
std::map< int, Draw::OglMaterial > toMaterialList(bool *ok=0) const
Core::Variant::MColor
@ MColor
Definition: Variant.h:106
Core::Variant::Point2d
@ Point2d
Definition: Variant.h:130
Core::Variant::BrepData
@ BrepData
Definition: Variant.h:140
Core::Variant::toUInt8
uint8_t toUInt8(bool *ok=0) const
Core::Variant::Variant
Variant(const Draw::Texture2Transform &ttf)
Core::Variant::Axis1
@ Axis1
Definition: Variant.h:124
Core::Variant::SketcherConstraintList
@ SketcherConstraintList
Definition: Variant.h:153
Core::Variant::getTypeAsString
std::string getTypeAsString() const
Returns variant type as string.
Core::Variant::CoreDocument
@ CoreDocument
Definition: Variant.h:155
Core::Variant::Variant
Variant(const std::map< Base::String, double > &string2doubleMap)
Geom::Trsf
Definition: Trsf.h:58
Core::Variant::Direction
@ Direction
Definition: Variant.h:132
Core::Variant::Md5
@ Md5
Definition: Variant.h:139
Base::String
A Utf-16 (windows) or ucs4 (unix) encoded string class.
Definition: String.h:18
Core::Variant::toRealList
std::vector< double > toRealList(bool *ok=0) const
Geom::Pnt2d
Defines a non-persistent 2D cartesian point.
Definition: Pnt2d.h:34
Core::Variant::toLong
long toLong(bool *ok=0) const
Ax2.h
Core::Variant::Variant
Variant(const Geom::Dir &dir)
Core::Variant::TypeMap
@ TypeMap
Definition: Variant.h:156
Core::Variant::Variant
Variant(Core::DocObject *o)
Core::Variant::Variant
Variant(const std::list< Geom::Ax2 > &vlist)
Core::Variant::Variant
Variant(const Base::String &s)
Core::Variant::Variant
Variant(int i)
Core::Variant::toFont
QFont toFont(bool *ok=0) const
Core::Variant::Variant
Variant(const Geom::Ax2 &ax2)
Core::Variant::toDrawStyle
Draw::DrawStyle toDrawStyle(bool *ok=0) const
Core::Variant::MaterialList
@ MaterialList
Definition: Variant.h:103
Core::Variant::Axis2List
@ Axis2List
Definition: Variant.h:138
Dir.h
Core::Variant::save
void save(Base::AbstractWriter &writer, Base::PersistenceVersion &save_version) const
Core::Variant::Variant
Variant(const Geom::Ax22d &ax22d)
Core::operator<<
LX_CORE_EXPORT std::ostream & operator<<(std::ostream &o, const Core::Variant &variant)
Core::Variant::Axis22d
@ Axis22d
Definition: Variant.h:127
Core::Variant::Variant
Variant(long i)
Core::Variant::toStdStringList
std::list< std::string > toStdStringList(bool *ok=0) const
Core::Variant::Material
@ Material
Definition: Variant.h:115
Core::Variant::Transform
@ Transform
Definition: Variant.h:133
Core::Variant::Variant
Variant(const std::vector< int > &ilist)
Sketcher
Definition: Variant.h:60
Core::Variant::Variant
Variant(const MD5 &v)
Core::Variant::toColorList
std::vector< Base::Color > toColorList(bool *ok=0) const
Core::Variant::Variant
Variant(const Geom::GTrsf &t)
Core::Variant::data
std::any data
The data.
Definition: Variant.h:310
GTrsf.h
Core::Variant::Variant
Variant(const std::vector< std::vector< SearchValue >> &searchSettings)
Core::Variant::DrawStyle
@ DrawStyle
Definition: Variant.h:113
Core::Variant::toMaterial
Draw::OglMaterial toMaterial(bool *ok=0) const
Core::VariantHandler::getVariantHandler
static VariantHandler * getVariantHandler(int type)
Returns the VariantHandler for this type.
Core::Variant::Variant
Variant(const std::list< Base::String > &sl)
Core::Variant::Variant
Variant(const std::list< std::string > &sl)
Core::Variant::Variant
Variant(const std::vector< Geom::Geometry * > &aValue)
Base
Definition: AbstractXMLReader.h:5
Core::Variant::toArrowheads
Draw::Arrowheads toArrowheads(bool *ok=0) const
Geom
Definition: PropertyContainer.h:33
Core::Variant::toPointList
std::vector< Geom::Pnt > toPointList(bool *ok=0) const
Core::Variant::LinkList
@ LinkList
Definition: Variant.h:152
Core::Variant::CompoundPlaneAngle
@ CompoundPlaneAngle
Definition: Variant.h:147
Core::Variant::toTexture2
Draw::Texture2 toTexture2(bool *ok=0) const
Core::Variant::toTexture2Transform
Draw::Texture2Transform toTexture2Transform(bool *ok=0) const