ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
PdmsTools.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 // cloudViewer
11 #include <CVConst.h>
12 #include <CVGeom.h>
13 
14 // system
15 #include <string.h>
16 
17 #include <list>
18 #include <ostream>
19 #include <vector>
20 
21 namespace PdmsTools {
22 const int c_max_str_length = 2048;
23 
25 enum Token {
26  // DO NOT MODIFIY TOKENS ORDER !!!!!!!
27  // Some token for parser use
35  // Some keywords
39  // PDMS commands
49  // Coordinates systems
59  // PDMS hierarchy
61  PDMS_LOWER_HIER_LEVEL, // purely virtual (non PDMS token)
68  // PDMS elements
82  // Attributes
104  // Coordinates elements
107  // Units system
110 };
111 
112 namespace PdmsToken {
113 static bool isCommand(Token t) { return (t >= PDMS_NAME && t <= PDMS_RETURN); }
114 static bool isDesignElement(Token t) {
115  return (t >= PDMS_SCYLINDER && t <= PDMS_VERTEX);
116 }
117 static bool isGroupElement(Token t) {
118  return (t >= PDMS_GROUP && t <= PDMS_SUBSTRUCTURE);
119 }
120 static bool isElement(Token t) {
121  return (isDesignElement(t) || isGroupElement(t));
122 }
123 static bool isCoordinate(Token t) { return (t >= PDMS_EST && t <= PDMS_Z); }
124 static bool isParameter(Token t) {
125  return (t >= PDMS_DIAMETER && t <= PDMS_BOTTOM_DIAMETER);
126 }
127 static bool isSpaceSystem(Token t) {
128  return (t >= PDMS_POSITION && t <= PDMS_ORIENTATION);
129 }
130 static bool isUnit(Token t) {
131  return (t == PDMS_MILLIMETRE || t == PDMS_METRE);
132 }
133 }; // namespace PdmsToken
134 
135 namespace PdmsObjects {
137 class GenericItem {
138 public:
143 
150 
155 
158 
160  GenericItem();
162  virtual ~GenericItem() {}
163 
164  // coordinate system
165  virtual bool setPosition(const CCVector3 &p);
166  virtual bool setOrientation(const CCVector3 &x,
167  const CCVector3 &y,
168  const CCVector3 &z);
169  virtual bool convertCoordinateSystem();
170 
171  // tree structure
172  virtual GenericItem *getRoot() {
173  GenericItem *item = this;
174  while (item->owner) item = item->owner;
175  return item;
176  }
177  virtual bool push(GenericItem *i) = 0;
178  virtual void remove(GenericItem *i) {}
179 
180  // type management
181  virtual bool isGroupElement() { return false; }
182  virtual bool isDesignElement() { return false; }
183  virtual Token getType() const { return PDMS_INVALID_TOKEN; }
184 
185  // attributes
186  virtual bool setValue(Token t, PointCoordinateType value) { return false; }
187 
188  // other
189  virtual GenericItem *scan(const char *str) {
190  return strcmp(name, str) == 0 ? this : nullptr;
191  }
192  virtual bool scan(Token t, std::vector<GenericItem *> &array);
193  virtual std::pair<int, int> write(std::ostream &output,
194  int nbtabs = 0) const = 0;
195 
196 protected:
197  bool isOrientationValid(unsigned i) const;
198  bool completeOrientation();
199 };
200 
202 class Stack {
203 public:
204  static void Init();
205  static void Clear();
206  static void Destroy(GenericItem *&item);
207 };
208 
210 class DesignElement : public GenericItem {
211 public:
212  bool negative;
213  std::list<DesignElement *> nelements;
214 
215  DesignElement() : negative(false) {}
216  virtual ~DesignElement();
217 
218  // reimplemented from GenericItem
219  virtual bool isDesignElement() { return true; }
220  virtual bool push(GenericItem *i);
221  virtual void remove(GenericItem *i);
222 
223  // virtual Shape* toShape() {return nullptr;}
224  virtual PointCoordinateType surface() const { return 0; }
225 };
226 
228 class GroupElement : public GenericItem {
229 public:
231  std::list<DesignElement *> elements;
232  std::list<GroupElement *> subhierarchy;
233 
234  explicit GroupElement(Token l);
235  virtual ~GroupElement();
236 
237  // GroupElement(const Model* model);
238  // virtual bool push(const Shape* shape);
239 
240  virtual void clear(bool del = false);
241 
242  // reimplemented from GenericItem
243  virtual bool push(GenericItem *i);
244  virtual void remove(GenericItem *i);
245  virtual bool isGroupElement() { return true; }
246  virtual bool convertCoordinateSystem();
247  virtual GenericItem *scan(const char *str);
248  virtual bool scan(Token t, std::vector<GenericItem *> &array);
249  virtual Token getType() const { return level; }
250  virtual std::pair<int, int> write(std::ostream &output,
251  int nbtabs = 0) const;
252 };
253 
255 class SCylinder : public DesignElement {
256 public:
263 
265  : diameter(0),
266  height(0),
267  xtshear(0),
268  ytshear(0),
269  xbshear(0),
270  ybshear(0) {}
271 
272  // virtual Shape* toShape();
273 
274  // reimplemented from GenericItem
275  virtual bool setValue(Token t, PointCoordinateType value);
276  virtual Token getType() const { return PDMS_SCYLINDER; }
277  virtual std::pair<int, int> write(std::ostream &output,
278  int nbtabs = 0) const;
279  virtual PointCoordinateType surface() const;
280 };
281 
283 class CTorus : public DesignElement {
284 public:
288 
290 
291  // virtual Shape* toShape();
292 
293  // reimplemented from GenericItem
294  virtual bool setValue(Token t, PointCoordinateType value);
295  virtual Token getType() const { return PDMS_CTORUS; }
296  virtual std::pair<int, int> write(std::ostream &output,
297  int nbtabs = 0) const;
298  virtual PointCoordinateType surface() const;
299 };
300 
301 // Torus (rectangular section)
302 class RTorus : public CTorus {
303 public:
305 
306  RTorus() : CTorus(), height(0) {}
307 
308  // reimplemented from GenericItem
309  virtual bool setValue(Token t, PointCoordinateType value);
310  virtual Token getType() const { return PDMS_RTORUS; }
311  virtual std::pair<int, int> write(std::ostream &output,
312  int nbtabs = 0) const;
313  virtual PointCoordinateType surface() const;
314 };
315 
317 class Dish : public DesignElement {
318 public:
322 
323  Dish();
324 
325  // reimplemented from GenericItem
326  virtual bool setValue(Token t, PointCoordinateType value);
327  virtual Token getType() const { return PDMS_DISH; }
328  virtual std::pair<int, int> write(std::ostream &output,
329  int nbtabs = 0) const;
330  virtual PointCoordinateType surface() const;
331 };
332 
334 class Cone : public DesignElement {
335 public:
339 
340  Cone() : dtop(0), dbottom(0), height(0) {}
341 
342  // reimplemented from GenericItem
343  virtual bool setValue(Token t, PointCoordinateType value);
344  virtual Token getType() const { return PDMS_CONE; }
345  virtual std::pair<int, int> write(std::ostream &output,
346  int nbtabs = 0) const;
347  virtual PointCoordinateType surface() const;
348 };
349 
351 class Pyramid : public DesignElement {
352 public:
354 
355  Pyramid() {}
356 
357  // reimplemented from GenericItem
358  virtual bool setValue(Token t, PointCoordinateType value);
359  virtual Token getType() const { return PDMS_PYRAMID; }
360  virtual std::pair<int, int> write(std::ostream &output,
361  int nbtabs = 0) const;
362  virtual PointCoordinateType surface() const;
363 };
364 
366 class Snout : public Cone {
367 public:
369 
370  Snout() : Cone(), xoff(0), yoff(0) {}
371 
372  // reimplemented from GenericItem
373  virtual bool setValue(Token t, PointCoordinateType value);
374  virtual Token getType() const { return PDMS_SNOUT; }
375  virtual std::pair<int, int> write(std::ostream &output,
376  int nbtabs = 0) const;
377  virtual PointCoordinateType surface() const;
378 };
379 
381 class Box : public DesignElement {
382 public:
384 
385  Box();
386 
387  // reimplemented from GenericItem
388  virtual bool setValue(Token t, PointCoordinateType value);
389  virtual Token getType() const { return negative ? PDMS_NBOX : PDMS_BOX; }
390  virtual std::pair<int, int> write(std::ostream &output,
391  int nbtabs = 0) const;
392  virtual PointCoordinateType surface() const;
393 };
394 
396 class Vertex : public DesignElement {
397 public:
399 
400  Vertex() : v(0.) {}
401 
402  // reimplemented from GenericItem
403  bool setPosition(const CCVector3 &p) {
404  v.x = p.x;
405  v.y = p.y;
406  return true;
407  }
408  virtual Token getType() const { return PDMS_VERTEX; }
409  virtual std::pair<int, int> write(std::ostream &output,
410  int nbtabs = 0) const;
411 };
412 
414 class Loop : public DesignElement {
415 public:
416  std::list<Vertex *> loop;
417 
418  Loop() {}
419  virtual ~Loop() {
420  while (!loop.empty()) {
421  GenericItem *v = loop.back();
422  Stack::Destroy(v);
423  loop.pop_back();
424  }
425  }
426 
427  // reimplemented from GenericItem
428  virtual bool push(GenericItem *i);
429  virtual void remove(GenericItem *i);
430  virtual Token getType() const { return PDMS_LOOP; }
431  virtual std::pair<int, int> write(std::ostream &output,
432  int nbtabs = 0) const;
433 };
434 
436 class Extrusion : public DesignElement {
437 public:
440 
441  Extrusion() : loop(0), height(0.0f) {}
442  virtual ~Extrusion() {
443  if (loop) {
444  GenericItem *i = loop;
445  Stack::Destroy(i);
446  }
447  }
448 
449  // reimplemented from GenericItem
450  virtual void remove(Loop *l) {
451  if (l == loop) loop = nullptr;
452  }
453  virtual bool push(GenericItem *l);
454  virtual void remove(GenericItem *i) {
455  if (loop == i) loop = nullptr;
456  }
457  virtual bool setValue(Token t, PointCoordinateType value) {
458  if (t == PDMS_HEIGHT) {
459  height = value;
460  return true;
461  }
462  return false;
463  }
464  virtual Token getType() const {
465  return negative ? PDMS_NEXTRU : PDMS_EXTRU;
466  }
467  virtual std::pair<int, int> write(std::ostream &output,
468  int nbtabs = 0) const;
469  virtual PointCoordinateType surface() const;
470 };
471 
472 }; // namespace PdmsObjects
473 
474 namespace PdmsCommands {
475 
476 class Command {
477 public:
479 
480  explicit Command(Token t) { command = t; }
481  Command(const Command &com) { command = com.command; }
482  virtual ~Command() {}
483 
485  static Command *Create(Token t);
486 
487  virtual bool handle(PointCoordinateType numvalue) { return false; }
488  virtual bool handle(const char *str) { return false; }
489  virtual bool handle(Token t) { return false; }
490  virtual bool isValid() const { return false; }
491  virtual bool execute(PdmsObjects::GenericItem *&item) const {
492  return false;
493  }
494 };
495 
496 class NumericalValue : public Command {
497 public:
500 
501  explicit NumericalValue(Token t) : Command(t), valueChanges(0) {}
502  virtual bool handle(PointCoordinateType numvalue);
503  virtual bool isValid() const;
504  virtual PointCoordinateType getValue() const;
505  virtual bool execute(PdmsObjects::GenericItem *&item) const;
506 };
507 
509 public:
512 
515  static void setWorkingUnit(Token wu) { workingUnit = wu; }
516  virtual bool handle(Token t);
517  virtual bool handle(PointCoordinateType numvalue) {
518  return NumericalValue::handle(numvalue);
519  }
521  virtual bool execute(PdmsObjects::GenericItem *&item) const;
522 };
523 
524 class Reference : public Command {
525 public:
528 
531  memset(refname, 0, c_max_str_length);
532  }
533  Reference(const Reference &ref) : Command(ref), token(ref.token) {
534  strcpy(refname, ref.refname);
535  }
536  Reference &operator=(const Reference &ref);
537  virtual bool handle(Token t);
538  virtual bool handle(const char *str);
539  virtual bool isValid() const;
540  virtual bool isNameReference() const;
541  virtual bool isTokenReference() const;
542  virtual bool execute(PdmsObjects::GenericItem *&item) const;
543 
544 protected:
545  int isSet() const;
546 };
547 
548 class Coordinates : public Command {
549 public:
551  int current;
552 
554  current = -1;
555  }
556  virtual bool handle(Token t);
557  virtual bool handle(PointCoordinateType numvalue);
558  virtual bool isValid() const;
559  bool getVector(CCVector3 &u) const;
560  int getNbComponents(bool onlyset = false) const;
561 };
562 
563 class Position : public Command {
564 public:
568 
569  Position() : Command(PDMS_POSITION) { current = nullptr; }
570  virtual bool handle(Token t);
571  virtual bool handle(PointCoordinateType numvalue);
572  virtual bool handle(const char *str);
573  virtual bool isValid() const;
574  virtual bool execute(PdmsObjects::GenericItem *&item) const;
575 };
576 
577 class Orientation : public Command {
578 public:
583 
585  current = nullptr;
586  component = -1;
587  }
588  virtual bool handle(Token t);
589  virtual bool handle(PointCoordinateType numvalue);
590  virtual bool handle(const char *str);
591  virtual bool isValid() const;
592  bool getAxes(CCVector3 &x, CCVector3 &y, CCVector3 &z) const;
593  virtual bool execute(PdmsObjects::GenericItem *&item) const;
594 
595 protected:
596  int getNbComponents() const;
597  static bool axisFromCoords(const Coordinates &coords, CCVector3 &u);
598 };
599 
600 class Name : public Command {
601 public:
603 
605  virtual bool handle(const char *str) {
606  if (strlen(name) > 0) return false;
607  strcpy(name, str);
608  return true;
609  }
610  virtual bool isValid() const { return strlen(name) > 0; }
611  virtual bool execute(PdmsObjects::GenericItem *&item) const;
612 };
613 
614 class ElementCreation : public Command {
615 public:
617  std::vector<std::string> path;
618 
621  }
622  virtual bool handle(const char *str);
623  virtual bool handle(Token t);
624  bool isValid() const;
625  virtual bool execute(PdmsObjects::GenericItem *&item) const;
626 
627  static const char *GetDefaultElementName(Token token);
628 
629 protected:
630  bool splitPath(const char *str);
631 };
632 
633 class ElementEnding : public Command {
634 public:
636 
637  explicit ElementEnding(Token t = PDMS_END) : Command(t) {}
638  virtual bool handle(Token t) {
639  end.command = command;
640  return end.handle(t);
641  }
642  virtual bool handle(const char *str) {
643  end.command = command;
644  return end.handle(str);
645  }
646  virtual bool isValid() const {
647  if (!end.command) return true;
648  return end.isValid();
649  }
650  virtual bool execute(PdmsObjects::GenericItem *&item) const;
651 };
652 
653 class HierarchyNavigation : public Command {
654 public:
655  explicit HierarchyNavigation(Token t) : Command(t) {}
656  virtual bool isValid() const {
658  }
659  virtual bool execute(PdmsObjects::GenericItem *&item) const;
660 };
661 
662 }; // namespace PdmsCommands
663 
664 }; // namespace PdmsTools
float PointCoordinateType
Type of the coordinates of a (N-D) point.
Definition: CVTypes.h:16
virtual bool handle(const char *str)
Definition: PdmsTools.h:488
Command(const Command &com)
Definition: PdmsTools.h:481
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.h:491
static Command * Create(Token t)
Factory.
Definition: PdmsTools.cpp:801
virtual bool handle(PointCoordinateType numvalue)
Definition: PdmsTools.h:487
virtual bool handle(Token t)
Definition: PdmsTools.h:489
virtual bool isValid() const
Definition: PdmsTools.h:490
int getNbComponents(bool onlyset=false) const
Definition: PdmsTools.cpp:312
bool getVector(CCVector3 &u) const
Definition: PdmsTools.cpp:263
Coordinates(Token t=PDMS_INVALID_TOKEN)
Definition: PdmsTools.h:553
virtual bool handle(PointCoordinateType numvalue)
Definition: PdmsTools.h:517
PointCoordinateType getValueInWorkingUnit() const
Definition: PdmsTools.cpp:114
DistanceValue(Token t=PDMS_INVALID_TOKEN)
Definition: PdmsTools.h:513
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:123
static void setWorkingUnit(Token wu)
Definition: PdmsTools.h:515
virtual bool handle(const char *str)
Definition: PdmsTools.cpp:537
static const char * GetDefaultElementName(Token token)
Definition: PdmsTools.cpp:556
std::vector< std::string > path
Definition: PdmsTools.h:617
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:607
virtual bool handle(const char *str)
Definition: PdmsTools.h:642
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:721
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:776
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:529
virtual bool isValid() const
Definition: PdmsTools.h:610
virtual bool handle(const char *str)
Definition: PdmsTools.h:605
char name[c_max_str_length]
Definition: PdmsTools.h:602
virtual bool handle(PointCoordinateType numvalue)
Definition: PdmsTools.cpp:82
virtual PointCoordinateType getValue() const
Definition: PdmsTools.cpp:90
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:103
static bool axisFromCoords(const Coordinates &coords, CCVector3 &u)
Definition: PdmsTools.cpp:488
bool getAxes(CCVector3 &x, CCVector3 &y, CCVector3 &z) const
Definition: PdmsTools.cpp:442
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:508
virtual bool isValid() const
Definition: PdmsTools.cpp:357
virtual bool handle(Token t)
Definition: PdmsTools.cpp:322
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:363
Reference & operator=(const Reference &ref)
Definition: PdmsTools.cpp:127
virtual bool isNameReference() const
Definition: PdmsTools.cpp:155
Reference(const Reference &ref)
Definition: PdmsTools.h:533
virtual bool isTokenReference() const
Definition: PdmsTools.cpp:157
Reference(Token t=PDMS_INVALID_TOKEN)
Definition: PdmsTools.h:529
virtual bool execute(PdmsObjects::GenericItem *&item) const
Definition: PdmsTools.cpp:166
char refname[c_max_str_length]
Definition: PdmsTools.h:527
virtual bool isValid() const
Definition: PdmsTools.cpp:151
virtual bool handle(Token t)
Definition: PdmsTools.cpp:135
virtual Token getType() const
Definition: PdmsTools.h:389
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.cpp:1594
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1616
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1611
Torus (circular section)
Definition: PdmsTools.h:283
PointCoordinateType angle
Definition: PdmsTools.h:287
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1362
PointCoordinateType outside_radius
Definition: PdmsTools.h:286
PointCoordinateType inside_radius
Definition: PdmsTools.h:285
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.cpp:1336
virtual Token getType() const
Definition: PdmsTools.h:295
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1354
PointCoordinateType dbottom
Definition: PdmsTools.h:337
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1562
PointCoordinateType height
Definition: PdmsTools.h:338
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.cpp:1526
virtual Token getType() const
Definition: PdmsTools.h:344
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1543
PointCoordinateType dtop
Definition: PdmsTools.h:336
virtual void remove(GenericItem *i)
Definition: PdmsTools.cpp:1070
std::list< DesignElement * > nelements
Definition: PdmsTools.h:213
virtual bool push(GenericItem *i)
Definition: PdmsTools.cpp:1048
virtual PointCoordinateType surface() const
Definition: PdmsTools.h:224
PointCoordinateType height
Definition: PdmsTools.h:320
virtual Token getType() const
Definition: PdmsTools.h:327
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1476
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1496
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.cpp:1459
PointCoordinateType radius
Definition: PdmsTools.h:321
PointCoordinateType diameter
Definition: PdmsTools.h:319
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.h:457
virtual void remove(Loop *l)
Definition: PdmsTools.h:450
PointCoordinateType height
Definition: PdmsTools.h:439
virtual void remove(GenericItem *i)
Definition: PdmsTools.h:454
virtual Token getType() const
Definition: PdmsTools.h:464
virtual bool push(GenericItem *l)
Definition: PdmsTools.cpp:1676
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1689
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1706
virtual GenericItem * getRoot()
Definition: PdmsTools.h:172
GenericItem * orientationReferences[3]
Reference(s) object(s) (orientation)
Definition: PdmsTools.h:154
GenericItem * positionReference
Reference object (position)
Definition: PdmsTools.h:152
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.h:186
virtual void remove(GenericItem *i)
Definition: PdmsTools.h:178
GenericItem()
Default constructor.
Definition: PdmsTools.cpp:873
char name[c_max_str_length]
Name.
Definition: PdmsTools.h:157
GenericItem * owner
Parent imte.
Definition: PdmsTools.h:140
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const =0
virtual bool setOrientation(const CCVector3 &x, const CCVector3 &y, const CCVector3 &z)
Definition: PdmsTools.cpp:895
virtual bool push(GenericItem *i)=0
bool isOrientationValid(unsigned i) const
Definition: PdmsTools.cpp:904
GenericItem * creator
Creator item.
Definition: PdmsTools.h:142
virtual bool setPosition(const CCVector3 &p)
Definition: PdmsTools.cpp:890
virtual GenericItem * scan(const char *str)
Definition: PdmsTools.h:189
CCVector3 orientation[3]
Object orientation (X,Y and Z)
Definition: PdmsTools.h:147
CCVector3 position
Object position.
Definition: PdmsTools.h:145
bool isCoordinateSystemUpToDate
Coordinate system update flag.
Definition: PdmsTools.h:149
virtual ~GenericItem()
Destructor.
Definition: PdmsTools.h:162
virtual Token getType() const
Definition: PdmsTools.h:183
std::list< DesignElement * > elements
Definition: PdmsTools.h:231
std::list< GroupElement * > subhierarchy
Definition: PdmsTools.h:232
virtual void remove(GenericItem *i)
Definition: PdmsTools.cpp:1148
virtual void clear(bool del=false)
Definition: PdmsTools.cpp:1089
virtual GenericItem * scan(const char *str)
Definition: PdmsTools.cpp:1181
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1206
virtual Token getType() const
Definition: PdmsTools.h:249
virtual bool push(GenericItem *i)
Definition: PdmsTools.cpp:1106
virtual bool push(GenericItem *i)
Definition: PdmsTools.cpp:1653
virtual Token getType() const
Definition: PdmsTools.h:430
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1672
virtual void remove(GenericItem *i)
Definition: PdmsTools.cpp:1663
std::list< Vertex * > loop
Definition: PdmsTools.h:416
PointCoordinateType xbot
Definition: PdmsTools.h:353
PointCoordinateType yoff
Definition: PdmsTools.h:353
PointCoordinateType height
Definition: PdmsTools.h:353
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1739
PointCoordinateType xtop
Definition: PdmsTools.h:353
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1744
PointCoordinateType ybot
Definition: PdmsTools.h:353
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.cpp:1710
virtual Token getType() const
Definition: PdmsTools.h:359
PointCoordinateType xoff
Definition: PdmsTools.h:353
PointCoordinateType ytop
Definition: PdmsTools.h:353
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1425
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.cpp:1392
PointCoordinateType height
Definition: PdmsTools.h:304
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1413
virtual Token getType() const
Definition: PdmsTools.h:310
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.cpp:1266
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1300
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1296
PointCoordinateType xtshear
Definition: PdmsTools.h:259
virtual Token getType() const
Definition: PdmsTools.h:276
PointCoordinateType height
Definition: PdmsTools.h:258
PointCoordinateType ybshear
Definition: PdmsTools.h:262
PointCoordinateType ytshear
Definition: PdmsTools.h:260
PointCoordinateType xbshear
Definition: PdmsTools.h:261
PointCoordinateType diameter
Definition: PdmsTools.h:257
virtual PointCoordinateType surface() const
Definition: PdmsTools.cpp:1771
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1776
virtual Token getType() const
Definition: PdmsTools.h:374
PointCoordinateType xoff
Definition: PdmsTools.h:368
PointCoordinateType yoff
Definition: PdmsTools.h:368
virtual bool setValue(Token t, PointCoordinateType value)
Definition: PdmsTools.cpp:1748
static void Destroy(GenericItem *&item)
Definition: PdmsTools.cpp:70
virtual std::pair< int, int > write(std::ostream &output, int nbtabs=0) const
Definition: PdmsTools.cpp:1649
bool setPosition(const CCVector3 &p)
Definition: PdmsTools.h:403
virtual Token getType() const
Definition: PdmsTools.h:408
Type y
Definition: CVGeom.h:137
Type x
Definition: CVGeom.h:137
Type x
Definition: CVGeom.h:36
Type y
Definition: CVGeom.h:36
static bool isElement(Token t)
Definition: PdmsTools.h:120
static bool isSpaceSystem(Token t)
Definition: PdmsTools.h:127
static bool isDesignElement(Token t)
Definition: PdmsTools.h:114
static bool isCoordinate(Token t)
Definition: PdmsTools.h:123
static bool isGroupElement(Token t)
Definition: PdmsTools.h:117
static bool isCommand(Token t)
Definition: PdmsTools.h:113
static bool isParameter(Token t)
Definition: PdmsTools.h:124
static bool isUnit(Token t)
Definition: PdmsTools.h:130
const int c_max_str_length
Definition: PdmsTools.h:22
@ PDMS_NAME
Definition: PdmsTools.h:40
@ PDMS_X_BOTTOM_SHEAR
Definition: PdmsTools.h:86
@ PDMS_Y_TOP
Definition: PdmsTools.h:92
@ PDMS_Y_TOP_SHEAR
Definition: PdmsTools.h:87
@ PDMS_NUM_VALUE
Definition: PdmsTools.h:38
@ PDMS_RADIUS
Definition: PdmsTools.h:99
@ PDMS_SOUTH
Definition: PdmsTools.h:54
@ PDMS_WEST
Definition: PdmsTools.h:53
@ PDMS_SCYLINDER
Definition: PdmsTools.h:69
@ PDMS_X_BOTTOM
Definition: PdmsTools.h:89
@ PDMS_DOWN
Definition: PdmsTools.h:55
@ PDMS_ZLENGTH
Definition: PdmsTools.h:97
@ PDMS_UNUSED
Definition: PdmsTools.h:31
@ PDMS_RETURN
Definition: PdmsTools.h:45
@ PDMS_NORTH
Definition: PdmsTools.h:51
@ PDMS_Y_BOTTOM
Definition: PdmsTools.h:90
@ PDMS_SUBSTRUCTURE
Definition: PdmsTools.h:67
@ PDMS_OWNER
Definition: PdmsTools.h:41
@ PDMS_PYRAMID
Definition: PdmsTools.h:74
@ PDMS_HEIGHT
Definition: PdmsTools.h:84
@ PDMS_NAME_STR
Definition: PdmsTools.h:34
@ PDMS_COMMENT_LINE
Definition: PdmsTools.h:32
@ PDMS_ENTER_METAGROUP
Definition: PdmsTools.h:47
@ PDMS_ORIENTATION
Definition: PdmsTools.h:106
@ PDMS_LOWER_HIER_LEVEL
Definition: PdmsTools.h:61
@ PDMS_TOP_DIAMETER
Definition: PdmsTools.h:102
@ PDMS_END
Definition: PdmsTools.h:44
@ PDMS_STRUCTURE
Definition: PdmsTools.h:66
@ PDMS_METRE
Definition: PdmsTools.h:108
@ PDMS_OUTSIDE_RADIUS
Definition: PdmsTools.h:101
@ PDMS_WORLD
Definition: PdmsTools.h:62
@ PDMS_Y_BOTTOM_SHEAR
Definition: PdmsTools.h:88
@ PDMS_CONE
Definition: PdmsTools.h:73
@ PDMS_BOTTOM_DIAMETER
Definition: PdmsTools.h:103
@ PDMS_X_OFF
Definition: PdmsTools.h:93
@ PDMS_LAST
Definition: PdmsTools.h:46
@ PDMS_SITE
Definition: PdmsTools.h:63
@ PDMS_INVALID_TOKEN
Definition: PdmsTools.h:28
@ PDMS_CTORUS
Definition: PdmsTools.h:70
@ PDMS_EXTRU
Definition: PdmsTools.h:78
@ PDMS_AND
Definition: PdmsTools.h:37
@ PDMS_WRT
Definition: PdmsTools.h:42
@ PDMS_EST
Definition: PdmsTools.h:50
@ PDMS_CREATE
Definition: PdmsTools.h:43
@ PDMS_BOX
Definition: PdmsTools.h:76
@ PDMS_COMMENT_BLOCK
Definition: PdmsTools.h:33
@ PDMS_MILLIMETRE
Definition: PdmsTools.h:109
@ PDMS_DISH
Definition: PdmsTools.h:72
@ PDMS_VERTEX
Definition: PdmsTools.h:81
@ PDMS_POSITION
Definition: PdmsTools.h:105
@ PDMS_LOOP
Definition: PdmsTools.h:80
@ PDMS_EOS
Definition: PdmsTools.h:30
@ PDMS_X_TOP_SHEAR
Definition: PdmsTools.h:85
@ PDMS_DIAMETER
Definition: PdmsTools.h:83
@ PDMS_RTORUS
Definition: PdmsTools.h:71
@ PDMS_EQUIPMENT
Definition: PdmsTools.h:65
@ PDMS_SNOUT
Definition: PdmsTools.h:75
@ PDMS_GROUP
Definition: PdmsTools.h:60
@ PDMS_X_TOP
Definition: PdmsTools.h:91
@ PDMS_INSIDE_RADIUS
Definition: PdmsTools.h:100
@ PDMS_NBOX
Definition: PdmsTools.h:77
@ PDMS_LEAVE_METAGROUP
Definition: PdmsTools.h:48
@ PDMS_Y_OFF
Definition: PdmsTools.h:94
@ PDMS_NEXTRU
Definition: PdmsTools.h:79
@ PDMS_ZONE
Definition: PdmsTools.h:64
@ PDMS_YLENGTH
Definition: PdmsTools.h:96
@ PDMS_XLENGTH
Definition: PdmsTools.h:95
@ PDMS_ANGLE
Definition: PdmsTools.h:98
@ PDMS_UNKNOWN
Definition: PdmsTools.h:29