g4tools  5.4.0
matrix
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_rroot_matrix
5 #define tools_rroot_matrix
6 
7 //NOTE : not yet tested.
8 
9 #include "../scast"
10 #include "buffer"
11 #include "named"
12 
13 namespace tools {
14 namespace rroot {
15 
16 class matrix : public virtual iro {
17  static const std::string& s_store_class() {
18  static const std::string s_v("TMatrix");
19  return s_v;
20  }
21 public:
22  static const std::string& s_class() {
23  static const std::string s_v("tools::rroot::matrix");
24  return s_v;
25  }
26 public: //iro
27  virtual void* cast(const std::string& a_class) const {
28  if(void* p = cmp_cast<matrix>(this,a_class)) return p;
29  return 0;
30  }
31  virtual const std::string& s_cls() const {return s_class();}
32  virtual iro* copy() const {return new matrix(*this);}
33 public:
34  static cid id_class() {return matrix_cid();}
35  virtual void* cast(cid a_class) const {
36  if(void* p = cmp_cast<matrix>(this,a_class)) {return p;}
37  else return 0;
38  }
39 public:
40  virtual bool stream(buffer& a_buffer) {
41  unsigned int s, c;
42  short v;
43  if(!a_buffer.read_version(v,s,c)) return false;
44 
45  //printf("debug : tools::rroot::matrix::stream : version %d\n",v);
46 
47  // Version 2 streaming (ROOT/v3-00-6).
48 
49  {uint32 id,bits;
50  if(!Object_stream(a_buffer,id,bits)) return false;}
51 
52  int Nrows;
53  if(!a_buffer.read(Nrows)) return false;
54  int Ncols;
55  if(!a_buffer.read(Ncols)) return false;
56  int Nelems;
57  if(!a_buffer.read(Nelems)) return false;
58  int RowLwb;
59  if(!a_buffer.read(RowLwb)) return false;
60  int ColLwb;
61  if(!a_buffer.read(ColLwb)) return false;
62 
63  //Real_t* Elements; //[fNelems]
64  if(!dummy_array_stream<float>(a_buffer,Nelems)) return false;
65 
66  if(!a_buffer.check_byte_count(s,c,s_store_class())) return false;
67  return true;
68  }
69 
70 public:
71  matrix(){
72 #ifdef TOOLS_MEM
73  mem::increment(s_class().c_str());
74 #endif
75  }
76  virtual ~matrix(){
77 #ifdef TOOLS_MEM
78  mem::decrement(s_class().c_str());
79 #endif
80  }
81 protected:
82  matrix(const matrix& a_from): iro(a_from){}
83  matrix& operator=(const matrix&){return *this;}
84 };
85 
86 }}
87 
88 #endif
tools::rroot::matrix::s_class
static const std::string & s_class()
Definition: matrix:22
tools::rroot::matrix::~matrix
virtual ~matrix()
Definition: matrix:76
tools::rroot::Object_stream
bool Object_stream(buffer &a_buffer, uint32 &a_id, uint32 &a_bits)
Definition: object:12
tools::rroot::buffer::check_byte_count
bool check_byte_count(uint32 a_start_pos, uint32 a_byte_count, const std::string &a_store_cls)
Definition: buffer:568
buffer
named
tools::rroot::matrix
Definition: matrix:16
tools::rroot::buffer::read_version
bool read_version(short &a_version)
Definition: buffer:503
tools::rroot::matrix::cast
virtual void * cast(cid a_class) const
Definition: matrix:35
tools::rroot::matrix::operator=
matrix & operator=(const matrix &)
Definition: matrix:83
tools::rroot::matrix_cid
cid matrix_cid()
Definition: cids:29
tools::rroot::matrix::matrix
matrix(const matrix &a_from)
Definition: matrix:82
tools::rroot::matrix::copy
virtual iro * copy() const
Definition: matrix:32
tools::rroot::matrix::s_cls
virtual const std::string & s_cls() const
Definition: matrix:31
tools::rroot::matrix::id_class
static cid id_class()
Definition: matrix:34
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::rroot::buffer
Definition: buffer:43
tools::rroot::matrix::stream
virtual bool stream(buffer &a_buffer)
Definition: matrix:40
tools::rroot::rbuf::read
bool read(unsigned char &a_x)
Definition: rbuf:146
tools::rroot::iro
Definition: iro:19
tools::rroot::matrix::matrix
matrix()
Definition: matrix:71
tools::uint32
unsigned int uint32
Definition: typedefs:71
tools::rroot::matrix::cast
virtual void * cast(const std::string &a_class) const
Definition: matrix:27
tools::cid
unsigned short cid
Definition: cid:9