Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/branches/levelLoader/src/util/loading/load_param.h @ 4242

Last change on this file since 4242 was 4242, checked in by bensch, 20 years ago

orxonox/branches/levelLoader: better compatibility with more functions

File size: 5.7 KB
Line 
1
2#ifndef _LOAD_PARAM_H
3#define _LOAD_PARAM_H
4
5#include "factory.h"
6#include "debug.h"
7#include "substring.h"
8
9// abstract base class
10class baseLoadParam
11{
12 public:
13  //  virtual void Call(const char* string)=0;        // call using function
14};
15
16
17// derived template class
18template<class T> class LoadParam : public baseLoadParam
19{
20 public:
21  // 1. CONST CHAR*
22  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const char*))
23    {
24      const char* loadString = grabParameter(root, paramName);
25      if (loadString != NULL)
26        (*pt2Object.*function)(loadString);
27      else 
28        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
29    };
30
31  // 2. CONST CHAR*
32  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const char*, const char*))
33    {
34      const char* loadString = grabParameter(root, paramName);
35      if (loadString != NULL)
36        {
37          SubString subLoads(loadString);
38          (*pt2Object.*function)(subLoads.getString(0), subLoads.getString(1));
39        }
40      else 
41        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
42    };
43
44  // 3. CONST CHAR*
45  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const char*, const char*, const char*))
46    {
47      const char* loadString = grabParameter(root, paramName);
48      if (loadString != NULL)
49        {
50          SubString subLoads(loadString);
51          (*pt2Object.*function)(subLoads.getString(0), subLoads.getString(1), subLoads.getString(2));
52        }
53      else 
54        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
55    };
56
57  // 4. CONST CHAR*
58  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const char*, const char*, const char*, const char*))
59    {
60      const char* loadString = grabParameter(root, paramName);
61      if (loadString != NULL)
62        {
63          SubString subLoads(loadString);
64          (*pt2Object.*function)(subLoads.getString(0), subLoads.getString(1), subLoads.getString(2), subLoads.getString(3));
65        }
66      else 
67        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
68    };
69
70  // 1. FLOAT
71  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(float))
72    {
73      const char* loadString = grabParameter(root, paramName);
74      if (loadString != NULL)
75        (*pt2Object.*function)(atof(loadString));
76      else 
77        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
78    };
79
80  // 2. FLOAT
81  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(float, float))
82    {
83      const char* loadString = grabParameter(root, paramName);
84      if (loadString != NULL)
85        {
86          SubString subLoads(loadString);
87          (*pt2Object.*function)(atof(subLoads.getString(0)), atof(subLoads.getString(1)));
88        }
89      else 
90        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
91    };
92
93  // 3. FLOAT
94  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(float, float, float))
95    {
96      const char* loadString = grabParameter(root, paramName);
97      if (loadString != NULL)
98        {
99          SubString subLoads(loadString);
100          (*pt2Object.*function)(atof(subLoads.getString(0)), atof(subLoads.getString(1)), atof(subLoads.getString(2)));
101        }
102      else 
103        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
104    };
105
106  // 4. FLOAT
107  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(float, float, float, float))
108    {
109      const char* loadString = grabParameter(root, paramName);
110      if (loadString != NULL)
111        {
112          SubString subLoads(loadString);
113          (*pt2Object.*function)(atof(subLoads.getString(0)), atof(subLoads.getString(1)), atof(subLoads.getString(2)), atof(subLoads.getString(3)));
114        }
115      else 
116        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
117    };
118
119  // 1. INT
120  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(int))
121    {
122      const char* loadString = grabParameter(root, paramName);
123      if (loadString != NULL)
124        (*pt2Object.*function)(atoi(loadString));
125      else 
126        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
127    };
128
129  // 2. INT
130  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(int, int))
131    {
132      const char* loadString = grabParameter(root, paramName);
133      if (loadString != NULL)
134        {
135          SubString subLoads(loadString);
136          (*pt2Object.*function)(atoi(subLoads.getString(0)), atoi(subLoads.getString(1)));
137        }
138      else 
139        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
140    };
141
142  // 3. INT
143  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(int, int, int))
144    {
145      const char* loadString = grabParameter(root, paramName);
146      if (loadString != NULL)
147        {
148          SubString subLoads(loadString);
149          (*pt2Object.*function)(atoi(subLoads.getString(0)), atoi(subLoads.getString(1)), atoi(subLoads.getString(2)));
150        }
151      else 
152        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
153    };
154
155  // 4. INT
156  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(int, int, int, int))
157    {
158      const char* loadString = grabParameter(root, paramName);
159      if (loadString != NULL)
160        {
161          SubString subLoads(loadString);
162          (*pt2Object.*function)(atoi(subLoads.getString(0)), atoi(subLoads.getString(1)), atoi(subLoads.getString(2)), atoi(subLoads.getString(3)));
163        }
164      else 
165        PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
166    };
167
168};
169
170
171#endif /* _LOAD_PARAM_H */
Note: See TracBrowser for help on using the repository browser.