From 8898ad9b25fca6afe2374d293a981db02a83d7e9 Mon Sep 17 00:00:00 2001 From: "FWoltermann@gmail.com" Date: Thu, 31 May 2012 14:46:27 +0000 Subject: Committing the documentation to svn to have it accessible online --- Doc/doxygen/html/_parse_util_8cpp_source.html | 598 ++++++++++++++++++++++++++ 1 file changed, 598 insertions(+) create mode 100644 Doc/doxygen/html/_parse_util_8cpp_source.html (limited to 'Doc/doxygen/html/_parse_util_8cpp_source.html') diff --git a/Doc/doxygen/html/_parse_util_8cpp_source.html b/Doc/doxygen/html/_parse_util_8cpp_source.html new file mode 100644 index 0000000..98e3602 --- /dev/null +++ b/Doc/doxygen/html/_parse_util_8cpp_source.html @@ -0,0 +1,598 @@ + + + + + +Starshatter_Open: D:/SRC/StarshatterSVN/nGenEx/ParseUtil.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Starshatter_Open +
+
Open source Starshatter engine
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
ParseUtil.cpp
+
+
+Go to the documentation of this file.
1 /* Project nGenEx
+
2  Destroyer Studios LLC
+
3  Copyright © 1997-2004. All Rights Reserved.
+
4 
+
5  SUBSYSTEM: nGenEx.lib
+
6  FILE: ParseUtil.cpp
+
7  AUTHOR: John DiCamillo
+
8 
+
9 
+
10  OVERVIEW
+
11  ========
+
12  Parser utility functions
+
13 */
+
14 
+
15 #include "MemDebug.h"
+
16 #include "ParseUtil.h"
+
17 #include "DataLoader.h"
+
18 
+
19 #include "stdio.h"
+
20 
+
21 // +--------------------------------------------------------------------+
+
22 
+
23 bool GetDefBool(bool& dst, TermDef* def, const char* file)
+
24 {
+
25  if (!def || !def->term()) {
+
26  Print("WARNING: missing BOOL TermDef in '%s'\n", file);
+
27  return false;
+
28  }
+
29 
+
30  TermBool* tn = def->term()->isBool();
+
31  if (tn) {
+
32  dst = tn->value();
+
33  return true;
+
34  }
+
35  else {
+
36  Print("WARNING: invalid bool %s in '%s'. value = ", def->name()->value().data(), file);
+
37  def->term()->print(10);
+
38  Print("\n");
+
39  }
+
40 
+
41  return false;
+
42 }
+
43 
+
44 bool GetDefText(Text& dst, TermDef* def, const char* file)
+
45 {
+
46  if (!def || !def->term()) {
+
47  Print("WARNING: missing TEXT TermDef in '%s'\n", file);
+
48  return false;
+
49  }
+
50 
+
51  TermText* tn = def->term()->isText();
+
52  if (tn) {
+
53  dst = tn->value();
+
54  return true;
+
55  }
+
56  else
+
57  Print("WARNING: invalid TEXT %s in '%s'\n", def->name()->value().data(), file);
+
58 
+
59  return false;
+
60 }
+
61 
+
62 bool GetDefText(char* dst, TermDef* def, const char* file)
+
63 {
+
64  if (!def || !def->term()) {
+
65  Print("WARNING: missing TEXT TermDef in '%s'\n", file);
+
66  return false;
+
67  }
+
68 
+
69  TermText* tn = def->term()->isText();
+
70  if (tn) {
+
71  strcpy(dst, tn->value());
+
72  return true;
+
73  }
+
74  else
+
75  Print("WARNING: invalid TEXT %s in '%s'\n", def->name()->value().data(), file);
+
76 
+
77  return false;
+
78 }
+
79 
+
80 bool GetDefNumber(int& dst, TermDef* def, const char* file)
+
81 {
+
82  if (!def || !def->term()) {
+
83  Print("WARNING: missing NUMBER TermDef in '%s'\n", file);
+
84  return false;
+
85  }
+
86 
+
87  TermNumber* tr = def->term()->isNumber();
+
88  if (tr) {
+
89  dst = (int) tr->value();
+
90  return true;
+
91  }
+
92  else
+
93  Print("WARNING: invalid NUMBER %s in '%s'\n", def->name()->value().data(), file);
+
94 
+
95  return false;
+
96 }
+
97 
+
98 bool GetDefNumber(DWORD& dst, TermDef* def, const char* file)
+
99 {
+
100  if (!def || !def->term()) {
+
101  Print("WARNING: missing NUMBER TermDef in '%s'\n", file);
+
102  return false;
+
103  }
+
104 
+
105  TermNumber* tr = def->term()->isNumber();
+
106  if (tr) {
+
107  dst = (DWORD) tr->value();
+
108  return true;
+
109  }
+
110  else
+
111  Print("WARNING: invalid NUMBER %s in '%s'\n", def->name()->value().data(), file);
+
112 
+
113  return false;
+
114 }
+
115 
+
116 bool GetDefNumber(float& dst, TermDef* def, const char* file)
+
117 {
+
118  if (!def || !def->term()) {
+
119  Print("WARNING: missing NUMBER TermDef in '%s'\n", file);
+
120  return false;
+
121  }
+
122 
+
123  TermNumber* tr = def->term()->isNumber();
+
124  if (tr) {
+
125  dst = (float) tr->value();
+
126  return true;
+
127  }
+
128  else
+
129  Print("WARNING: invalid NUMBER %s in '%s'\n", def->name()->value().data(), file);
+
130 
+
131  return false;
+
132 }
+
133 
+
134 bool GetDefNumber(double& dst, TermDef* def, const char* file)
+
135 {
+
136  if (!def || !def->term()) {
+
137  Print("WARNING: missing NUMBER TermDef in '%s'\n", file);
+
138  return false;
+
139  }
+
140 
+
141  TermNumber* tr = def->term()->isNumber();
+
142  if (tr) {
+
143  dst = (double) tr->value();
+
144  return true;
+
145  }
+
146  else
+
147  Print("WARNING: invalid NUMBER %s in '%s'\n", def->name()->value().data(), file);
+
148 
+
149  return false;
+
150 }
+
151 
+
152 bool GetDefVec(Vec3& dst, TermDef* def, const char* file)
+
153 {
+
154  if (!def || !def->term()) {
+
155  Print("WARNING: missing VEC3 TermDef in '%s'\n", file);
+
156  return false;
+
157  }
+
158 
+
159  TermArray* val = def->term()->isArray();
+
160  if (val) {
+
161  if (val->elements()->size() != 3) {
+
162  Print("WARNING: malformed vector in '%s'\n", file);
+
163  }
+
164  else {
+
165  dst.x = (float) (val->elements()->at(0)->isNumber()->value());
+
166  dst.y = (float) (val->elements()->at(1)->isNumber()->value());
+
167  dst.z = (float) (val->elements()->at(2)->isNumber()->value());
+
168 
+
169  return true;
+
170  }
+
171  }
+
172  else {
+
173  Print("WARNING: vector expected in '%s'\n", file);
+
174  }
+
175 
+
176  return false;
+
177 }
+
178 
+
179 bool GetDefRect(Rect& dst, TermDef* def, const char* file)
+
180 {
+
181  if (!def || !def->term()) {
+
182  Print("WARNING: missing RECT TermDef in '%s'\n", file);
+
183  return false;
+
184  }
+
185 
+
186  TermArray* val = def->term()->isArray();
+
187  if (val) {
+
188  if (val->elements()->size() != 4) {
+
189  Print("WARNING: malformed rect in '%s'\n", file);
+
190  }
+
191  else {
+
192  dst.x = (int) (val->elements()->at(0)->isNumber()->value());
+
193  dst.y = (int) (val->elements()->at(1)->isNumber()->value());
+
194  dst.w = (int) (val->elements()->at(2)->isNumber()->value());
+
195  dst.h = (int) (val->elements()->at(3)->isNumber()->value());
+
196 
+
197  return true;
+
198  }
+
199  }
+
200  else {
+
201  Print("WARNING: rect expected in '%s'\n", file);
+
202  }
+
203 
+
204  return false;
+
205 }
+
206 
+
207 bool GetDefInsets(Insets& dst, TermDef* def, const char* file)
+
208 {
+
209  if (!def || !def->term()) {
+
210  Print("WARNING: missing Insets TermDef in '%s'\n", file);
+
211  return false;
+
212  }
+
213 
+
214  TermArray* val = def->term()->isArray();
+
215  if (val) {
+
216  if (val->elements()->size() != 4) {
+
217  Print("WARNING: malformed Insets in '%s'\n", file);
+
218  }
+
219  else {
+
220  dst.left = (WORD) (val->elements()->at(0)->isNumber()->value());
+
221  dst.right = (WORD) (val->elements()->at(1)->isNumber()->value());
+
222  dst.top = (WORD) (val->elements()->at(2)->isNumber()->value());
+
223  dst.bottom = (WORD) (val->elements()->at(3)->isNumber()->value());
+
224 
+
225  return true;
+
226  }
+
227  }
+
228  else {
+
229  Print("WARNING: Insets expected in '%s'\n", file);
+
230  }
+
231 
+
232  return false;
+
233 }
+
234 
+
235 bool GetDefColor(Color& dst, TermDef* def, const char* file)
+
236 {
+
237  if (!def || !def->term()) {
+
238  Print("WARNING: missing COLOR TermDef in '%s'\n", file);
+
239  return false;
+
240  }
+
241 
+
242  TermArray* val = def->term()->isArray();
+
243  if (val) {
+
244  if (val->elements()->size() != 3) {
+
245  Print("WARNING: malformed color in '%s'\n", file);
+
246  }
+
247  else {
+
248  BYTE r, g, b;
+
249  double v0 = (val->elements()->at(0)->isNumber()->value());
+
250  double v1 = (val->elements()->at(1)->isNumber()->value());
+
251  double v2 = (val->elements()->at(2)->isNumber()->value());
+
252 
+
253  if (v0 >= 0 && v0 <= 1 &&
+
254  v1 >= 0 && v1 <= 1 &&
+
255  v2 >= 0 && v2 <= 1) {
+
256 
+
257  r = (BYTE) (v0 * 255);
+
258  g = (BYTE) (v1 * 255);
+
259  b = (BYTE) (v2 * 255);
+
260 
+
261  }
+
262  else {
+
263  r = (BYTE) v0;
+
264  g = (BYTE) v1;
+
265  b = (BYTE) v2;
+
266  }
+
267 
+
268  dst = Color(r,g,b);
+
269  return true;
+
270  }
+
271  }
+
272  else {
+
273  Print("WARNING: color expected in '%s'\n", file);
+
274  }
+
275 
+
276  return false;
+
277 }
+
278 
+
279 bool GetDefColor(ColorValue& dst, TermDef* def, const char* file)
+
280 {
+
281  if (!def || !def->term()) {
+
282  Print("WARNING: missing COLOR TermDef in '%s'\n", file);
+
283  return false;
+
284  }
+
285 
+
286  TermArray* val = def->term()->isArray();
+
287  if (val) {
+
288  if (val->elements()->size() < 3 || val->elements()->size() > 4) {
+
289  Print("WARNING: malformed color in '%s'\n", file);
+
290  }
+
291  else {
+
292  double r = (val->elements()->at(0)->isNumber()->value());
+
293  double g = (val->elements()->at(1)->isNumber()->value());
+
294  double b = (val->elements()->at(2)->isNumber()->value());
+
295  double a = 1;
+
296 
+
297  if (val->elements()->size() == 4)
+
298  a = (val->elements()->at(3)->isNumber()->value());
+
299 
+
300  dst.Set((float) r, (float) g, (float) b, (float) a);
+
301  return true;
+
302  }
+
303  }
+
304  else {
+
305  Print("WARNING: color expected in '%s'\n", file);
+
306  }
+
307 
+
308  return false;
+
309 }
+
310 
+
311 // +--------------------------------------------------------------------+
+
312 
+
313 bool GetDefArray(int* dst, int size, TermDef* def, const char* file)
+
314 {
+
315  if (!def || !def->term()) {
+
316  Print("WARNING: missing ARRAY TermDef in '%s'\n", file);
+
317  return false;
+
318  }
+
319 
+
320  TermArray* val = def->term()->isArray();
+
321  if (val) {
+
322  int nelem = val->elements()->size();
+
323 
+
324  if (nelem > size)
+
325  nelem = size;
+
326 
+
327  for (int i = 0; i < nelem; i++)
+
328  *dst++ = (int) (val->elements()->at(i)->isNumber()->value());
+
329 
+
330  return true;
+
331  }
+
332  else {
+
333  Print("WARNING: array expected in '%s'\n", file);
+
334  }
+
335 
+
336  return false;
+
337 }
+
338 
+
339 bool GetDefArray(float* dst, int size, TermDef* def, const char* file)
+
340 {
+
341  if (!def || !def->term()) {
+
342  Print("WARNING: missing ARRAY TermDef in '%s'\n", file);
+
343  return false;
+
344  }
+
345 
+
346  TermArray* val = def->term()->isArray();
+
347  if (val) {
+
348  int nelem = val->elements()->size();
+
349 
+
350  if (nelem > size)
+
351  nelem = size;
+
352 
+
353  for (int i = 0; i < nelem; i++)
+
354  *dst++ = (float) (val->elements()->at(i)->isNumber()->value());
+
355 
+
356  return true;
+
357  }
+
358  else {
+
359  Print("WARNING: array expected in '%s'\n", file);
+
360  }
+
361 
+
362  return false;
+
363 }
+
364 
+
365 bool GetDefArray(double* dst, int size, TermDef* def, const char* file)
+
366 {
+
367  if (!def || !def->term()) {
+
368  Print("WARNING: missing ARRAY TermDef in '%s'\n", file);
+
369  return false;
+
370  }
+
371 
+
372  TermArray* val = def->term()->isArray();
+
373  if (val) {
+
374  int nelem = val->elements()->size();
+
375 
+
376  if (nelem > size)
+
377  nelem = size;
+
378 
+
379  for (int i = 0; i < nelem; i++)
+
380  *dst++ = (double) (val->elements()->at(i)->isNumber()->value());
+
381 
+
382  return true;
+
383  }
+
384  else {
+
385  Print("WARNING: array expected in '%s'\n", file);
+
386  }
+
387 
+
388  return false;
+
389 }
+
390 
+
391 // +--------------------------------------------------------------------+
+
392 
+
393 bool GetDefArray(std::vector<DWORD>& array, TermDef* def, const char* file)
+
394 {
+
395  if (!def || !def->term()) {
+
396  Print("WARNING: missing ARRAY TermDef in '%s'\n", file);
+
397  return false;
+
398  }
+
399 
+
400  TermArray* val = def->term()->isArray();
+
401  if (val) {
+
402  int nelem = val->elements()->size();
+
403 
+
404  array.clear();
+
405 
+
406  for (int i = 0; i < nelem; i++)
+
407  array.push_back((DWORD) (val->elements()->at(i)->isNumber()->value()));
+
408 
+
409  return true;
+
410  }
+
411  else {
+
412  Print("WARNING: integer array expected in '%s'\n", file);
+
413  }
+
414 
+
415  return false;
+
416 }
+
417 
+
418 bool GetDefArray(std::vector<float>& array, TermDef* def, const char* file)
+
419 {
+
420  if (!def || !def->term()) {
+
421  Print("WARNING: missing ARRAY TermDef in '%s'\n", file);
+
422  return false;
+
423  }
+
424 
+
425  TermArray* val = def->term()->isArray();
+
426  if (val) {
+
427  int nelem = val->elements()->size();
+
428 
+
429  array.clear();
+
430 
+
431  for (int i = 0; i < nelem; i++)
+
432  array.push_back((float) (val->elements()->at(i)->isNumber()->value()));
+
433 
+
434  return true;
+
435  }
+
436  else {
+
437  Print("WARNING: float array expected in '%s'\n", file);
+
438  }
+
439 
+
440  return false;
+
441 }
+
442 
+
443 // +--------------------------------------------------------------------+
+
444 
+
445 bool GetDefTime(int& dst, TermDef* def, const char* file)
+
446 {
+
447  if (!def || !def->term()) {
+
448  Print("WARNING: missing TIME TermDef in '%s'\n", file);
+
449  return false;
+
450  }
+
451 
+
452  TermText* tn = def->term()->isText();
+
453 
+
454  if (tn) {
+
455  int d = 0;
+
456  int h = 0;
+
457  int m = 0;
+
458  int s = 0;
+
459 
+
460  char buf[64];
+
461  strcpy_s(buf, tn->value());
+
462 
+
463  if (strchr(buf, '/'))
+
464  sscanf_s(buf, "%d/%d:%d:%d", &d, &h, &m, &s);
+
465  else
+
466  sscanf_s(buf, "%d:%d:%d", &h, &m, &s);
+
467 
+
468  dst = d * 24 * 60 * 60 +
+
469  h * 60 * 60 +
+
470  m * 60 +
+
471  s;
+
472 
+
473  return true;
+
474  }
+
475  else
+
476  Print("WARNING: invalid TIME %s in '%s'\n", def->name()->value().data(), file);
+
477 
+
478  return false;
+
479 }
+
480 
+
481 
+
+
+ + + + -- cgit v1.1