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