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