Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 2 // See the file tools.license for terms. 3 3 4 #ifndef tools_io_irbuf 4 #ifndef tools_io_irbuf 5 #define tools_io_irbuf 5 #define tools_io_irbuf 6 6 7 #include "../typedefs" 7 #include "../typedefs" 8 8 9 #include <vector> 9 #include <vector> 10 #include <string> 10 #include <string> 11 11 12 #ifdef TOOLS_MEM 12 #ifdef TOOLS_MEM 13 #include "../mem" 13 #include "../mem" 14 #endif 14 #endif 15 15 16 namespace tools { 16 namespace tools { 17 namespace io { 17 namespace io { 18 18 19 class irbuf { 19 class irbuf { 20 public: 20 public: 21 virtual ~irbuf() {} 21 virtual ~irbuf() {} 22 public: 22 public: 23 virtual bool read(uchar&) = 0; 23 virtual bool read(uchar&) = 0; 24 virtual bool read(char&) = 0; 24 virtual bool read(char&) = 0; 25 virtual bool read(uint16&) = 0; 25 virtual bool read(uint16&) = 0; 26 virtual bool read(int16&) = 0; 26 virtual bool read(int16&) = 0; 27 virtual bool read(uint32&) = 0; 27 virtual bool read(uint32&) = 0; 28 virtual bool read(int32&) = 0; 28 virtual bool read(int32&) = 0; 29 virtual bool read(uint64&) = 0; 29 virtual bool read(uint64&) = 0; 30 virtual bool read(int64&) = 0; 30 virtual bool read(int64&) = 0; 31 virtual bool read(float&) = 0; 31 virtual bool read(float&) = 0; 32 virtual bool read(double&) = 0; 32 virtual bool read(double&) = 0; 33 virtual bool read(bool&) = 0; 33 virtual bool read(bool&) = 0; 34 34 35 virtual bool read_vec(uint32&,uchar*&) = 0; 35 virtual bool read_vec(uint32&,uchar*&) = 0; 36 virtual bool read_vec(uint32&,char*&) = 0; 36 virtual bool read_vec(uint32&,char*&) = 0; 37 virtual bool read_vec(uint32&,uint16*&) = 0; 37 virtual bool read_vec(uint32&,uint16*&) = 0; 38 virtual bool read_vec(uint32&,int16*&) = 0; 38 virtual bool read_vec(uint32&,int16*&) = 0; 39 virtual bool read_vec(uint32&,uint32*&) = 0; 39 virtual bool read_vec(uint32&,uint32*&) = 0; 40 virtual bool read_vec(uint32&,int32*&) = 0; 40 virtual bool read_vec(uint32&,int32*&) = 0; 41 virtual bool read_vec(uint32&,uint64*&) = 0; 41 virtual bool read_vec(uint32&,uint64*&) = 0; 42 virtual bool read_vec(uint32&,int64*&) = 0; 42 virtual bool read_vec(uint32&,int64*&) = 0; 43 virtual bool read_vec(uint32&,float*&) = 0; 43 virtual bool read_vec(uint32&,float*&) = 0; 44 virtual bool read_vec(uint32&,double*&) = 0; 44 virtual bool read_vec(uint32&,double*&) = 0; 45 virtual bool read_vec(uint32&,bool*&) = 0; 45 virtual bool read_vec(uint32&,bool*&) = 0; 46 46 47 virtual bool read_vec(std::vector<std::strin 47 virtual bool read_vec(std::vector<std::string>&) = 0; 48 48 49 virtual bool read_cstr(char*&) = 0; 49 virtual bool read_cstr(char*&) = 0; 50 virtual bool read_img(uint32&,uint32&,uint32 50 virtual bool read_img(uint32&,uint32&,uint32&,uchar*&) = 0; 51 51 52 typedef std::vector< std::vector<unsigned in 52 typedef std::vector< std::vector<unsigned int> > std_vec_vec_uint_t; 53 virtual bool read_std_vec_vec(std_vec_vec_ui 53 virtual bool read_std_vec_vec(std_vec_vec_uint_t&) = 0; 54 54 55 typedef std::vector< std::vector<float> > st 55 typedef std::vector< std::vector<float> > std_vec_vec_float_t; 56 virtual bool read_std_vec_vec(std_vec_vec_fl 56 virtual bool read_std_vec_vec(std_vec_vec_float_t&) = 0; 57 57 58 typedef std::vector< std::vector<double> > s 58 typedef std::vector< std::vector<double> > std_vec_vec_double_t; 59 virtual bool read_std_vec_vec(std_vec_vec_do 59 virtual bool read_std_vec_vec(std_vec_vec_double_t&) = 0; 60 60 61 typedef std::vector< std::vector<std::string 61 typedef std::vector< std::vector<std::string> > std_vec_vec_string_t; 62 virtual bool read_std_vec_vec(std_vec_vec_st 62 virtual bool read_std_vec_vec(std_vec_vec_string_t&) = 0; 63 public: //helpers 63 public: //helpers 64 template <class T> 64 template <class T> 65 bool read_std_vec(std::vector<T>& a_x) { 65 bool read_std_vec(std::vector<T>& a_x) { 66 uint32 n; 66 uint32 n; 67 T* v; 67 T* v; 68 if(!read_vec(n,v)) return false; 68 if(!read_vec(n,v)) return false; 69 a_x.resize(n); 69 a_x.resize(n); 70 for(uint32 index=0;index<n;index++) a_x[in 70 for(uint32 index=0;index<n;index++) a_x[index] = v[index]; 71 delete [] v; 71 delete [] v; 72 #ifdef TOOLS_MEM 72 #ifdef TOOLS_MEM 73 mem::decrement(s_new().c_str()); 73 mem::decrement(s_new().c_str()); 74 #endif 74 #endif 75 return true; 75 return true; 76 } 76 } 77 77 78 }; 78 }; 79 79 80 }} 80 }} 81 81 82 #endif 82 #endif