Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/rroot/matrix

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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