Warning, /include/Geant4/tools/io/irbuf is written in an unsupported language. File is not indexed.
0001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
0002 // See the file tools.license for terms.
0003
0004 #ifndef tools_io_irbuf
0005 #define tools_io_irbuf
0006
0007 #include "../typedefs"
0008
0009 #include <vector>
0010 #include <string>
0011
0012 namespace tools {
0013 namespace io {
0014
0015 class irbuf {
0016 public:
0017 virtual ~irbuf() {}
0018 public:
0019 virtual bool read(uchar&) = 0;
0020 virtual bool read(char&) = 0;
0021 virtual bool read(uint16&) = 0;
0022 virtual bool read(int16&) = 0;
0023 virtual bool read(uint32&) = 0;
0024 virtual bool read(int32&) = 0;
0025 virtual bool read(uint64&) = 0;
0026 virtual bool read(int64&) = 0;
0027 virtual bool read(float&) = 0;
0028 virtual bool read(double&) = 0;
0029 virtual bool read(bool&) = 0;
0030
0031 virtual bool read_vec(uint32&,uchar*&) = 0;
0032 virtual bool read_vec(uint32&,char*&) = 0;
0033 virtual bool read_vec(uint32&,uint16*&) = 0;
0034 virtual bool read_vec(uint32&,int16*&) = 0;
0035 virtual bool read_vec(uint32&,uint32*&) = 0;
0036 virtual bool read_vec(uint32&,int32*&) = 0;
0037 virtual bool read_vec(uint32&,uint64*&) = 0;
0038 virtual bool read_vec(uint32&,int64*&) = 0;
0039 virtual bool read_vec(uint32&,float*&) = 0;
0040 virtual bool read_vec(uint32&,double*&) = 0;
0041 virtual bool read_vec(uint32&,bool*&) = 0;
0042
0043 virtual bool read_vec(std::vector<std::string>&) = 0;
0044
0045 virtual bool read_cstr(char*&) = 0;
0046 virtual bool read_img(uint32&,uint32&,uint32&,uchar*&) = 0;
0047
0048 typedef std::vector< std::vector<unsigned int> > std_vec_vec_uint_t;
0049 virtual bool read_std_vec_vec(std_vec_vec_uint_t&) = 0;
0050
0051 typedef std::vector< std::vector<float> > std_vec_vec_float_t;
0052 virtual bool read_std_vec_vec(std_vec_vec_float_t&) = 0;
0053
0054 typedef std::vector< std::vector<double> > std_vec_vec_double_t;
0055 virtual bool read_std_vec_vec(std_vec_vec_double_t&) = 0;
0056
0057 typedef std::vector< std::vector<std::string> > std_vec_vec_string_t;
0058 virtual bool read_std_vec_vec(std_vec_vec_string_t&) = 0;
0059 public: //helpers
0060 template <class T>
0061 bool read_std_vec(std::vector<T>& a_x) {
0062 uint32 n;
0063 T* v;
0064 if(!read_vec(n,v)) return false;
0065 a_x.resize(n);
0066 for(uint32 index=0;index<n;index++) a_x[index] = v[index];
0067 delete [] v;
0068 return true;
0069 }
0070
0071 };
0072
0073 }}
0074
0075 #endif