Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/sg/sf_vec

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 ]

Diff markup

Differences between /externals/g4tools/include/tools/sg/sf_vec (Version 11.3.0) and /externals/g4tools/include/tools/sg/sf_vec (Version 10.3.p1)


  1 // Copyright (C) 2010, Guy Barrand. All rights    
  2 // See the file tools.license for terms.          
  3                                                   
  4 #ifndef tools_sg_sf_vec                           
  5 #define tools_sg_sf_vec                           
  6                                                   
  7 #include "sf"                                     
  8                                                   
  9 #include "../words"                               
 10                                                   
 11 namespace tools {                                 
 12 namespace sg {                                    
 13                                                   
 14 template <class T,class TT>  //exa sf_vec<colo    
 15 class sf_vec : public bsf<T> {                    
 16   typedef bsf<T> parent;                          
 17 public:                                           
 18   static const std::string& s_class() {           
 19     static const std::string s_v("tools::sg::s    
 20     return s_v;                                   
 21   }                                               
 22   virtual void* cast(const std::string& a_clas    
 23     if(void* p = cmp_cast< sf_vec<T,TT> >(this    
 24     return parent::cast(a_class);                 
 25   }                                               
 26   virtual const std::string& s_cls() const {re    
 27 public:                                           
 28   virtual bool write(io::iwbuf& a_buffer) {       
 29     const T& vec = parent::m_value;               
 30     const TT* d = get_data(vec);                  
 31     return a_buffer.write_vec(vec.size(),d);      
 32   }                                               
 33   virtual bool read(io::irbuf& a_buffer) {        
 34     T& vec = parent::m_value;                     
 35     uint32 n;                                     
 36     TT* v;                                        
 37     if(!a_buffer.read_vec(n,v)) {                 
 38       //::printf("debug : sf_vec::read : faile    
 39       return false;                               
 40     }                                             
 41     if(n!=vec.size()) {                           
 42       delete [] v;                                
 43 #ifdef TOOLS_MEM                                  
 44       mem::decrement(s_new().c_str());            
 45 #endif                                            
 46       //::printf("debug : sf_vec::read : faile    
 47       //    n,vec.size());                        
 48       return false;                               
 49     }                                             
 50     for(uint32 index=0;index<n;index++) vec[in    
 51     delete [] v;                                  
 52 #ifdef TOOLS_MEM                                  
 53     mem::decrement(s_new().c_str());              
 54 #endif                                            
 55     return true;                                  
 56   }                                               
 57   virtual bool dump(std::ostream& a_out) {        
 58     a_out << parent::m_value << std::endl;        
 59     return true;                                  
 60   }                                               
 61   virtual bool s_value(std::string& a_s) const    
 62     a_s.clear();                                  
 63     const T& vec = parent::m_value;               
 64     for(size_t index=0;index<vec.size();index+    
 65       if(index) a_s += ' ';                       
 66       std::ostringstream strm;                    
 67       strm << vec[index];                         
 68       a_s += strm.str();                          
 69     }                                             
 70     return true;                                  
 71   }                                               
 72   virtual bool s2value(const std::string& a_s)    
 73     std::vector<std::string> ws;                  
 74     words(a_s," ",false,ws);                      
 75     T& vec = parent::m_value;                     
 76     if(ws.size()!=vec.size()) return false;       
 77     T old_vec = vec;                              
 78     for(size_t index=0;index<vec.size();index+    
 79       std::istringstream strm(ws[index].c_str(    
 80       TT v;                                       
 81       strm >> v;                                  
 82       if(strm.fail()) {                           
 83         vec = old_vec;                            
 84         return false;                             
 85       }                                           
 86       if(vec[index]!=v) parent::m_touched = tr    
 87       vec[index] = v;                             
 88     }                                             
 89     return true;                                  
 90   }                                               
 91 public:                                           
 92   sf_vec():parent(){}                             
 93   sf_vec(const T& a_value):parent(a_value){}      
 94   virtual ~sf_vec(){}                             
 95 public:                                           
 96   sf_vec(const sf_vec& a_from)                    
 97   :parent(a_from){}                               
 98   sf_vec& operator=(const sf_vec& a_from){        
 99     parent::operator=(a_from);                    
100     return *this;                                 
101   }                                               
102 public:                                           
103   sf_vec& operator=(const T& a_value){            
104     parent::operator=(a_value);                   
105     return *this;                                 
106   }                                               
107   sf_vec& operator+=(const T& a_value) {          
108     parent::value(parent::value()+a_value);       
109     return *this;                                 
110   }                                               
111 };                                                
112                                                   
113 }}                                                
114                                                   
115 #endif