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