Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/Geant4/tools/HEADER 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_HEADER
0005 #define tools_HEADER
0006 
0007 #include "S_STRING"
0008 #include "scast"
0009 
0010 #define TOOLS_HEADER(a__class,a__sclass,a__parent)\
0011 private:\
0012   typedef a__parent parent;\
0013 public:\
0014   TOOLS_SCLASS(a__sclass)\
0015 public:\
0016   virtual void* cast(const std::string& a_class) const {\
0017     if(void* p = tools::cmp_cast<a__class>(this,a_class)) return p;\
0018     return parent::cast(a_class);\
0019   }\
0020   virtual const std::string& s_cls() const {return s_class();}
0021 
0022 #define TOOLS_T_HEADER(a__T,a__class,a__sclass,a__parent)\
0023 private:\
0024   typedef a__parent parent;\
0025 public:\
0026   TOOLS_T_SCLASS(a__T,a__sclass)\
0027 public:\
0028   virtual void* cast(const std::string& a_class) const {\
0029     if(void* p = tools::cmp_cast<a__class>(this,a_class)) return p;\
0030     return parent::cast(a_class);\
0031   }\
0032   virtual const std::string& s_cls() const {return s_class();}
0033 
0034 #define TOOLS_T2_HEADER(a__T1,a__T2,a__class,a__sclass,a__parent)\
0035 private:\
0036   typedef a__parent parent;\
0037 public:\
0038   TOOLS_T2_SCLASS(a__T1,a__T2,a__sclass)\
0039 public:\
0040   virtual void* cast(const std::string& a_class) const {\
0041     if(void* p = tools::cmp_cast<a__class>(this,a_class)) return p;\
0042     return parent::cast(a_class);\
0043   }\
0044   virtual const std::string& s_cls() const {return s_class();}
0045 
0046 #endif