G4AttValueFilterT< T, ConversionErrorPolicy > Class Template Reference

#include <G4AttValueFilterT.hh>

Inheritance diagram for G4AttValueFilterT< T, ConversionErrorPolicy >:

G4VAttValueFilter G4VFilter< G4AttValue >

Public Member Functions

 G4AttValueFilterT ()
virtual ~G4AttValueFilterT ()
G4bool Accept (const G4AttValue &attVal) const
G4bool GetValidElement (const G4AttValue &input, G4String &interval) const
virtual void PrintAll (std::ostream &ostr) const
virtual void Reset ()
void LoadIntervalElement (const G4String &input)
void LoadSingleValueElement (const G4String &input)

Detailed Description

template<typename T, typename ConversionErrorPolicy = G4ConversionFatalError>
class G4AttValueFilterT< T, ConversionErrorPolicy >

Definition at line 71 of file G4AttValueFilterT.hh.


Constructor & Destructor Documentation

template<typename T, typename ConversionErrorPolicy>
G4AttValueFilterT< T, ConversionErrorPolicy >::G4AttValueFilterT (  ) 

Definition at line 107 of file G4AttValueFilterT.hh.

00107 {}

template<typename T, typename ConversionErrorPolicy>
G4AttValueFilterT< T, ConversionErrorPolicy >::~G4AttValueFilterT (  )  [virtual]

Definition at line 110 of file G4AttValueFilterT.hh.

00110 {}


Member Function Documentation

template<typename T, typename ConversionErrorPolicy>
G4bool G4AttValueFilterT< T, ConversionErrorPolicy >::Accept ( const G4AttValue attVal  )  const [virtual]

Implements G4VAttValueFilter.

Definition at line 142 of file G4AttValueFilterT.hh.

References G4ConversionUtils::Convert(), and G4AttValue::GetValue().

00143 {
00144   T value;
00145 
00146   G4String input = attValue.GetValue();
00147   if (!G4ConversionUtils::Convert(input, value)) ConversionErrorPolicy::ReportError(input, "Invalid format. Was the input data formatted correctly ?"); 
00148   
00149   typename SingleValueMap::const_iterator iterValues = 
00150     std::find_if(fSingleValueMap.begin(), fSingleValueMap.end(), IsEqual<T>(value));
00151 
00152   if (iterValues != fSingleValueMap.end()) return true;
00153   
00154   typename IntervalMap::const_iterator iterIntervals = 
00155     std::find_if(fIntervalMap.begin(), fIntervalMap.end(), InInterval<T>(value));
00156 
00157   if (iterIntervals != fIntervalMap.end()) return true;
00158 
00159   return false;
00160 }

template<typename T, typename ConversionErrorPolicy>
G4bool G4AttValueFilterT< T, ConversionErrorPolicy >::GetValidElement ( const G4AttValue input,
G4String interval 
) const [virtual]

Implements G4VAttValueFilter.

Definition at line 114 of file G4AttValueFilterT.hh.

References G4ConversionUtils::Convert(), G4String::first(), and G4AttValue::GetValue().

00115 {
00116   T value;
00117   
00118   G4String input = attValue.GetValue();
00119   if (!G4ConversionUtils::Convert(input, value)) ConversionErrorPolicy::ReportError(input, "Invalid format. Was the input data formatted correctly ?"); 
00120   
00121   typename SingleValueMap::const_iterator iterValues = 
00122     std::find_if(fSingleValueMap.begin(), fSingleValueMap.end(), IsEqual<T>(value));
00123 
00124   if (iterValues != fSingleValueMap.end()) {
00125     element = iterValues->first;
00126     return true;
00127   }
00128   
00129   typename IntervalMap::const_iterator iterIntervals = 
00130     std::find_if(fIntervalMap.begin(), fIntervalMap.end(), InInterval<T>(value));
00131 
00132   if (iterIntervals != fIntervalMap.end()) {
00133     element = iterIntervals->first;
00134     return true;
00135   }
00136 
00137   return false;
00138 }

template<typename T, typename ConversionErrorPolicy>
void G4AttValueFilterT< T, ConversionErrorPolicy >::LoadIntervalElement ( const G4String input  )  [virtual]

Implements G4VAttValueFilter.

Definition at line 164 of file G4AttValueFilterT.hh.

References G4ConversionUtils::Convert().

00165 {
00166   T min;
00167   T max;
00168 
00169   if (!G4ConversionUtils::Convert(input, min, max)) ConversionErrorPolicy::ReportError(input, "Invalid format. Was the input data formatted correctly ?");
00170 
00171   std::pair<T, T> myPair(min, max);
00172   fIntervalMap[input] = myPair;
00173 }

template<typename T, typename ConversionErrorPolicy>
void G4AttValueFilterT< T, ConversionErrorPolicy >::LoadSingleValueElement ( const G4String input  )  [virtual]

Implements G4VAttValueFilter.

Definition at line 177 of file G4AttValueFilterT.hh.

References G4ConversionUtils::Convert().

00178 {
00179   T output;
00180   
00181   if (!G4ConversionUtils::Convert(input, output)) ConversionErrorPolicy::ReportError(input, "Invalid format. Was the input data formatted correctly ?");
00182 
00183   fSingleValueMap[input] = output;
00184 }

template<typename T, typename ConversionErrorPolicy>
void G4AttValueFilterT< T, ConversionErrorPolicy >::PrintAll ( std::ostream &  ostr  )  const [virtual]

Implements G4VAttValueFilter.

Definition at line 188 of file G4AttValueFilterT.hh.

References G4VFilter< G4AttValue >::Name().

00189 {
00190   ostr<<"Printing data for filter: "<<Name()<<std::endl;
00191 
00192   ostr<<"Interval data:"<<std::endl;
00193 
00194   typename IntervalMap::const_iterator iterIntervals = fIntervalMap.begin();
00195  
00196   while (iterIntervals != fIntervalMap.end()) {
00197     ostr<<iterIntervals->second.first<<" : "<<iterIntervals->second.second<<std::endl;
00198     iterIntervals++;
00199   }
00200 
00201   ostr<<"Single value data:"<<std::endl;
00202 
00203   typename SingleValueMap::const_iterator iterValues = fSingleValueMap.begin();
00204  
00205   while (iterValues != fSingleValueMap.end()) {
00206     ostr<<iterValues->second<<std::endl;
00207     iterValues++;
00208   }
00209 }

template<typename T, typename ConversionErrorPolicy>
void G4AttValueFilterT< T, ConversionErrorPolicy >::Reset (  )  [virtual]

Implements G4VAttValueFilter.

Definition at line 213 of file G4AttValueFilterT.hh.

00214 {
00215   fIntervalMap.clear();
00216   fSingleValueMap.clear();
00217 }


The documentation for this class was generated from the following file:
Generated on Mon May 27 17:51:29 2013 for Geant4 by  doxygen 1.4.7