#pragma warning (disable: 4786) #include #include #include #include using namespace xParam; using namespace std; struct everything { public: string msg; everything(bool b) : msg("From bool") {} everything(char c) : msg("From char") {} everything(unsigned char uc) : msg("From unsigned char") {} everything(short s) : msg("From short") {} everything(unsigned short us) : msg("From unsigned short") {} everything(int i) : msg("From int") {} everything(unsigned int ui) : msg("From unsigned int") {} everything(long l) : msg("From long") {} everything(unsigned long ul) : msg("From unsigned long") {} everything(long long ll) : msg("From long long") {} everything(unsigned long long ull) : msg("From unsigned long long") {} everything(float f) : msg("From float") {} everything(double d) : msg("From double") {} everything(long double ld) : msg("From long double") {} everything(const string& s) : msg("From string") {} everything(const vector& vb) : msg("From vector of bool") {} everything(const vector& vc) : msg("From vector of char") {} everything(const vector& vuc) : msg("From vector of unsigned char") {} everything(const vector& vs) : msg("From vector of short") {} everything(const vector& vus) : msg("From vector of unsigned short") {} everything(const vector& vi) : msg("From vector of int") {} everything(const vector& vui) : msg("From vector of unsigned int") {} everything(const vector& vl) : msg("From vector of long") {} everything(const vector& vul) : msg("From vector of unsigned long") {} everything(const vector& vll) : msg("From vector of long long") {} everything(const vector& vul) : msg("From vector of unsigned long long") {} everything(const vector& vf) : msg("From vector of float") {} everything(const vector& vd) : msg("From vector of double") {} everything(const vector& vld) : msg("From vector of long double") {} everything(const vector& vs) : msg("From vector of string") {} }; class everything_output { public: static ValueList sub_objects(const everything& e) { ValueList vl; return vl << Val( e.msg ); } }; PARAM_BEGIN_REG PARAM_CLASS(everything); param_ctor(TypeTag(),ByVal("b")); param_ctor(TypeTag(),ByVal("c")); param_ctor(TypeTag(),ByVal("uc")); param_ctor(TypeTag(),ByVal("s")); param_ctor(TypeTag(),ByVal("us")); param_ctor(TypeTag(),ByVal("i")); param_ctor(TypeTag(),ByVal("ui")); param_ctor(TypeTag(),ByVal("l")); param_ctor(TypeTag(),ByVal("ul")); param_ctor(TypeTag(),ByVal("ll")); param_ctor(TypeTag(),ByVal("ull")); param_ctor(TypeTag(),ByVal("f")); param_ctor(TypeTag(),ByVal("d")); param_ctor(TypeTag(),ByVal("ld")); param_ctor(TypeTag(),ConstRef("s")); param_ctor(TypeTag(),ConstRef >("vb")); param_ctor(TypeTag(),ConstRef >("vc")); param_ctor(TypeTag(),ConstRef >("vuc")); param_ctor(TypeTag(),ConstRef >("vs")); param_ctor(TypeTag(),ConstRef >("vus")); param_ctor(TypeTag(),ConstRef >("vi")); param_ctor(TypeTag(),ConstRef >("vui")); param_ctor(TypeTag(),ConstRef >("vl")); param_ctor(TypeTag(),ConstRef >("vul")); param_ctor(TypeTag(),ConstRef >("vll")); param_ctor(TypeTag(),ConstRef >("vull")); param_ctor(TypeTag(),ConstRef >("vf")); param_ctor(TypeTag(),ConstRef >("vd")); param_ctor(TypeTag(),ConstRef >("vld")); param_ctor(TypeTag(),ConstRef >("vs")); param_output(); param_vector(); PARAM_END_REG int main(void) { try { xparam_init(); cout << "Testing constructors..." << endl; { vector v; ParamSet ps; ps << ioParamVar(v,"v"); const char* argv[]={"progname", "v=true, '1', uchar('1'), short(1), ushort(1),", "1, 1u, 1U, 1l, 1L, 1UL, 1ul, 1uL, 1Ul,", "1.0, 1.0f, hello, longlong(1), ulonglong(1),", "[true], ['1'], [uchar('1')], [short(1)], [ushort(1)],", "[1], [1u], [1U], [1l], [1L], [1UL], [1ul],", "[1uL], [1Ul],", "[1.0], [1.0f], [hello],", "[longlong(1)], [ulonglong(1)],", "1.0l, 1.0L, [1.0l], [1.0L]"}; ps.input(10,argv); ps.output(); } cout << "Testing conversions..." << endl; { vector vll; vector vull; vector vld; ParamSet ps; ps << ioParamVar(vll,"vll") << ioParamVar(vull,"vull") << ioParamVar(vld,"vld"); const char* argv[]={"progname", "vll=[1.0l] vull=[1.0l] vld=ulonglong(1),longlong(1)"}; ps.input(2,argv); ps.output(); } } catch (Error e) { cout << "Unexpected error:" << endl; cout << e.what() << endl; } return 0; }