00001
00020 #ifndef VARABLE_H
00021 #define VARABLE_H
00022
00023 #include <stdio.h>
00024 #include "clst.h"
00025 #include "strngs.h"
00026
00027 class DLLSYM INT_VARIABLE;
00028
00029
00030 extern DLLSYM BOOL8 read_variables_file(const char *file
00031 );
00032
00033 extern DLLSYM void print_variables(FILE *fp
00034 );
00035
00036 CLISTIZEH (INT_VARIABLE)
00037
00038
00042 class DLLSYM INT_VAR_FROM
00043 {
00044 friend class INT_VAR_TO;
00045 public:
00046 INT_VAR_FROM();
00047 private:
00048 INT_VARIABLE_CLIST list;
00049 };
00050
00055 class DLLSYM INT_VAR_TO
00056 {
00057 public:
00058 INT_VAR_TO();
00059 private:
00060 INT_VARIABLE_CLIST dummy;
00061 };
00062
00067 class DLLSYM INT_VARIABLE
00068 {
00069 friend class INT_VAR_TO;
00070 friend class INT_VAR_FROM;
00071
00072 friend DLLSYM BOOL8 read_variables_file(const char *file);
00073
00074 public:
00075 INT_VARIABLE(
00076 INT32 v,
00077 const char *vname,
00078 const char *comment);
00079
00080 INT_VARIABLE() {
00081 value = 0;
00082 name = "NONAME";
00083 info = "Uninitialized";
00084 }
00085 ~INT_VARIABLE ();
00086
00087 operator INT32() {
00088 return value;
00089 }
00090
00091 void set_value(
00092 INT32 v) {
00093 value = v;
00094 }
00095
00096 const char *name_str() {
00097 return name;
00098 }
00099
00100 const char *info_str() {
00101 return info;
00102 }
00103
00104
00105 static INT_VARIABLE_CLIST *get_head();
00106
00107 static void print(
00108 FILE *fp);
00109
00110 private:
00111 INT32 value;
00112 const char *name;
00113 const char *info;
00114 static INT_VAR_FROM copy;
00115
00116 static INT_VARIABLE_CLIST head;
00117 static INT_VAR_TO replace;
00118 };
00119
00120 class DLLSYM BOOL_VARIABLE;
00121
00122 CLISTIZEH (BOOL_VARIABLE)
00127 class DLLSYM BOOL_VAR_FROM
00128 {
00129 friend class BOOL_VAR_TO;
00130 public:
00131 BOOL_VAR_FROM();
00132 private:
00133 BOOL_VARIABLE_CLIST list;
00134 };
00135
00140 class DLLSYM BOOL_VAR_TO
00141 {
00142 public:
00143 BOOL_VAR_TO();
00144 private:
00145 BOOL_VARIABLE_CLIST dummy;
00146 };
00147
00152 class DLLSYM BOOL_VARIABLE
00153 {
00154 friend class BOOL_VAR_FROM;
00155 friend class BOOL_VAR_TO;
00156
00157 friend DLLSYM BOOL8 read_variables_file(const char *file);
00158
00159 public:
00160 BOOL_VARIABLE(
00161 BOOL8 v,
00162 const char *vname,
00163 const char *comment);
00164
00165 BOOL_VARIABLE() {
00166 value = FALSE;
00167 name = "NONAME";
00168 info = "Uninitialized";
00169 }
00170 ~BOOL_VARIABLE ();
00171
00172 operator BOOL8() {
00173 return value;
00174 }
00175
00176 void set_value(
00177 BOOL8 v) {
00178 value = v;
00179 }
00180
00181 const char *name_str() {
00182 return name;
00183 }
00184
00185 const char *info_str() {
00186 return info;
00187 }
00188
00189
00190 static BOOL_VARIABLE_CLIST *get_head();
00191
00192 static void print(
00193 FILE *fp);
00194
00195 private:
00196 BOOL8 value;
00197 const char *name;
00198 const char *info;
00199 static BOOL_VAR_FROM copy;
00200
00201 static BOOL_VARIABLE_CLIST head;
00202 static BOOL_VAR_TO replace;
00203 };
00204
00205 class DLLSYM STRING_VARIABLE;
00206
00207 CLISTIZEH (STRING_VARIABLE)
00212 class DLLSYM STRING_VAR_FROM
00213 {
00214 friend class STRING_VAR_TO;
00215 public:
00216 STRING_VAR_FROM();
00217 private:
00218 STRING_VARIABLE_CLIST list;
00219 };
00220
00225 class DLLSYM STRING_VAR_TO
00226 {
00227 public:
00228 STRING_VAR_TO();
00229 private:
00230 STRING_VARIABLE_CLIST dummy;
00231 };
00232
00237 class DLLSYM STRING_VARIABLE
00238 {
00239 friend class STRING_VAR_TO;
00240 friend class STRING_VAR_FROM;
00241
00242 friend DLLSYM BOOL8 read_variables_file(const char *file);
00243
00244 public:
00245 STRING_VARIABLE(
00246 const char *v,
00247 const char *vname,
00248 const char *comment);
00249
00250 STRING_VARIABLE() {
00251 name = "NONAME";
00252 info = "Uninitialized";
00253 }
00254 ~STRING_VARIABLE ();
00255
00256
00257 operator const STRING &() {
00258 return value;
00259 }
00260
00261 void set_value(
00262 STRING v) {
00263 value = v;
00264 }
00265
00266 const char *string() const {
00267 return value.string ();
00268 }
00269
00270 const char *name_str() {
00271 return name;
00272 }
00273
00274 const char *info_str() {
00275 return info;
00276 }
00277
00278
00279 static STRING_VARIABLE_CLIST *get_head();
00280
00281 static void print(
00282 FILE *fp);
00283
00284 private:
00285 STRING value;
00286 const char *name;
00287 const char *info;
00288 static STRING_VAR_FROM copy;
00289
00290 static STRING_VARIABLE_CLIST head;
00291 static STRING_VAR_TO replace;
00292 };
00293
00294 class DLLSYM double_VARIABLE;
00295
00296 CLISTIZEH (double_VARIABLE)
00301 class DLLSYM double_VAR_FROM
00302 {
00303 friend class double_VAR_TO;
00304 public:
00305 double_VAR_FROM();
00306 private:
00307 double_VARIABLE_CLIST list;
00308 };
00309
00314 class DLLSYM double_VAR_TO
00315 {
00316 public:
00317 double_VAR_TO();
00318 private:
00319 double_VARIABLE_CLIST dummy;
00320 };
00321
00326 class DLLSYM double_VARIABLE
00327 {
00328 friend class double_VAR_TO;
00329 friend class double_VAR_FROM;
00330
00331 friend DLLSYM BOOL8 read_variables_file(const char *file);
00332
00333 public:
00334 double_VARIABLE(
00335 double v,
00336 const char *vname,
00337 const char *comment);
00338
00339 double_VARIABLE() {
00340 value = 0.0;
00341 name = "NONAME";
00342 info = "Uninitialized";
00343 }
00344 ~double_VARIABLE ();
00345
00346 operator double() {
00347 return value;
00348 }
00349
00350 void set_value(
00351 double v) {
00352 value = v;
00353 }
00354
00355 const char *name_str() {
00356 return name;
00357 }
00358
00359 const char *info_str() {
00360 return info;
00361 }
00362
00363
00364 static double_VARIABLE_CLIST *get_head();
00365
00366 static void print(
00367 FILE *fp);
00368
00369 private:
00370 double value;
00371 const char *name;
00372 const char *info;
00373 static double_VAR_FROM copy;
00374
00375 static double_VARIABLE_CLIST head;
00376 static double_VAR_TO replace;
00377 };
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396 #ifdef SECURE_NAMES
00397
00398 #define INT_VAR(name,val,comment) \
00399 INT_VARIABLE name(val,"","")
00400
00401 #define BOOL_VAR(name,val,comment) \
00402 BOOL_VARIABLE name(val,"","")
00403
00404 #define STRING_VAR(name,val,comment) \
00405 STRING_VARIABLE name(val,"","")
00406
00407 #define double_VAR(name,val,comment) \
00408 double_VARIABLE name(val,"","")
00409
00410 #else
00411
00412 #define INT_VAR(name,val,comment) \
00413 INT_VARIABLE name(val,#name,comment)
00414
00415 #define BOOL_VAR(name,val,comment) \
00416 BOOL_VARIABLE name(val,#name,comment)
00417
00418 #define STRING_VAR(name,val,comment) \
00419 STRING_VARIABLE name(val,#name,comment)
00420
00421 #define double_VAR(name,val,comment) \
00422 double_VARIABLE name(val,#name,comment)
00423 #endif
00424
00425 #define INT_VAR_H(name,val,comment) \
00426 INT_VARIABLE name
00427
00428 #define BOOL_VAR_H(name,val,comment) \
00429 BOOL_VARIABLE name
00430
00431 #define STRING_VAR_H(name,val,comment) \
00432 STRING_VARIABLE name
00433
00434 #define double_VAR_H(name,val,comment) \
00435 double_VARIABLE name
00436
00437 #define INT_EVAR(name,val,comment) \
00438 INT_VARIABLE name(val,#name,comment)
00439
00440 #define INT_EVAR_H(name,val,comment) \
00441 INT_VARIABLE name
00442
00443 #define BOOL_EVAR(name,val,comment) \
00444 BOOL_VARIABLE name(val,#name,comment)
00445
00446 #define BOOL_EVAR_H(name,val,comment) \
00447 BOOL_VARIABLE name
00448
00449 #define STRING_EVAR(name,val,comment) \
00450 STRING_VARIABLE name(val,#name,comment)
00451
00452 #define STRING_EVAR_H(name,val,comment) \
00453 STRING_VARIABLE name
00454
00455 #define double_EVAR(name,val,comment) \
00456 double_VARIABLE name(val,#name,comment)
00457
00458 #define double_EVAR_H(name,val,comment) \
00459 double_VARIABLE name
00460 #endif