root/tests/UI/UIbuilder_test.cpp @ 248

Revision 248, 1.4 kB (checked in by smidl, 16 years ago)

doc

Line 
1#include <libconfig.h++>
2#include <fstream>
3#include <iostream>
4#include <sstream>
5
6#include "uibuilder.h"
7
8using namespace libconfig;
9using namespace std;
10using namespace itpp;
11
12class cls {
13        public:
14                int a;
15                string S;
16                cls(int a0, string S0):a(a0),S(S0){};
17                virtual void print(){cout << a << " and "<< S << endl;}
18};
19class cls2: public cls{
20        public:
21        cls2(int a0, string S0):cls(a0,S0){};
22        void print(){cout << a << " or "<< S << endl;}
23};
24
25class UItest : public UIbuilder{
26        public:
27        UItest():UIbuilder("test"){}
28        void build(Setting &S, void** ret) const{
29                try{
30                        int a=S["a"];
31                        string St;
32                        S.lookupValue("S",St);
33                        cls* tmp = new cls(a,St);
34                        *ret=tmp;
35                }
36                catch (...){
37                        it_error(string(S.getPath()) + " is not a valid test UI");
38                }
39        }       
40};
41
42class UItest2 : public UIbuilder{
43        public:
44        UItest2():UIbuilder("test2"){}
45        void build(Setting &S, void** ret) const{
46                try{
47                        int a=S["a"];
48                        string St;
49                        S.lookupValue("S",St);
50                        cls* tmp = new cls2(a,St);
51                        *ret=tmp;
52                }
53                catch (...){
54                        it_error(string(S.getPath()) + " is not a valid test UI");
55                }
56        }       
57        int no(){return 2;}
58};
59
60UIREGISTER(UItest);
61UIREGISTER(UItest2);
62//UItest* UItest_instance = new UItest();
63//UItest2* UItest2_instance = new UItest2();
64
65int main(){
66
67UIFile UI("UIbuilder_test.cfg");
68
69cls* Cls;
70UIbuild(UI.lookup("test"),&Cls);
71cls* Cls2;
72UIbuild(UI.lookup("test2"),&Cls2);
73cls* Cls3;
74UIbuild(UI.lookup("test3"),&Cls3);
75
76Cls->print();
77Cls2->print();
78Cls3->print();
79return 0;
80}
Note: See TracBrowser for help on using the browser.