00001
00002
00003
00004
00005
00006
00007 #include "GaudiKernel/Parsers.icpp"
00008
00025
00026 namespace Gaudi
00027 {
00028 namespace Parsers
00029 {
00030
00031
00032
00033 StatusCode parse
00034 ( map< int , int >& result ,
00035 const string& input )
00036 {
00037 MapGrammar< IntGrammar<int> , IntGrammar<int> > g;
00038 return parse
00039 ( createIterator(input) ,
00040 IteratorT() ,
00041 g[var(result)=arg1],
00042 SkipperGrammar()).full;
00043 }
00044
00045 StatusCode parse
00046 ( map< int , double >& result ,
00047 const string& input )
00048 {
00049 MapGrammar< IntGrammar<int> , RealGrammar<double> > g;
00050 return parse
00051 ( createIterator(input),
00052 IteratorT(),
00053 g[var(result)=arg1],
00054 SkipperGrammar()).full;
00055 }
00056
00057 StatusCode parse
00058 ( map<string,double>& result ,
00059 const string& input )
00060 {
00061 MapGrammar<StringGrammar,RealGrammar<double> > g;
00062 return parse
00063 ( createIterator(input),
00064 IteratorT(),
00065 g[var(result)=arg1],
00066 SkipperGrammar()).full;
00067 }
00068
00069 StatusCode parse
00070 ( map< string , string >& result ,
00071 const string& input )
00072 {
00073 MapGrammar<StringGrammar,StringGrammar> g;
00074 return parse
00075 ( createIterator(input),
00076 IteratorT(),
00077 g[var(result)=arg1],
00078 SkipperGrammar()).full;
00079 }
00080
00081 StatusCode parse
00082 ( map< string , int >& result ,
00083 const string& input )
00084 {
00085 MapGrammar<StringGrammar,IntGrammar<int> > g;
00086 return parse
00087 ( createIterator(input),
00088 IteratorT(),
00089 g[var(result)=arg1],
00090 SkipperGrammar()).full;
00091 }
00092
00093 StatusCode parse
00094 ( map< std::string , std::vector< std::string > >& result ,
00095 const string& input )
00096 {
00097 MapGrammar<StringGrammar,VectorGrammar<StringGrammar> > g;
00098 return parse
00099 ( createIterator(input),
00100 IteratorT(),
00101 g[var(result)=arg1],
00102 SkipperGrammar()).full;
00103 }
00104
00105 StatusCode parse
00106 ( map< std::string , std::vector< int > >& result ,
00107 const string& input )
00108 {
00109 MapGrammar<StringGrammar,VectorGrammar<IntGrammar<int> > > g;
00110 return parse
00111 ( createIterator(input),
00112 IteratorT(),
00113 g[var(result)=arg1],
00114 SkipperGrammar()).full;
00115 }
00116
00117 StatusCode parse
00118 ( map< std::string , std::vector< double > >& result ,
00119 const string& input )
00120 {
00121 MapGrammar<StringGrammar,VectorGrammar<RealGrammar<double> > > g;
00122 return parse
00123 ( createIterator(input),
00124 IteratorT(),
00125 g[var(result)=arg1],
00126 SkipperGrammar()).full;
00127 }
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156 StatusCode parse ( string& name , string& value , const string& input )
00157 {
00158 return parse
00159 ( input.c_str(),
00160 (
00161 ch_p('"' ) >> (+(anychar_p-ch_p('"' )))[assign_a(name)] >> ch_p('"' )
00162 |
00163 ch_p('\'') >> (+(anychar_p-ch_p('\'')))[assign_a(name)] >> ch_p('\'')
00164 )
00165 >> ":"
00166 >> (+anychar_p)[assign_a(value)], space_p).full;
00167 }
00168
00169 StatusCode parse
00170 ( map<int,std::string>& result ,
00171 const string& input )
00172 {
00173 MapGrammar<IntGrammar<int>,StringGrammar> g;
00174 return parse
00175 ( createIterator(input),
00176 IteratorT(),
00177 g[var(result)=arg1],
00178 SkipperGrammar()).full;
00179 }
00180
00181 StatusCode parse
00182 ( map<unsigned int,std::string>& result ,
00183 const string& input )
00184 {
00185 MapGrammar<IntGrammar<unsigned int>,StringGrammar> g;
00186 return parse
00187 ( createIterator(input),
00188 IteratorT(),
00189 g[var(result)=arg1],
00190 SkipperGrammar()).full;
00191 }
00192
00193 StatusCode parse
00194 ( map<std::string,unsigned int>& result ,
00195 const string& input )
00196 {
00197 MapGrammar<StringGrammar,IntGrammar<unsigned int> > g;
00198 return parse
00199 ( createIterator(input),
00200 IteratorT(),
00201 g[var(result)=arg1],
00202 SkipperGrammar()).full;
00203 }
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216 StatusCode parse
00217 ( std::map<std::string,std::pair<double,double> >& params ,
00218 const std::string& input )
00219 {
00220 typedef PairGrammar< RealGrammar<double> , RealGrammar <double> > PG ;
00221 MapGrammar < StringGrammar , PG > g ;
00222 return parse
00223 ( createIterator(input),
00224 IteratorT(),
00225 g[var(params)=arg1],
00226 SkipperGrammar()).full;
00227 }
00228
00229 }
00230
00231 }
00232
00233
00234
00235
00236