1 | #include "userinfo.h" |
---|
2 | |
---|
3 | class Engine |
---|
4 | { |
---|
5 | public: |
---|
6 | string producer; |
---|
7 | double consumption; |
---|
8 | |
---|
9 | Engine( string producer, double consumption ) |
---|
10 | : producer( producer ), |
---|
11 | consumption( consumption ) |
---|
12 | { |
---|
13 | } |
---|
14 | }; |
---|
15 | |
---|
16 | //! User info for strings |
---|
17 | class EngineUI : public UserInfo<Engine> |
---|
18 | { |
---|
19 | public: |
---|
20 | StringAttribute producer; |
---|
21 | DoubleAttribute consumption; |
---|
22 | |
---|
23 | EngineUI() |
---|
24 | : UserInfo<Engine>( "engine", "type of engine" ), |
---|
25 | producer( "producer"), |
---|
26 | consumption( "consumption") |
---|
27 | { |
---|
28 | producer.Attach( attributes ); |
---|
29 | consumption.Attach( attributes ); |
---|
30 | } |
---|
31 | |
---|
32 | Engine* build() |
---|
33 | { |
---|
34 | return new Engine( producer.value, consumption.value ); |
---|
35 | } |
---|
36 | }; |
---|
37 | |
---|
38 | |
---|
39 | class Car |
---|
40 | { |
---|
41 | public: |
---|
42 | string color; |
---|
43 | int year; |
---|
44 | Engine engine; |
---|
45 | |
---|
46 | Car( string color, int year, Engine engine) |
---|
47 | : color( color ), |
---|
48 | year( year ), |
---|
49 | engine( engine ) |
---|
50 | { |
---|
51 | } |
---|
52 | }; |
---|
53 | |
---|
54 | //! User info for strings |
---|
55 | class CarUI : public UserInfo<Car> |
---|
56 | { |
---|
57 | public: |
---|
58 | EngineUI engine; |
---|
59 | |
---|
60 | StringAttribute color; |
---|
61 | IntAttribute year; |
---|
62 | |
---|
63 | CarUI() |
---|
64 | : UserInfo<Car>("car", "type of a car"), |
---|
65 | color( "color"), |
---|
66 | year( "color" ) |
---|
67 | { |
---|
68 | engine.Attach( elements ); |
---|
69 | |
---|
70 | color.Attach( attributes ); |
---|
71 | year.Attach( attributes ); |
---|
72 | } |
---|
73 | |
---|
74 | Car* build() |
---|
75 | { |
---|
76 | Engine* pEng = engine.build(); |
---|
77 | return new Car(color.value, year.value,*pEng); |
---|
78 | } |
---|
79 | }; |
---|
80 | |
---|
81 | |
---|
82 | int main() |
---|
83 | { |
---|
84 | CarUI car; |
---|
85 | |
---|
86 | car.Save( "car.xml" ); |
---|
87 | |
---|
88 | /* |
---|
89 | car.Load( "car.xml" ); |
---|
90 | Car *pDefaultCar = car.build(); |
---|
91 | cout << "our car has " << pDefaultCar->color << " color"; |
---|
92 | delete pDefaultCar; |
---|
93 | // */ |
---|
94 | |
---|
95 | getchar(); |
---|
96 | return 0; |
---|
97 | } |
---|