HepMC3 event record library
Attribute.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // This file is part of HepMC
4 // Copyright (C) 2014-2020 The HepMC collaboration (see AUTHORS for details)
5 //
6 #ifndef HEPMC3_ATTRIBUTE_H
7 #define HEPMC3_ATTRIBUTE_H
8 /**
9  * @file Attribute.h
10  * @brief Definition of \b class Attribute, \b class IntAttribute and \b class StringAttribute
11  *
12  * @class HepMC3::Attribute
13  * @brief Base class for all attributes
14  *
15  * Contains virtual functions to_string and from_string that
16  * each attribute must implement, as well as init function that
17  * attributes should overload to initialize parsed attribute
18  *
19  * @ingroup attributes
20  *
21  */
22 #include <cstdio> // sprintf
23 #include <string>
24 #include <limits>
25 #include <sstream>
26 #include <iomanip>
27 #include <map>
28 
29 #include "HepMC3/GenParticle_fwd.h"
30 #include "HepMC3/GenVertex_fwd.h"
31 
32 /** Deprecated */
33 using std::string;
34 
35 namespace HepMC3 {
36 
37 /** @brief Forward declaration of GenEvent. */
38 class GenEvent;
39 
40 /** @brief Forward declaration of GenRunInfo. */
41 class GenRunInfo;
42 
43 /** @brief Forward declaration of GenParticle. */
44 // class GenParticle;
45 class Attribute {
46 //
47 // Constructors
48 //
49 public:
50  /** @brief Default constructor */
51  //Note: m_event should be set to nullptr in case event is deleted!
52  Attribute():m_is_parsed(true) { m_event=nullptr; }
53 
54  /** @brief Virtual destructor */
55  virtual ~Attribute() {}
56 
57 protected:
58  /** @brief Protected constructor that allows to set string
59  *
60  * Used when parsing attributes from file. An StringAttribute class
61  * object is made, which uses this constructor to signify that
62  * it just holds string without parsing it.
63  *
64  * @note There should be no need for user class to ever use this constructor
65  */
66  //Note: m_event should be set to nullptr n case event is deleted!
67  explicit Attribute(const std::string &st):m_is_parsed(false),m_string(st) { m_event=nullptr; }
68 
69  /** @brief GenEvent is a friend */
70  friend class GenEvent;
71 
72 //
73 // Virtual Functions
74 //
75 public:
76  /** @brief Fill class content from string.
77  */
78  virtual bool from_string(const std::string & att) = 0;
79 
80  /** @brief Optionally initialize the attribute after from_string.
81  */
82  virtual bool init() {
83  return true;
84  }
85 
86  /** @brief Optionally initialize the attribute after from_string
87  *
88  * Is passed a reference to the GenRunInfo object to which the
89  * Attribute belongs.
90  */
91  virtual bool init(const GenRunInfo & ) {
92  return true;
93  }
94 
95  /** @brief Fill string from class content */
96  virtual bool to_string(std::string &att) const = 0;
97 
98 //
99 // Accessors
100 //
101 public:
102  /** @brief Check if this attribute is parsed */
103  bool is_parsed() const { return m_is_parsed; }
104 
105  /** @brief Get unparsed string */
106  const std::string& unparsed_string() const { return m_string; }
107 
108  /** return the GenEvent to which this Attribute belongs, if at all. */
109  const GenEvent * event() const {
110  return m_event;
111  }
112 
113  /** return the GenParticle to which this Attribute belongs, if at all. */
114  GenParticlePtr particle() {
115  return m_particle;
116  }
117 
118  /** return the GenParticle to which this Attribute belongs, if at all. */
119  ConstGenParticlePtr particle() const {
120  return std::const_pointer_cast<GenParticle>(m_particle);
121  }
122 
123  /** return the GenVertex to which this Attribute belongs, if at all. */
124  GenVertexPtr vertex() {
125  return m_vertex;
126  }
127 
128  /** return the GenVertex to which this Attribute belongs, if at all. */
129  ConstGenVertexPtr vertex() const {
130  return std::const_pointer_cast<GenVertex>(m_vertex);
131  }
132 
133 protected:
134  /** @brief Set is_parsed flag */
135  void set_is_parsed(bool flag) { m_is_parsed = flag; }
136 
137  /** @brief Set unparsed string */
138  void set_unparsed_string(const std::string &st) { m_string = st; }
139 
140 //
141 // Fields
142 //
143 private:
144  bool m_is_parsed; //!< Is this attribute parsed?
145  std::string m_string; //!< Raw (unparsed) string
146  const GenEvent * m_event; //!< Possibility to be aware of the
147  //! controlling GenEvent object.
148  GenParticlePtr m_particle; //!< Particle to which assigned.
149  GenVertexPtr m_vertex; //!< Vertex to which assigned.
150 };
151 
152 /**
153  * @class HepMC3::IntAttribute
154  * @brief Attribute that holds an Integer implemented as an int
155  *
156  * @ingroup attributes
157  */
158 class IntAttribute : public Attribute {
159 public:
160 
161  /** @brief Default constructor */
163 
164  /** @brief Constructor initializing attribute value */
165  IntAttribute(int val):Attribute(),m_val(val) {}
166 
167  /** @brief Implementation of Attribute::from_string */
168  bool from_string(const std::string &att) override {
169  m_val = atoi( att.c_str() );
170  return true;
171  }
172 
173  /** @brief Implementation of Attribute::to_string */
174  bool to_string(std::string &att) const override{
175  att = std::to_string(m_val);
176  return true;
177  }
178 
179  /** @brief get the value associated to this Attribute. */
180  int value() const {
181  return m_val;
182  }
183 
184  /** @brief set the value associated to this Attribute. */
185  void set_value(const int& i) {
186  m_val = i;
187  }
188 
189 private:
190  int m_val; ///< Attribute value
191 };
192 
193 /**
194  * @class HepMC3::LongAttribute
195  * @brief Attribute that holds an Integer implemented as an int
196  *
197  * @ingroup attributes
198  */
199 class LongAttribute : public Attribute {
200 public:
201 
202  /** @brief Default constructor */
204 
205  /** @brief Constructor initializing attribute value */
206  LongAttribute(long val): Attribute(), m_val(val) {}
207 
208  /** @brief Implementation of Attribute::from_string */
209  bool from_string(const std::string &att) override{
210  m_val = atol( att.c_str() );
211  return true;
212  }
213 
214  /** @brief Implementation of Attribute::to_string */
215  bool to_string(std::string &att) const override{
216  att = std::to_string(m_val);
217  return true;
218  }
219 
220  /** @brief get the value associated to this Attribute. */
221  long value() const {
222  return m_val;
223  }
224 
225  /** @brief set the value associated to this Attribute. */
226  void set_value(const long& l) {
227  m_val = l;
228  }
229 
230 private:
231 
232  long m_val; ///< Attribute value
233 
234 };
235 
236 /**
237  * @class HepMC3::DoubleAttribute
238  * @brief Attribute that holds a real number as a double.
239  *
240  * @ingroup attributes
241  */
242 class DoubleAttribute : public Attribute {
243 public:
244 
245  /** @brief Default constructor */
247 
248  /** @brief Constructor initializing attribute value */
249  DoubleAttribute(double val): Attribute(), m_val(val) {}
250 
251  /** @brief Implementation of Attribute::from_string */
252  bool from_string(const std::string &att) override{
253  m_val = atof( att.c_str() );
254  return true;
255  }
256 
257  /** @brief Implementation of Attribute::to_string */
258  bool to_string(std::string &att) const override{
259  std::ostringstream oss;
260  oss << std::setprecision(std::numeric_limits<double>::digits10)
261  << m_val;
262  att = oss.str();
263  return true;
264  }
265 
266  /** @brief get the value associated to this Attribute. */
267  double value() const {
268  return m_val;
269  }
270 
271  /** @brief set the value associated to this Attribute. */
272  void set_value(const double& d) {
273  m_val = d;
274  }
275 
276 private:
277 
278  double m_val; ///< Attribute value
279 };
280 
281 /**
282  * @class HepMC3::FloatAttribute
283  * @brief Attribute that holds a real number as a float.
284  *
285  * @ingroup attributes
286  */
287 class FloatAttribute : public Attribute {
288 public:
289 
290  /** @brief Default constructor */
292 
293  /** @brief Constructor initializing attribute value */
294  FloatAttribute(float val): Attribute(), m_val(val) {}
295 
296  /** @brief Implementation of Attribute::from_string */
297  bool from_string(const std::string &att) override{
298  m_val = float(atof( att.c_str() ));
299  return true;
300  }
301 
302  /** @brief Implementation of Attribute::to_string */
303  bool to_string(std::string &att) const override{
304  std::ostringstream oss;
305  oss << std::setprecision(std::numeric_limits<float>::digits10)
306  << m_val;
307  att = oss.str();
308  return true;
309  }
310 
311  /** @brief get the value associated to this Attribute. */
312  float value() const {
313  return m_val;
314  }
315 
316  /** @brief set the value associated to this Attribute. */
317  void set_value(const float& f) {
318  m_val = f;
319  }
320 
321 private:
322 
323  float m_val; ///< Attribute value
324 };
325 
326 /**
327  * @class HepMC3::StringAttribute
328  * @brief Attribute that holds a string
329  *
330  * Default attribute constructed when reading input files.
331  * It can be then parsed by other attributes or left as a string.
332  *
333  * @ingroup attributes
334  *
335  */
336 class StringAttribute : public Attribute {
337 public:
338 
339  /** @brief Default constructor - empty string */
341 
342  /** @brief String-based constructor
343  *
344  * The Attribute constructor used here marks that this is an unparsed
345  * string that can be (but does not have to be) parsed
346  *
347  */
348  StringAttribute(const std::string &st):Attribute(st) {}
349 
350  /** @brief Implementation of Attribute::from_string */
351  bool from_string(const std::string &att) override{
352  set_unparsed_string(att);
353  return true;
354  }
355 
356  /** @brief Implementation of Attribute::to_string */
357  bool to_string(std::string &att) const override{
358  att = unparsed_string();
359  return true;
360  }
361 
362  /** @brief get the value associated to this Attribute. */
363  std::string value() const {
364  return unparsed_string();
365  }
366 
367  /** @brief set the value associated to this Attribute. */
368  void set_value(const std::string& s) {
370  }
371 
372 };
373 
374 /**
375  * @class HepMC3::CharAttribute
376  * @brief Attribute that holds an Chareger implemented as an int
377  *
378  * @ingroup attributes
379  */
380 class CharAttribute : public Attribute {
381 public:
382 
383  /** @brief Default constructor */
385 
386  /** @brief Constructor initializing attribute value */
387  CharAttribute(char val):Attribute(),m_val(val) {}
388 
389  /** @brief Implementation of Attribute::from_string */
390  bool from_string(const std::string &att) override {
391  if (att.size())
392  {
393  m_val = att.at(0);
394  return true;
395  }
396  return false;
397  }
398 
399  /** @brief Implementation of Attribute::to_string */
400  bool to_string(std::string &att) const override {
401  att = std::to_string(m_val);
402  return true;
403  }
404 
405  /** @brief get the value associated to this Attribute. */
406  char value() const {
407  return m_val;
408  }
409 
410  /** @brief set the value associated to this Attribute. */
411  void set_value(const char& i) {
412  m_val = i;
413  }
414 
415 private:
416  char m_val; ///< Attribute value
417 };
418 
419 /**
420  * @class HepMC3::LongLongAttribute
421  * @brief Attribute that holds an Integer implemented as an int
422  *
423  * @ingroup attributes
424  */
425 class LongLongAttribute : public Attribute {
426 public:
427 
428  /** @brief Default constructor */
430 
431  /** @brief Constructor initializing attribute value */
432  LongLongAttribute(long long val): Attribute(), m_val(val) {}
433 
434  /** @brief Implementation of Attribute::from_string */
435  bool from_string(const std::string &att) override{
436  m_val = atoll( att.c_str() );
437  return true;
438  }
439 
440  /** @brief Implementation of Attribute::to_string */
441  bool to_string(std::string &att) const override{
442  att = std::to_string(m_val);
443  return true;
444  }
445 
446  /** @brief get the value associated to this Attribute. */
447  long long value() const {
448  return m_val;
449  }
450 
451  /** @brief set the value associated to this Attribute. */
452  void set_value(const long long& l) {
453  m_val = l;
454  }
455 
456 private:
457 
458  long long m_val; ///< Attribute value
459 
460 };
461 
462 /**
463  * @class HepMC3::LongDoubleAttribute
464  * @brief Attribute that holds a real number as a double.
465  *
466  * @ingroup attributes
467  */
469 public:
470 
471  /** @brief Default constructor */
473 
474  /** @brief Constructor initializing attribute value */
475  LongDoubleAttribute(long double val): Attribute(), m_val(val) {}
476 
477  /** @brief Implementation of Attribute::from_string */
478  bool from_string(const std::string &att) override {
479  m_val = strtold( att.c_str(),NULL);
480  return true;
481  }
482 
483  /** @brief Implementation of Attribute::to_string */
484  bool to_string(std::string &att) const override{
485  std::ostringstream oss;
486  oss << std::setprecision(std::numeric_limits<long double>::digits10)
487  << m_val;
488  att = oss.str();
489  return true;
490  }
491 
492  /** @brief get the value associated to this Attribute. */
493  long double value() const {
494  return m_val;
495  }
496 
497  /** @brief set the value associated to this Attribute. */
498  void set_value(const long double& d) {
499  m_val = d;
500  }
501 
502 private:
503 
504  long double m_val; ///< Attribute value
505 };
506 
507 
508 
509 /**
510  * @class HepMC3::UIntAttribute
511  * @brief Attribute that holds an unsigned int
512  *
513  * @ingroup attributes
514  */
515 class UIntAttribute : public Attribute {
516 public:
517 
518  /** @brief Default constructor */
520 
521  /** @brief Constructor initializing attribute value */
522  UIntAttribute(unsigned int val):Attribute(),m_val(val) {}
523 
524  /** @brief Implementation of Attribute::from_string */
525  bool from_string(const std::string &att) override{
526  m_val = strtoul(att.c_str(), NULL, 0);
527  return true;
528  }
529 
530  /** @brief Implementation of Attribute::to_string */
531  bool to_string(std::string &att) const override{
532  att = std::to_string(m_val);
533  return true;
534  }
535 
536  /** @brief get the value associated to this Attribute. */
537  unsigned int value() const {
538  return m_val;
539  }
540 
541  /** @brief set the value associated to this Attribute. */
542  void set_value(const unsigned int& i) {
543  m_val = i;
544  }
545 
546 private:
547  unsigned int m_val; ///< Attribute value
548 };
549 
550 
551 
552 /**
553  * @class HepMC3::ULongAttribute
554  * @brief Attribute that holds an unsigned long
555  *
556  * @ingroup attributes
557  */
558 class ULongAttribute : public Attribute {
559 public:
560 
561  /** @brief Default constructor */
563 
564  /** @brief Constructor initializing attribute value */
565  ULongAttribute(unsigned long val):Attribute(),m_val(val) {}
566 
567  /** @brief Implementation of Attribute::from_string */
568  bool from_string(const std::string &att) override{
569  m_val = strtoul(att.c_str(), NULL, 0);
570  return true;
571  }
572 
573  /** @brief Implementation of Attribute::to_string */
574  bool to_string(std::string &att) const override{
575  att = std::to_string(m_val);
576  return true;
577  }
578 
579  /** @brief get the value associated to this Attribute. */
580  unsigned long value() const {
581  return m_val;
582  }
583 
584  /** @brief set the value associated to this Attribute. */
585  void set_value(const unsigned long& i) {
586  m_val = i;
587  }
588 
589 private:
590  unsigned long m_val; ///< Attribute value
591 };
592 
593 
594 /**
595  * @class HepMC3::ULongLongAttribute
596  * @brief Attribute that holds an unsigned long long
597  *
598  * @ingroup attributes
599  */
601 public:
602 
603  /** @brief Default constructor */
605 
606  /** @brief Constructor initializing attribute value */
607  ULongLongAttribute(unsigned long long val):Attribute(),m_val(val) {}
608 
609  /** @brief Implementation of Attribute::from_string */
610  bool from_string(const std::string &att) override{
611  m_val = strtoull(att.c_str(), NULL, 0);
612  return true;
613  }
614 
615  /** @brief Implementation of Attribute::to_string */
616  bool to_string(std::string &att) const override{
617  att = std::to_string(m_val);
618  return true;
619  }
620 
621  /** @brief get the value associated to this Attribute. */
622  unsigned long long value() const {
623  return m_val;
624  }
625 
626  /** @brief set the value associated to this Attribute. */
627  void set_value(const unsigned long long& i) {
628  m_val = i;
629  }
630 
631 private:
632  unsigned long long m_val; ///< Attribute value
633 };
634 /**
635  * @class HepMC3::BoolAttribute
636  * @brief Attribute that holds an Booleger implemented as an int
637  *
638  * @ingroup attributes
639  */
640 class BoolAttribute : public Attribute {
641 public:
642 
643  /** @brief Default constructor */
645 
646  /** @brief Constructor initializing attribute value */
647  BoolAttribute(bool val):Attribute(),m_val(val) {}
648 
649  /** @brief Implementation of Attribute::from_string */
650  bool from_string(const std::string &att) override{
651  if (att.size()!=1) return false;
652  if(att==std::string("1")) {m_val = true; return true;}
653  if(att==std::string("0")) {m_val = false; return true;}
654  return false;
655  }
656 
657  /** @brief Implementation of Attribute::to_string */
658  bool to_string(std::string &att) const override{
659  att = std::to_string(m_val);
660  return true;
661  }
662 
663  /** @brief get the value associated to this Attribute. */
664  bool value() const {
665  return m_val;
666  }
667 
668  /** @brief set the value associated to this Attribute. */
669  void set_value(const bool& i) {
670  m_val = i;
671  }
672 
673 private:
674  bool m_val; ///< Attribute value
675 };
676 
677 /**
678  * @class HepMC3::VectorCharAttribute
679  * @brief Attribute that holds a vector of charegers of type char
680  *
681  * @ingroup attributes
682  */
684 public:
685 
686  /** @brief Default constructor */
688 
689  /** @brief Constructor initializing attribute value */
690  VectorCharAttribute(std::vector<char> val):Attribute(),m_val(val) {}
691 
692  /** @brief Implementation of Attribute::from_string */
693  bool from_string(const std::string &att) override {
694  char datafoo;
695  m_val.clear();
696  std::stringstream datastream(att);
697  while (datastream >> datafoo) m_val.push_back(datafoo);
698  return true;
699  }
700 
701  /** @brief Implementation of Attribute::to_string */
702  bool to_string(std::string &att) const override{
703  att.clear();
704  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
705  return true;
706  }
707 
708  /** @brief get the value associated to this Attribute. */
709  std::vector<char> value() const {
710  return m_val;
711  }
712 
713  /** @brief set the value associated to this Attribute. */
714  void set_value(const std::vector<char>& i) {
715  m_val = i;
716  }
717 
718 private:
719  std::vector<char> m_val; ///< Attribute value
720 };
721 
722 /**
723  * @class HepMC3::VectorFloatAttribute
724  * @brief Attribute that holds a vector of floategers of type float
725  *
726  * @ingroup attributes
727  */
729 public:
730 
731  /** @brief Default constructor */
733 
734  /** @brief Constructor initializing attribute value */
735  VectorFloatAttribute(std::vector<float> val):Attribute(),m_val(val) {}
736 
737  /** @brief Implementation of Attribute::from_string */
738  bool from_string(const std::string &att) override {
739  float datafoo;
740  m_val.clear();
741  std::stringstream datastream(att);
742  while (datastream >> datafoo) m_val.push_back(datafoo);
743  return true;
744  }
745 
746  /** @brief Implementation of Attribute::to_string */
747  bool to_string(std::string &att) const override{
748  att.clear();
749  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
750  return true;
751  }
752 
753  /** @brief get the value associated to this Attribute. */
754  std::vector<float> value() const {
755  return m_val;
756  }
757 
758  /** @brief set the value associated to this Attribute. */
759  void set_value(const std::vector<float>& i) {
760  m_val = i;
761  }
762 
763 private:
764  std::vector<float> m_val; ///< Attribute value
765 };
766 
767 
768 /**
769  * @class HepMC3::VectorLongDoubleAttribute
770  * @brief Attribute that holds a vector of long doubleegers of type long double
771  *
772  * @ingroup attributes
773  */
775 public:
776 
777  /** @brief Default constructor */
779 
780  /** @brief Constructor initializing attribute value */
781  VectorLongDoubleAttribute(std::vector<long double> val):Attribute(),m_val(val) {}
782 
783  /** @brief Implementation of Attribute::from_string */
784  bool from_string(const std::string &att) override {
785  long double datafoo;
786  m_val.clear();
787  std::stringstream datastream(att);
788  while (datastream >> datafoo) m_val.push_back(datafoo);
789  return true;
790  }
791 
792  /** @brief Implementation of Attribute::to_string */
793  bool to_string(std::string &att) const override{
794  att.clear();
795  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
796  return true;
797  }
798 
799  /** @brief get the value associated to this Attribute. */
800  std::vector<long double> value() const {
801  return m_val;
802  }
803 
804  /** @brief set the value associated to this Attribute. */
805  void set_value(const std::vector<long double>& i) {
806  m_val = i;
807  }
808 
809 private:
810  std::vector<long double> m_val; ///< Attribute value
811 };
812 
813 
814 
815 /**
816  * @class HepMC3::VectorLongLongAttribute
817  * @brief Attribute that holds a vector of long longegers of type long long
818  *
819  * @ingroup attributes
820  */
822 public:
823 
824  /** @brief Default constructor */
826 
827  /** @brief Constructor initializing attribute value */
828  VectorLongLongAttribute(std::vector<long long> val):Attribute(),m_val(val) {}
829 
830  /** @brief Implementation of Attribute::from_string */
831  bool from_string(const std::string &att) override {
832  long long datafoo;
833  m_val.clear();
834  std::stringstream datastream(att);
835  while (datastream >> datafoo) m_val.push_back(datafoo);
836  return true;
837  }
838 
839  /** @brief Implementation of Attribute::to_string */
840  bool to_string(std::string &att) const override{
841  att.clear();
842  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
843  return true;
844  }
845 
846  /** @brief get the value associated to this Attribute. */
847  std::vector<long long> value() const {
848  return m_val;
849  }
850 
851  /** @brief set the value associated to this Attribute. */
852  void set_value(const std::vector<long long>& i) {
853  m_val = i;
854  }
855 
856 private:
857  std::vector<long long> m_val; ///< Attribute value
858 };
859 
860 /**
861  * @class HepMC3::VectorUIntAttribute
862  * @brief Attribute that holds a vector of unsigned integers of type unsigned int
863  *
864  * @ingroup attributes
865  */
867 public:
868 
869  /** @brief Default constructor */
871 
872  /** @brief Constructor initializing attribute value */
873  VectorUIntAttribute(std::vector<unsigned int> val):Attribute(),m_val(val) {}
874 
875  /** @brief Implementation of Attribute::from_string */
876  bool from_string(const std::string &att) override {
877  unsigned int datafoo;
878  m_val.clear();
879  std::stringstream datastream(att);
880  while (datastream >> datafoo) m_val.push_back(datafoo);
881  return true;
882  }
883 
884  /** @brief Implementation of Attribute::to_string */
885  bool to_string(std::string &att) const override{
886  att.clear();
887  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
888  return true;
889  }
890 
891  /** @brief get the value associated to this Attribute. */
892  std::vector<unsigned int> value() const {
893  return m_val;
894  }
895 
896  /** @brief set the value associated to this Attribute. */
897  void set_value(const std::vector<unsigned int>& i) {
898  m_val = i;
899  }
900 
901 private:
902  std::vector<unsigned int> m_val; ///< Attribute value
903 };
904 
905 /**
906  * @class HepMC3::VectorULongAttribute
907  * @brief Attribute that holds a vector of unsigned longegers of type unsigned long
908  *
909  * @ingroup attributes
910  */
912 public:
913 
914  /** @brief Default constructor */
916 
917  /** @brief Constructor initializing attribute value */
918  VectorULongAttribute(std::vector<unsigned long> val):Attribute(),m_val(val) {}
919 
920  /** @brief Implementation of Attribute::from_string */
921  bool from_string(const std::string &att) override {
922  unsigned long datafoo;
923  m_val.clear();
924  std::stringstream datastream(att);
925  while (datastream >> datafoo) m_val.push_back(datafoo);
926  return true;
927  }
928 
929  /** @brief Implementation of Attribute::to_string */
930  bool to_string(std::string &att) const override{
931  att.clear();
932  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
933  return true;
934  }
935 
936  /** @brief get the value associated to this Attribute. */
937  std::vector<unsigned long> value() const {
938  return m_val;
939  }
940 
941  /** @brief set the value associated to this Attribute. */
942  void set_value(const std::vector<unsigned long>& i) {
943  m_val = i;
944  }
945 
946 private:
947  std::vector<unsigned long> m_val; ///< Attribute value
948 };
949 
950 
951 /**
952  * @class HepMC3::VectorULongLongAttribute
953  * @brief Attribute that holds a vector of unsigned long longegers of type unsigned long long
954  *
955  * @ingroup attributes
956  */
958 public:
959 
960  /** @brief Default constructor */
962 
963  /** @brief Constructor initializing attribute value */
964  VectorULongLongAttribute(std::vector<unsigned long long> val):Attribute(),m_val(val) {}
965 
966  /** @brief Implementation of Attribute::from_string */
967  bool from_string(const std::string &att) override {
968  unsigned long long datafoo;
969  m_val.clear();
970  std::stringstream datastream(att);
971  while (datastream >> datafoo) m_val.push_back(datafoo);
972  return true;
973  }
974 
975  /** @brief Implementation of Attribute::to_string */
976  bool to_string(std::string &att) const override{
977  att.clear();
978  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
979  return true;
980  }
981 
982  /** @brief get the value associated to this Attribute. */
983  std::vector<unsigned long long> value() const {
984  return m_val;
985  }
986 
987  /** @brief set the value associated to this Attribute. */
988  void set_value(const std::vector<unsigned long long>& i) {
989  m_val = i;
990  }
991 
992 private:
993  std::vector<unsigned long long> m_val; ///< Attribute value
994 };
995 
996 /**
997  * @class HepMC3::VectorIntAttribute
998  * @brief Attribute that holds a vector of integers of type int
999  *
1000  * @ingroup attributes
1001  */
1003 public:
1004 
1005  /** @brief Default constructor */
1007 
1008  /** @brief Constructor initializing attribute value */
1009  VectorIntAttribute(std::vector<int> val):Attribute(),m_val(val) {}
1010 
1011  /** @brief Implementation of Attribute::from_string */
1012  bool from_string(const std::string &att) override {
1013  int datafoo;
1014  m_val.clear();
1015  std::stringstream datastream(att);
1016  while (datastream >> datafoo) m_val.push_back(datafoo);
1017  return true;
1018  }
1019 
1020  /** @brief Implementation of Attribute::to_string */
1021  bool to_string(std::string &att) const override{
1022  att.clear();
1023  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
1024  return true;
1025  }
1026 
1027  /** @brief get the value associated to this Attribute. */
1028  std::vector<int> value() const {
1029  return m_val;
1030  }
1031 
1032  /** @brief set the value associated to this Attribute. */
1033  void set_value(const std::vector<int>& i) {
1034  m_val = i;
1035  }
1036 
1037 private:
1038  std::vector<int> m_val; ///< Attribute value
1039 };
1040 
1041 /**
1042  * @class HepMC3::VectorIntAttribute
1043  * @brief Attribute that holds a vector of integers of type int
1044  *
1045  * @ingroup attributes
1046  */
1048 public:
1049 
1050  /** @brief Default constructor */
1052 
1053  /** @brief Constructor initializing attribute value */
1054  VectorLongIntAttribute(std::vector<long int> val):Attribute(),m_val(val) {}
1055 
1056  /** @brief Implementation of Attribute::from_string */
1057  bool from_string(const std::string &att) override {
1058  long int datafoo;
1059  m_val.clear();
1060  std::stringstream datastream(att);
1061  while (datastream >> datafoo) m_val.push_back(datafoo);
1062  return true;
1063  }
1064 
1065  /** @brief Implementation of Attribute::to_string */
1066  bool to_string(std::string &att) const override{
1067  att.clear();
1068  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
1069  return true;
1070  }
1071 
1072  /** @brief get the value associated to this Attribute. */
1073  std::vector<long int> value() const {
1074  return m_val;
1075  }
1076 
1077  /** @brief set the value associated to this Attribute. */
1078  void set_value(const std::vector<long int>& i) {
1079  m_val = i;
1080  }
1081 
1082 private:
1083  std::vector<long int> m_val; ///< Attribute value
1084 };
1085 
1086 /**
1087  * @class HepMC3::VectorIntAttribute
1088  * @brief Attribute that holds a vector of FPs of type double
1089  *
1090  * @ingroup attributes
1091  */
1093 public:
1094 
1095  /** @brief Default constructor */
1097 
1098  /** @brief Constructor initializing attribute value */
1099  VectorDoubleAttribute(std::vector<double> val):Attribute(),m_val(val) {}
1100 
1101  /** @brief Implementation of Attribute::from_string */
1102  bool from_string(const std::string &att) override {
1103  double datafoo;
1104  m_val.clear();
1105  std::stringstream datastream(att);
1106  while (datastream >> datafoo) m_val.push_back(datafoo);
1107  return true;
1108  }
1109 
1110  /** @brief Implementation of Attribute::to_string */
1111  bool to_string(std::string &att) const override{
1112  att.clear();
1113  for (auto a: m_val) {if (att.length()) att+=" "; att+=std::to_string(a);}
1114  return true;
1115  }
1116 
1117  /** @brief get the value associated to this Attribute. */
1118  std::vector<double> value() const {
1119  return m_val;
1120  }
1121 
1122  /** @brief set the value associated to this Attribute. */
1123  void set_value(const std::vector<double>& i) {
1124  m_val = i;
1125  }
1126 
1127 private:
1128  std::vector<double> m_val; ///< Attribute value
1129 };
1130 
1131 
1132 /**
1133  * @class HepMC3::VectorIntAttribute
1134  * @brief Attribute that holds a vector of FPs of type string
1135  *
1136  * @ingroup attributes
1137  */
1139 public:
1140 
1141  /** @brief Default constructor */
1143 
1144  /** @brief Constructor initializing attribute value */
1145  VectorStringAttribute(std::vector<std::string> val):Attribute(),m_val(val) {}
1146 
1147  /** @brief Implementation of Attribute::from_string */
1148  bool from_string(const string &att) override {
1149  size_t posb = att.find_first_not_of(' ');
1150  do {
1151  size_t pose = att.find_first_of(' ', posb);
1152  m_val.push_back(att.substr(posb, pose - posb));
1153  posb = att.find_first_not_of(' ', pose);
1154  } while (posb != std::string::npos);
1155  return true;
1156  }
1157 
1158  /** @brief Implementation of Attribute::to_string */
1159  bool to_string(std::string &att) const override{
1160  att.clear();
1161  for (auto a: m_val) {if (att.length()) att+=" "; att+=a;}
1162  return true;
1163  }
1164 
1165  /** @brief get the value associated to this Attribute. */
1166  std::vector<std::string> value() const {
1167  return m_val;
1168  }
1169 
1170  /** @brief set the value associated to this Attribute. */
1171  void set_value(const std::vector<std::string>& i) {
1172  m_val = i;
1173  }
1174 
1175 private:
1176  std::vector<std::string> m_val; ///< Attribute value
1177 };
1178 
1179 
1180 } // namespace HepMC3
1181 
1182 #endif
VectorULongLongAttribute(std::vector< unsigned long long > val)
Constructor initializing attribute value.
Definition: Attribute.h:964
LongAttribute(long val)
Constructor initializing attribute value.
Definition: Attribute.h:206
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:568
Forward declaration of GenParticle.
Definition: Attribute.h:45
void set_value(const double &d)
set the value associated to this Attribute.
Definition: Attribute.h:272
virtual bool to_string(std::string &att) const =0
Fill string from class content.
VectorLongIntAttribute(std::vector< long int > val)
Constructor initializing attribute value.
Definition: Attribute.h:1054
float value() const
get the value associated to this Attribute.
Definition: Attribute.h:312
VectorIntAttribute(std::vector< int > val)
Constructor initializing attribute value.
Definition: Attribute.h:1009
Attribute that holds an unsigned long long.
Definition: Attribute.h:600
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:738
std::vector< float > value() const
get the value associated to this Attribute.
Definition: Attribute.h:754
void set_value(const std::vector< char > &i)
set the value associated to this Attribute.
Definition: Attribute.h:714
LongAttribute()
Default constructor.
Definition: Attribute.h:203
VectorFloatAttribute()
Default constructor.
Definition: Attribute.h:732
UIntAttribute()
Default constructor.
Definition: Attribute.h:519
ULongLongAttribute(unsigned long long val)
Constructor initializing attribute value.
Definition: Attribute.h:607
std::vector< double > m_val
Attribute value.
Definition: Attribute.h:1128
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:650
VectorStringAttribute(std::vector< std::string > val)
Constructor initializing attribute value.
Definition: Attribute.h:1145
unsigned long long value() const
get the value associated to this Attribute.
Definition: Attribute.h:622
unsigned int value() const
get the value associated to this Attribute.
Definition: Attribute.h:537
VectorLongDoubleAttribute(std::vector< long double > val)
Constructor initializing attribute value.
Definition: Attribute.h:781
FloatAttribute(float val)
Constructor initializing attribute value.
Definition: Attribute.h:294
void set_value(const bool &i)
set the value associated to this Attribute.
Definition: Attribute.h:669
void set_value(const std::vector< long int > &i)
set the value associated to this Attribute.
Definition: Attribute.h:1078
bool is_parsed() const
Check if this attribute is parsed.
Definition: Attribute.h:103
void set_unparsed_string(const std::string &st)
Set unparsed string.
Definition: Attribute.h:138
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:784
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:357
std::vector< std::string > m_val
Attribute value.
Definition: Attribute.h:1176
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:876
BoolAttribute()
Default constructor.
Definition: Attribute.h:644
std::vector< long double > value() const
get the value associated to this Attribute.
Definition: Attribute.h:800
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:574
Attribute that holds a vector of unsigned long longegers of type unsigned long long.
Definition: Attribute.h:957
Attribute that holds an unsigned int.
Definition: Attribute.h:515
Attribute that holds a vector of charegers of type char.
Definition: Attribute.h:683
Attribute(const std::string &st)
Protected constructor that allows to set string.
Definition: Attribute.h:67
void set_value(const std::vector< double > &i)
set the value associated to this Attribute.
Definition: Attribute.h:1123
VectorUIntAttribute(std::vector< unsigned int > val)
Constructor initializing attribute value.
Definition: Attribute.h:873
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:967
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:297
GenParticlePtr particle()
Definition: Attribute.h:114
Attribute that holds a real number as a float.
Definition: Attribute.h:287
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:976
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:531
Stores vertex-related information.
Definition: GenVertex.h:26
LongLongAttribute(long long val)
Constructor initializing attribute value.
Definition: Attribute.h:432
VectorLongIntAttribute()
Default constructor.
Definition: Attribute.h:1051
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:303
LongDoubleAttribute(long double val)
Constructor initializing attribute value.
Definition: Attribute.h:475
GenVertexPtr vertex()
Definition: Attribute.h:124
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:168
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:702
ULongAttribute()
Default constructor.
Definition: Attribute.h:562
unsigned int m_val
Attribute value.
Definition: Attribute.h:547
long m_val
Attribute value.
Definition: Attribute.h:232
ConstGenParticlePtr particle() const
Definition: Attribute.h:119
void set_value(const std::vector< unsigned int > &i)
set the value associated to this Attribute.
Definition: Attribute.h:897
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:174
Stores run-related information.
Definition: GenRunInfo.h:33
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:921
void set_value(const char &i)
set the value associated to this Attribute.
Definition: Attribute.h:411
std::string value() const
get the value associated to this Attribute.
Definition: Attribute.h:363
VectorCharAttribute()
Default constructor.
Definition: Attribute.h:687
VectorLongLongAttribute(std::vector< long long > val)
Constructor initializing attribute value.
Definition: Attribute.h:828
Attribute that holds a vector of integers of type int.
Definition: Attribute.h:1002
bool m_val
Attribute value.
Definition: Attribute.h:674
virtual bool init()
Optionally initialize the attribute after from_string.
Definition: Attribute.h:82
std::vector< double > value() const
get the value associated to this Attribute.
Definition: Attribute.h:1118
Stores particle-related information.
Definition: GenParticle.h:31
void set_value(const int &i)
set the value associated to this Attribute.
Definition: Attribute.h:185
long value() const
get the value associated to this Attribute.
Definition: Attribute.h:221
Attribute that holds a string.
Definition: Attribute.h:336
void set_value(const unsigned int &i)
set the value associated to this Attribute.
Definition: Attribute.h:542
LongLongAttribute()
Default constructor.
Definition: Attribute.h:429
std::vector< unsigned int > value() const
get the value associated to this Attribute.
Definition: Attribute.h:892
double value() const
get the value associated to this Attribute.
Definition: Attribute.h:267
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:441
VectorDoubleAttribute()
Default constructor.
Definition: Attribute.h:1096
std::vector< std::string > value() const
get the value associated to this Attribute.
Definition: Attribute.h:1166
std::vector< unsigned long long > value() const
get the value associated to this Attribute.
Definition: Attribute.h:983
void set_value(const unsigned long &i)
set the value associated to this Attribute.
Definition: Attribute.h:585
GenParticlePtr m_particle
controlling GenEvent object.
Definition: Attribute.h:148
int m_val
Attribute value.
Definition: Attribute.h:190
VectorDoubleAttribute(std::vector< double > val)
Constructor initializing attribute value.
Definition: Attribute.h:1099
float m_val
Attribute value.
Definition: Attribute.h:323
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:747
VectorIntAttribute()
Default constructor.
Definition: Attribute.h:1006
long long m_val
Attribute value.
Definition: Attribute.h:458
Attribute that holds a vector of unsigned integers of type unsigned int.
Definition: Attribute.h:866
Attribute that holds an Chareger implemented as an int.
Definition: Attribute.h:380
std::vector< int > value() const
get the value associated to this Attribute.
Definition: Attribute.h:1028
Attribute that holds a vector of unsigned longegers of type unsigned long.
Definition: Attribute.h:911
Attribute that holds an unsigned long.
Definition: Attribute.h:558
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:1057
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:616
virtual bool from_string(const std::string &att)=0
Fill class content from string.
Attribute that holds a vector of long doubleegers of type long double.
Definition: Attribute.h:774
std::vector< unsigned long > m_val
Attribute value.
Definition: Attribute.h:947
const GenEvent * event() const
Definition: Attribute.h:109
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:252
double m_val
Attribute value.
Definition: Attribute.h:278
VectorULongAttribute()
Default constructor.
Definition: Attribute.h:915
std::vector< unsigned long > value() const
get the value associated to this Attribute.
Definition: Attribute.h:937
void set_value(const std::vector< int > &i)
set the value associated to this Attribute.
Definition: Attribute.h:1033
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:1012
Stores event-related information.
Definition: GenEvent.h:41
bool value() const
get the value associated to this Attribute.
Definition: Attribute.h:664
DoubleAttribute()
Default constructor.
Definition: Attribute.h:246
void set_value(const std::vector< std::string > &i)
set the value associated to this Attribute.
Definition: Attribute.h:1171
Attribute that holds a real number as a double.
Definition: Attribute.h:242
char m_val
Attribute value.
Definition: Attribute.h:416
void set_value(const std::vector< unsigned long long > &i)
set the value associated to this Attribute.
Definition: Attribute.h:988
unsigned long long m_val
Attribute value.
Definition: Attribute.h:632
void set_value(const std::vector< long long > &i)
set the value associated to this Attribute.
Definition: Attribute.h:852
std::vector< char > value() const
get the value associated to this Attribute.
Definition: Attribute.h:709
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:840
long long value() const
get the value associated to this Attribute.
Definition: Attribute.h:447
ConstGenVertexPtr vertex() const
Definition: Attribute.h:129
const GenEvent * m_event
Definition: Attribute.h:146
long double value() const
get the value associated to this Attribute.
Definition: Attribute.h:493
std::vector< long long > value() const
get the value associated to this Attribute.
Definition: Attribute.h:847
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:478
UIntAttribute(unsigned int val)
Constructor initializing attribute value.
Definition: Attribute.h:522
CharAttribute(char val)
Constructor initializing attribute value.
Definition: Attribute.h:387
std::string m_string
Raw (unparsed) string.
Definition: Attribute.h:145
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:693
ULongLongAttribute()
Default constructor.
Definition: Attribute.h:604
void set_value(const float &f)
set the value associated to this Attribute.
Definition: Attribute.h:317
StringAttribute(const std::string &st)
String-based constructor.
Definition: Attribute.h:348
std::vector< unsigned int > m_val
Attribute value.
Definition: Attribute.h:902
void set_value(const unsigned long long &i)
set the value associated to this Attribute.
Definition: Attribute.h:627
void set_value(const std::vector< long double > &i)
set the value associated to this Attribute.
Definition: Attribute.h:805
std::vector< float > m_val
Attribute value.
Definition: Attribute.h:764
long double m_val
Attribute value.
Definition: Attribute.h:504
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:793
Attribute that holds a real number as a double.
Definition: Attribute.h:468
Attribute that holds a vector of long longegers of type long long.
Definition: Attribute.h:821
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:209
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:1159
virtual bool init(const GenRunInfo &)
Optionally initialize the attribute after from_string.
Definition: Attribute.h:91
void set_value(const long &l)
set the value associated to this Attribute.
Definition: Attribute.h:226
std::vector< char > m_val
Attribute value.
Definition: Attribute.h:719
VectorStringAttribute()
Default constructor.
Definition: Attribute.h:1142
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:1021
VectorUIntAttribute()
Default constructor.
Definition: Attribute.h:870
VectorLongLongAttribute()
Default constructor.
Definition: Attribute.h:825
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:390
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:258
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:610
void set_value(const std::vector< unsigned long > &i)
set the value associated to this Attribute.
Definition: Attribute.h:942
IntAttribute(int val)
Constructor initializing attribute value.
Definition: Attribute.h:165
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:351
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:1066
std::vector< long int > m_val
Attribute value.
Definition: Attribute.h:1083
GenVertexPtr m_vertex
Vertex to which assigned.
Definition: Attribute.h:149
void set_is_parsed(bool flag)
Set is_parsed flag.
Definition: Attribute.h:135
VectorLongDoubleAttribute()
Default constructor.
Definition: Attribute.h:778
void set_value(const std::vector< float > &i)
set the value associated to this Attribute.
Definition: Attribute.h:759
IntAttribute()
Default constructor.
Definition: Attribute.h:162
BoolAttribute(bool val)
Constructor initializing attribute value.
Definition: Attribute.h:647
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:930
std::vector< long int > value() const
get the value associated to this Attribute.
Definition: Attribute.h:1073
std::vector< int > m_val
Attribute value.
Definition: Attribute.h:1038
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:1111
virtual ~Attribute()
Virtual destructor.
Definition: Attribute.h:55
FloatAttribute()
Default constructor.
Definition: Attribute.h:291
Attribute that holds an Integer implemented as an int.
Definition: Attribute.h:199
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:525
void set_value(const std::string &s)
set the value associated to this Attribute.
Definition: Attribute.h:368
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:1102
std::vector< unsigned long long > m_val
Attribute value.
Definition: Attribute.h:993
const std::string & unparsed_string() const
Get unparsed string.
Definition: Attribute.h:106
ULongAttribute(unsigned long val)
Constructor initializing attribute value.
Definition: Attribute.h:565
VectorULongLongAttribute()
Default constructor.
Definition: Attribute.h:961
std::vector< long long > m_val
Attribute value.
Definition: Attribute.h:857
VectorFloatAttribute(std::vector< float > val)
Constructor initializing attribute value.
Definition: Attribute.h:735
DoubleAttribute(double val)
Constructor initializing attribute value.
Definition: Attribute.h:249
Attribute that holds an Integer implemented as an int.
Definition: Attribute.h:425
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:400
Attribute that holds a vector of floategers of type float.
Definition: Attribute.h:728
int value() const
get the value associated to this Attribute.
Definition: Attribute.h:180
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:215
bool m_is_parsed
Is this attribute parsed?
Definition: Attribute.h:144
void set_value(const long double &d)
set the value associated to this Attribute.
Definition: Attribute.h:498
VectorULongAttribute(std::vector< unsigned long > val)
Constructor initializing attribute value.
Definition: Attribute.h:918
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:435
void set_value(const long long &l)
set the value associated to this Attribute.
Definition: Attribute.h:452
char value() const
get the value associated to this Attribute.
Definition: Attribute.h:406
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:831
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:484
Attribute that holds an Integer implemented as an int.
Definition: Attribute.h:158
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:658
Attribute that holds an Booleger implemented as an int.
Definition: Attribute.h:640
LongDoubleAttribute()
Default constructor.
Definition: Attribute.h:472
CharAttribute()
Default constructor.
Definition: Attribute.h:384
std::vector< long double > m_val
Attribute value.
Definition: Attribute.h:810
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Definition: Attribute.h:885
VectorCharAttribute(std::vector< char > val)
Constructor initializing attribute value.
Definition: Attribute.h:690
bool from_string(const string &att) override
Implementation of Attribute::from_string.
Definition: Attribute.h:1148
unsigned long value() const
get the value associated to this Attribute.
Definition: Attribute.h:580
StringAttribute()
Default constructor - empty string.
Definition: Attribute.h:340
Attribute()
Default constructor.
Definition: Attribute.h:52
unsigned long m_val
Attribute value.
Definition: Attribute.h:590