g4tools  5.4.0
sf_enum
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_sg_sf_enum
5 #define tools_sg_sf_enum
6 
7 #include "sf"
8 
9 namespace tools {
10 namespace sg {
11 
12 class bsf_enum {
13 public:
15  virtual void* cast(const std::string& a_class) const {
16  if(void* p = cmp_cast<bsf_enum>(this,a_class)) {return p;}
17  return 0;
18  }
19  virtual const std::string& s_cls() const {return s_class();}
20 public:
21  virtual void set_value(int) = 0;
22 public:
24  virtual ~bsf_enum(){}
25 public:
26  bsf_enum(const bsf_enum&){}
27  bsf_enum& operator=(const bsf_enum&){return *this;}
28 };
29 
30 template <class T>
31 class sf_enum : public bsf<T>, public bsf_enum {
32  typedef bsf<T> parent;
33 public:
35  virtual void* cast(const std::string& a_class) const {
36  {if(void* p = cmp_cast< sf_enum<T> >(this,a_class)) {return p;}}
37  {if(void* p = bsf_enum::cast(a_class)) {return p;}}
38  return parent::cast(a_class);
39  }
40  virtual const std::string& s_cls() const {return s_class();}
41 public:
42  virtual bool write(io::iwbuf& a_buffer) {
43  return a_buffer.write((int16)parent::m_value);
44  }
45  virtual bool read(io::irbuf& a_buffer) {
46  int16 v;
47  if(!a_buffer.read(v)) return false;
48  parent::m_value = (T)v;
49  return true;
50  }
51  virtual bool dump(std::ostream&) {
52  //a_out << parent::m_value << std::endl;
53  return true;
54  }
55  virtual bool s_value(std::string& a_s) const {a_s.clear();return false;}
56  virtual bool s2value(const std::string&) {return false;}
57 public:
58  virtual void set_value(int a_value) {parent::value(T(a_value));}
59 public:
61  sf_enum(const T& a_value):parent(a_value),bsf_enum(){}
62  virtual ~sf_enum(){}
63 public:
64  sf_enum(const sf_enum& a_from):parent(a_from),bsf_enum(a_from){}
65  sf_enum& operator=(const sf_enum& a_from){
66  parent::operator=(a_from);
67  return *this;
68  }
69 public:
70  sf_enum& operator=(const T& a_value){
71  parent::operator=(a_value);
72  return *this;
73  }
74 };
75 
76 }}
77 
78 #endif
tools::sg::sf_enum::sf_enum
sf_enum(const sf_enum &a_from)
Definition: sf_enum:64
tools::io::irbuf::read
virtual bool read(uchar &)=0
tools::sg::bsf
Definition: bsf:19
tools::sg::sf_enum::read
virtual bool read(io::irbuf &a_buffer)
Definition: sf_enum:45
tools::sg::sf_enum::sf_enum
sf_enum(const T &a_value)
Definition: sf_enum:61
tools::sg::bsf::m_value
T m_value
Definition: bsf:120
tools::sg::bsf_enum::set_value
virtual void set_value(int)=0
tools::sg::sf_enum::s_value
virtual bool s_value(std::string &a_s) const
Definition: sf_enum:55
tools::sg::sf_enum::TOOLS_T_SCLASS
TOOLS_T_SCLASS(T, tools::sg::sf_enum)
tools::sg::sf_enum::operator=
sf_enum & operator=(const sf_enum &a_from)
Definition: sf_enum:65
tools::sg::field
Definition: field:25
tools::sg::bsf::cast
virtual void * cast(const std::string &a_class) const
Definition: bsf:27
tools::sg::sf_enum::operator=
sf_enum & operator=(const T &a_value)
Definition: sf_enum:70
tools::sg::bsf_enum::bsf_enum
bsf_enum()
Definition: sf_enum:23
tools::sg::bsf_enum::~bsf_enum
virtual ~bsf_enum()
Definition: sf_enum:24
tools::sg::bsf_enum::operator=
bsf_enum & operator=(const bsf_enum &)
Definition: sf_enum:27
tools::sg::sf_enum::dump
virtual bool dump(std::ostream &)
Definition: sf_enum:51
tools::sg::sf_enum::cast
virtual void * cast(const std::string &a_class) const
Definition: sf_enum:35
tools::sg::bsf_enum::s_cls
virtual const std::string & s_cls() const
Definition: sf_enum:19
tools::sg::sf_enum
Definition: sf_enum:31
tools::sg::bsf_enum::TOOLS_SCLASS
TOOLS_SCLASS(tools::sg::bsf_enum)
tools::sg::sf_enum::~sf_enum
virtual ~sf_enum()
Definition: sf_enum:62
tools::io::iwbuf::write
virtual bool write(uchar)=0
sf
tools::sg::sf_enum::s2value
virtual bool s2value(const std::string &)
Definition: sf_enum:56
tools::sg::bsf_enum::cast
virtual void * cast(const std::string &a_class) const
Definition: sf_enum:15
tools::sg::sf_enum::set_value
virtual void set_value(int a_value)
Definition: sf_enum:58
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::io::irbuf
Definition: irbuf:19
tools::cmp_cast
void * cmp_cast(const TO *a_this, const std::string &a_class)
Definition: scast:15
tools::sg::bsf::operator=
bsf & operator=(const bsf &a_from)
Definition: bsf:49
tools::io::iwbuf
Definition: iwbuf:15
tools::sg::sf_enum::s_cls
virtual const std::string & s_cls() const
Definition: sf_enum:40
tools::sg::sf_enum::write
virtual bool write(io::iwbuf &a_buffer)
Definition: sf_enum:42
tools::sg::bsf_enum::bsf_enum
bsf_enum(const bsf_enum &)
Definition: sf_enum:26
tools::sg::bsf::value
T & value()
Definition: bsf:98
tools::sg::bsf_enum
Definition: sf_enum:12
tools::sg::sf_enum::sf_enum
sf_enum()
Definition: sf_enum:60
tools::sg::bsf::s_class
static const std::string & s_class()
Definition: bsf:22
tools::int16
short int16
Definition: typedefs:100