122a123,134
> # Prerequisites for .ini parsing with cxx_ini_parse
> @classmethod
> def cxx_ini_predecls(cls, code):
> pass
>
> # parse a .ini file entry for this param from string expression
> # src into lvalue dest (of the param's C++ type)
> @classmethod
> def cxx_ini_parse(cls, code, src, dest, ret):
> code('// Unhandled param type: %s' % cls.__name__)
> code('%s false;' % ret)
>
456a469,473
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('%s = %s;' % (dest, src))
> code('%s true;' % ret)
>
502a520,532
> @classmethod
> def cxx_ini_predecls(cls, code):
> # Assume that base/str.hh will be included anyway
> # code('#include "base/str.hh"')
> pass
>
> # The default for parsing PODs from an .ini entry is to extract from an
> # istringstream and let overloading choose the right type according to
> # the dest type.
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('%s to_number(%s, %s);' % (ret, src, dest))
>
594a625,638
> @classmethod
> def cxx_ini_predecls(cls, code):
> # Assume that base/str.hh will be included anyway
> # code('#include "base/str.hh"')
> pass
>
> @classmethod
> def cxx_ini_parse(cls, code, src, dest, ret):
> code('uint64_t _temp;')
> code('bool _ret = to_number(%s, _temp);' % src)
> code('if (_ret)')
> code(' %s = Cycles(_temp);' % dest)
> code('%s _ret;' % ret)
>
615a660,667
> @classmethod
> def cxx_ini_predecls(cls, code):
> code('#include <sstream>')
>
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('%s (std::istringstream(%s) >> %s).eof();' % (ret, src, dest))
>
740a793,810
> @classmethod
> def cxx_ini_predecls(cls, code):
> code('#include <sstream>')
>
> @classmethod
> def cxx_ini_parse(cls, code, src, dest, ret):
> code('uint64_t _start, _end;')
> code('char _sep;')
> code('std::istringstream _stream(${src});')
> code('_stream >> _start;')
> code('_stream.get(_sep);')
> code('_stream >> _end;')
> code('bool _ret = !_stream.fail() &&'
> '_stream.eof() && _sep == \':\';')
> code('if (_ret)')
> code(' ${dest} = AddrRange(_start, _end);')
> code('${ret} _ret;')
>
785a856,865
> @classmethod
> def cxx_ini_predecls(cls, code):
> # Assume that base/str.hh will be included anyway
> # code('#include "base/str.hh"')
> pass
>
> @classmethod
> def cxx_ini_parse(cls, code, src, dest, ret):
> code('%s to_bool(%s, %s);' % (ret, src, dest))
>
852a933,937
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('%s = Net::EthAddr(%s);' % (dest, src))
> code('%s true;' % ret)
>
1156a1242,1251
> @classmethod
> def cxx_ini_predecls(cls, code):
> code('#include <time.h>')
>
> @classmethod
> def cxx_ini_parse(cls, code, src, dest, ret):
> code('char *_parse_ret = strptime((${src}).c_str(),')
> code(' "%a %b %d %H:%M:%S %Y", &(${dest}));')
> code('${ret} _parse_ret && *_parse_ret == \'\\0\';');
>
1308a1404,1416
> @classmethod
> def cxx_ini_parse(cls, code, src, dest, ret):
> code('if (false) {')
> for elem_name in cls.map.iterkeys():
> code('} else if (%s == "%s") {' % (src, elem_name))
> code.indent()
> code('%s = Enums::%s;' % (dest, elem_name))
> code('%s true;' % ret)
> code.dedent()
> code('} else {')
> code(' %s false;' % ret)
> code('}')
>
1338a1447,1456
> @classmethod
> def cxx_ini_predecls(cls, code):
> code('#include <sstream>')
>
> # Ticks are expressed in seconds in JSON files and in plain
> # Ticks in .ini files. Switch based on a config flag
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('${ret} to_number(${src}, ${dest});')
>
1487a1606,1613
> @classmethod
> def cxx_ini_predecls(cls, code):
> code('#include <sstream>')
>
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('%s (std::istringstream(%s) >> %s).eof();' % (ret, src, dest))
>
1512a1639,1646
> @classmethod
> def cxx_ini_predecls(cls, code):
> code('#include <sstream>')
>
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('%s (std::istringstream(%s) >> %s).eof();' % (ret, src, dest))
>
1543a1678,1685
> @classmethod
> def cxx_ini_predecls(cls, code):
> code('#include <sstream>')
>
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('%s (std::istringstream(%s) >> %s).eof();' % (ret, src, dest))
>
1573a1716,1723
> @classmethod
> def cxx_ini_predecls(cls, code):
> code('#include <sstream>')
>
> @classmethod
> def cxx_ini_parse(self, code, src, dest, ret):
> code('%s (std::istringstream(%s) >> %s).eof();' % (ret, src, dest))
>