00001
00002
00011 #ifndef CXXUTILS_ARRAYSCANNER_H
00012 #define CXXUTILS_ARRAYSCANNER_H
00013
00014
00015 #include <istream>
00016
00017
00018 namespace CxxUtils {
00019
00020
00034 class ArrayScanner
00035 {
00036 public:
00043 ArrayScanner (std::istream& is);
00044
00053 bool at_open();
00054
00064 bool at_close();
00065
00074 bool at_end();
00075
00087 template <class T>
00088 bool at_num (T& elt);
00089
00090
00091 private:
00101 bool at_char (char c);
00102
00111 bool at_num_common();
00112
00113
00115 std::istream& m_is;
00116 };
00117
00118
00119 template <class T>
00120 bool ArrayScanner::at_num (T& elt)
00121 {
00122 m_is >> elt;
00123 return at_num_common();
00124 }
00125
00126
00127 }
00128
00129
00130
00131 namespace CaloRec {
00132 using CxxUtils::ArrayScanner;
00133 }
00134
00135
00136 #endif // not CXXUTILS_ARRAYSCANNER_H