XMLVariant.h
Go to the documentation of this file.00001 00018 #ifndef __XMLVariant_H__ 00019 #define __XMLVariant_H__ 00020 00021 // Includes 00022 #include "StandardLibrary.h" 00023 #include "Debug.h" 00024 00025 00026 // Forward declares 00027 00028 // XMLVariant 00029 class XMLVariant 00030 { 00031 friend class XMLAttribute; 00032 friend class XMLTextParser; 00033 public: 00034 enum TYPES 00035 { 00036 TYPE_STRING = 0, 00037 TYPE_CHAR = 1, 00038 TYPE_SHORT = 2, 00039 TYPE_INT = 3, 00040 TYPE_LONG = 4, 00041 TYPE_UNSIGNEDCHAR = 5, 00042 TYPE_UNSIGNEDSHORT = 6, 00043 TYPE_UNSIGNEDINT = 7, 00044 TYPE_UNSIGNEDLONG = 8, 00045 TYPE_FLOAT = 9, 00046 TYPE_DOUBLE = 10, 00047 TYPE_BOOL = 11, 00048 TYPE_NOTHING = 255, 00049 }; 00050 00051 // Destructor 00052 inline ~XMLVariant() 00053 { 00054 if (type_==TYPE_STRING) 00055 { 00056 Free(value_.stringVal); 00057 } 00058 }; 00059 00060 // Constructors 00061 00062 inline XMLVariant() 00063 { 00064 type_=TYPE_NOTHING; 00065 }; 00066 00067 00068 inline XMLVariant(const XMLVariant& value) 00069 { 00070 type_=value.type_; 00071 if (value.type_==TYPE_STRING) 00072 { 00073 value_.stringVal=StrDup(value.value_.stringVal); 00074 } 00075 else 00076 { 00077 value_=value.value_; 00078 } 00079 }; 00080 00081 inline XMLVariant(char value) 00082 { 00083 value_.charVal=value; 00084 type_=TYPE_CHAR; 00085 }; 00086 00087 inline XMLVariant(short value) 00088 { 00089 value_.shortVal=value; 00090 type_=TYPE_SHORT; 00091 }; 00092 00093 inline XMLVariant(int value) 00094 { 00095 value_.intVal=value; 00096 type_=TYPE_INT; 00097 }; 00098 00099 inline XMLVariant(long value) 00100 { 00101 value_.longVal=value; 00102 type_=TYPE_LONG; 00103 }; 00104 00105 inline XMLVariant(unsigned char value) 00106 { 00107 value_.ucharVal=value; 00108 type_=TYPE_UNSIGNEDCHAR; 00109 }; 00110 00111 inline XMLVariant(unsigned short value) 00112 { 00113 value_.ushortVal=value; 00114 type_=TYPE_UNSIGNEDSHORT; 00115 }; 00116 00117 inline XMLVariant(unsigned int value) 00118 { 00119 value_.uintVal=value; 00120 type_=TYPE_UNSIGNEDINT; 00121 }; 00122 00123 inline XMLVariant(unsigned long value) 00124 { 00125 value_.ulongVal=value; 00126 type_=TYPE_UNSIGNEDLONG; 00127 }; 00128 00129 inline XMLVariant(float value) 00130 { 00131 value_.floatVal=value; 00132 type_=TYPE_FLOAT; 00133 }; 00134 00135 inline XMLVariant(double value) 00136 { 00137 value_.doubleVal=value; 00138 type_=TYPE_DOUBLE; 00139 }; 00140 00141 inline XMLVariant(bool value) 00142 { 00143 value_.boolVal=value; 00144 type_=TYPE_BOOL; 00145 }; 00146 00147 inline XMLVariant(char* value) 00148 { 00149 value_.stringVal=StrDup(value); 00150 type_=TYPE_STRING; 00151 }; 00152 00153 inline XMLVariant(const char* value) 00154 { 00155 value_.stringVal=StrDup(value); 00156 type_=TYPE_STRING; 00157 }; 00158 00159 // "Set" operators 00160 inline const XMLVariant& operator=(const XMLVariant& value) 00161 { 00162 if (type_==TYPE_STRING) 00163 { 00164 Free(value_.stringVal); 00165 } 00166 type_=value.type_; 00167 if (value.type_==TYPE_STRING) 00168 { 00169 value_.stringVal=StrDup(value.value_.stringVal); 00170 } 00171 else 00172 { 00173 value_=value.value_; 00174 } 00175 00176 return *this; 00177 }; 00178 00179 00180 inline char operator=(char value) 00181 { 00182 if (type_==TYPE_STRING) 00183 { 00184 Free(value_.stringVal); 00185 } 00186 value_.charVal=value; 00187 type_=TYPE_CHAR; 00188 return value; 00189 }; 00190 00191 inline short operator=(short value) 00192 { 00193 if (type_==TYPE_STRING) 00194 { 00195 Free(value_.stringVal); 00196 } 00197 value_.shortVal=value; 00198 type_=TYPE_SHORT; 00199 return value; 00200 }; 00201 00202 inline int operator=(int value) 00203 { 00204 if (type_==TYPE_STRING) 00205 { 00206 Free(value_.stringVal); 00207 } 00208 value_.intVal=value; 00209 type_=TYPE_INT; 00210 return value; 00211 }; 00212 00213 inline long operator=(long value) 00214 { 00215 if (type_==TYPE_STRING) 00216 { 00217 Free(value_.stringVal); 00218 } 00219 value_.longVal=value; 00220 type_=TYPE_LONG; 00221 return value; 00222 }; 00223 00224 inline unsigned char operator=(unsigned char value) 00225 { 00226 if (type_==TYPE_STRING) 00227 { 00228 Free(value_.stringVal); 00229 } 00230 value_.ucharVal=value; 00231 type_=TYPE_UNSIGNEDCHAR; 00232 return value; 00233 }; 00234 00235 inline unsigned short operator=(unsigned short value) 00236 { 00237 if (type_==TYPE_STRING) 00238 { 00239 Free(value_.stringVal); 00240 } 00241 value_.ushortVal=value; 00242 type_=TYPE_UNSIGNEDSHORT; 00243 return value; 00244 }; 00245 00246 inline unsigned int operator=(unsigned int value) 00247 { 00248 if (type_==TYPE_STRING) 00249 { 00250 Free(value_.stringVal); 00251 } 00252 value_.uintVal=value; 00253 type_=TYPE_UNSIGNEDINT; 00254 return value; 00255 }; 00256 00257 inline unsigned long operator=(unsigned long value) 00258 { 00259 if (type_==TYPE_STRING) 00260 { 00261 Free(value_.stringVal); 00262 } 00263 value_.ulongVal=value; 00264 type_=TYPE_UNSIGNEDLONG; 00265 return value; 00266 }; 00267 00268 inline float operator=(float value) 00269 { 00270 if (type_==TYPE_STRING) 00271 { 00272 Free(value_.stringVal); 00273 } 00274 value_.floatVal=value; 00275 type_=TYPE_FLOAT; 00276 return value; 00277 }; 00278 00279 inline double operator=(double value) 00280 { 00281 if (type_==TYPE_STRING) 00282 { 00283 Free(value_.stringVal); 00284 } 00285 value_.doubleVal=value; 00286 type_=TYPE_DOUBLE; 00287 return value; 00288 }; 00289 00290 inline bool operator=(bool value) 00291 { 00292 if (type_==TYPE_STRING) 00293 { 00294 Free(value_.stringVal); 00295 } 00296 value_.boolVal=value; 00297 type_=TYPE_BOOL; 00298 return value; 00299 }; 00300 00301 inline char* operator=(char* value) 00302 { 00303 if (type_==TYPE_STRING) 00304 { 00305 Free(value_.stringVal); 00306 } 00307 value_.stringVal=StrDup(value); 00308 type_=TYPE_STRING; 00309 return value; 00310 }; 00311 00312 inline const char* operator=(const char* value) 00313 { 00314 if (type_==TYPE_STRING) 00315 { 00316 Free(value_.stringVal); 00317 } 00318 value_.stringVal=StrDup(value); 00319 type_=TYPE_STRING; 00320 return value; 00321 }; 00322 00323 00324 // "Get" operators 00325 00326 inline operator char() const 00327 { 00328 switch (this->type_) 00329 { 00330 case TYPE_CHAR: 00331 return value_.charVal; 00332 case TYPE_SHORT: 00333 return (char)value_.shortVal; 00334 case TYPE_INT: 00335 return (char)value_.intVal; 00336 case TYPE_LONG: 00337 return (char)value_.longVal; 00338 case TYPE_UNSIGNEDCHAR: 00339 return (char)value_.ucharVal; 00340 case TYPE_UNSIGNEDSHORT: 00341 return (char)value_.ushortVal; 00342 case TYPE_UNSIGNEDINT: 00343 return (char)value_.uintVal; 00344 case TYPE_UNSIGNEDLONG: 00345 return (char)value_.ulongVal; 00346 case TYPE_FLOAT: 00347 return (char)value_.floatVal; 00348 case TYPE_DOUBLE: 00349 return (char)value_.doubleVal; 00350 case TYPE_BOOL: 00351 return (char)value_.boolVal; 00352 case TYPE_STRING: 00353 return (char)(StringToInt(value_.stringVal)); 00354 default: 00355 { 00356 return (char)0; 00357 } 00358 } 00359 }; 00360 00361 inline operator short() const 00362 { 00363 switch (this->type_) 00364 { 00365 case TYPE_SHORT: 00366 return value_.shortVal; 00367 case TYPE_CHAR: 00368 return (short)value_.charVal; 00369 case TYPE_INT: 00370 return (short)value_.intVal; 00371 case TYPE_LONG: 00372 return (short)value_.longVal; 00373 case TYPE_UNSIGNEDCHAR: 00374 return (short)value_.ucharVal; 00375 case TYPE_UNSIGNEDSHORT: 00376 return (short)value_.ushortVal; 00377 case TYPE_UNSIGNEDINT: 00378 return (short)value_.uintVal; 00379 case TYPE_UNSIGNEDLONG: 00380 return (short)value_.ulongVal; 00381 case TYPE_FLOAT: 00382 return (short)value_.floatVal; 00383 case TYPE_DOUBLE: 00384 return (short)value_.doubleVal; 00385 case TYPE_BOOL: 00386 return (short)value_.boolVal; 00387 case TYPE_STRING: 00388 return (short)(StringToInt(value_.stringVal)); 00389 default: 00390 { 00391 return (short)0; 00392 } 00393 } 00394 }; 00395 00396 inline operator int() const 00397 { 00398 switch (this->type_) 00399 { 00400 case TYPE_INT: 00401 return value_.intVal; 00402 case TYPE_CHAR: 00403 return (int)value_.charVal; 00404 case TYPE_SHORT: 00405 return (int)value_.shortVal; 00406 case TYPE_LONG: 00407 return (int)value_.longVal; 00408 case TYPE_UNSIGNEDCHAR: 00409 return (int)value_.ucharVal; 00410 case TYPE_UNSIGNEDSHORT: 00411 return (int)value_.ushortVal; 00412 case TYPE_UNSIGNEDINT: 00413 return (int)value_.uintVal; 00414 case TYPE_UNSIGNEDLONG: 00415 return (int)value_.ulongVal; 00416 case TYPE_FLOAT: 00417 return (int)value_.floatVal; 00418 case TYPE_DOUBLE: 00419 return (int)value_.doubleVal; 00420 case TYPE_BOOL: 00421 return (int)value_.boolVal; 00422 case TYPE_STRING: 00423 return (int)(StringToInt(value_.stringVal)); 00424 default: 00425 { 00426 return (int)0; 00427 } 00428 } 00429 }; 00430 00431 inline operator long() const 00432 { 00433 switch (this->type_) 00434 { 00435 case TYPE_LONG: 00436 return value_.longVal; 00437 case TYPE_CHAR: 00438 return (long)value_.charVal; 00439 case TYPE_SHORT: 00440 return (long)value_.shortVal; 00441 case TYPE_INT: 00442 return (long)value_.intVal; 00443 case TYPE_UNSIGNEDCHAR: 00444 return (long)value_.ucharVal; 00445 case TYPE_UNSIGNEDSHORT: 00446 return (long)value_.ushortVal; 00447 case TYPE_UNSIGNEDINT: 00448 return (long)value_.uintVal; 00449 case TYPE_UNSIGNEDLONG: 00450 return (long)value_.ulongVal; 00451 case TYPE_FLOAT: 00452 return (long)value_.floatVal; 00453 case TYPE_DOUBLE: 00454 return (long)value_.doubleVal; 00455 case TYPE_BOOL: 00456 return (long)value_.boolVal; 00457 case TYPE_STRING: 00458 return (long)(StringToLong(value_.stringVal)); 00459 default: 00460 { 00461 return (long)0; 00462 } 00463 } 00464 }; 00465 00466 inline operator unsigned char() const 00467 { 00468 switch (this->type_) 00469 { 00470 case TYPE_UNSIGNEDCHAR: 00471 return value_.ucharVal; 00472 case TYPE_CHAR: 00473 return (unsigned char)value_.charVal; 00474 case TYPE_SHORT: 00475 return (unsigned char)value_.shortVal; 00476 case TYPE_INT: 00477 return (unsigned char)value_.intVal; 00478 case TYPE_LONG: 00479 return (unsigned char)value_.longVal; 00480 case TYPE_UNSIGNEDSHORT: 00481 return (unsigned char)value_.ushortVal; 00482 case TYPE_UNSIGNEDINT: 00483 return (unsigned char)value_.uintVal; 00484 case TYPE_UNSIGNEDLONG: 00485 return (unsigned char)value_.ulongVal; 00486 case TYPE_FLOAT: 00487 return (unsigned char)value_.floatVal; 00488 case TYPE_DOUBLE: 00489 return (unsigned char)value_.doubleVal; 00490 case TYPE_BOOL: 00491 return (unsigned char)value_.boolVal; 00492 case TYPE_STRING: 00493 return (unsigned char)(StringToInt(value_.stringVal)); 00494 default: 00495 { 00496 return (unsigned char)0; 00497 } 00498 } 00499 }; 00500 00501 inline operator unsigned short() const 00502 { 00503 switch (this->type_) 00504 { 00505 case TYPE_UNSIGNEDSHORT: 00506 return value_.ushortVal; 00507 case TYPE_CHAR: 00508 return (unsigned short)value_.charVal; 00509 case TYPE_SHORT: 00510 return (unsigned short)value_.shortVal; 00511 case TYPE_INT: 00512 return (unsigned short)value_.intVal; 00513 case TYPE_LONG: 00514 return (unsigned short)value_.longVal; 00515 case TYPE_UNSIGNEDCHAR: 00516 return (unsigned short)value_.ucharVal; 00517 case TYPE_UNSIGNEDINT: 00518 return (unsigned short)value_.uintVal; 00519 case TYPE_UNSIGNEDLONG: 00520 return (unsigned short)value_.ulongVal; 00521 case TYPE_FLOAT: 00522 return (unsigned short)value_.floatVal; 00523 case TYPE_DOUBLE: 00524 return (unsigned short)value_.doubleVal; 00525 case TYPE_BOOL: 00526 return (unsigned short)value_.boolVal; 00527 case TYPE_STRING: 00528 return (unsigned short)(StringToInt(value_.stringVal)); 00529 default: 00530 { 00531 return (short)0; 00532 } 00533 } 00534 }; 00535 00536 inline operator unsigned int() const 00537 { 00538 switch (this->type_) 00539 { 00540 case TYPE_INT: 00541 return value_.intVal; 00542 case TYPE_CHAR: 00543 return (unsigned int)value_.charVal; 00544 case TYPE_SHORT: 00545 return (unsigned int)value_.shortVal; 00546 case TYPE_LONG: 00547 return (unsigned int)value_.longVal; 00548 case TYPE_UNSIGNEDCHAR: 00549 return (unsigned int)value_.ucharVal; 00550 case TYPE_UNSIGNEDSHORT: 00551 return (unsigned int)value_.ushortVal; 00552 case TYPE_UNSIGNEDINT: 00553 return (unsigned int)value_.uintVal; 00554 case TYPE_UNSIGNEDLONG: 00555 return (unsigned int)value_.ulongVal; 00556 case TYPE_FLOAT: 00557 return (unsigned int)value_.floatVal; 00558 case TYPE_DOUBLE: 00559 return (unsigned int)value_.doubleVal; 00560 case TYPE_BOOL: 00561 return (unsigned int)value_.boolVal; 00562 case TYPE_STRING: 00563 return (unsigned int)(StringToInt(value_.stringVal)); 00564 default: 00565 { 00566 return (unsigned int)0; 00567 } 00568 } 00569 }; 00570 00571 inline operator unsigned long() const 00572 { 00573 switch (this->type_) 00574 { 00575 case TYPE_UNSIGNEDLONG: 00576 return value_.ulongVal; 00577 case TYPE_CHAR: 00578 return (unsigned long)value_.charVal; 00579 case TYPE_SHORT: 00580 return (unsigned long)value_.shortVal; 00581 case TYPE_INT: 00582 return (unsigned long)value_.intVal; 00583 case TYPE_LONG: 00584 return (unsigned long)value_.longVal; 00585 case TYPE_UNSIGNEDCHAR: 00586 return (unsigned long)value_.ucharVal; 00587 case TYPE_UNSIGNEDSHORT: 00588 return (unsigned long)value_.ushortVal; 00589 case TYPE_UNSIGNEDINT: 00590 return (unsigned long)value_.uintVal; 00591 case TYPE_FLOAT: 00592 return (unsigned long)value_.floatVal; 00593 case TYPE_DOUBLE: 00594 return (unsigned long)value_.doubleVal; 00595 case TYPE_STRING: 00596 return (unsigned long)(StringToInt(value_.stringVal)); 00597 case TYPE_BOOL: 00598 return (unsigned long)value_.boolVal; 00599 default: 00600 { 00601 return (unsigned long)0; 00602 } 00603 } 00604 }; 00605 00606 inline operator float() const 00607 { 00608 switch (this->type_) 00609 { 00610 case TYPE_FLOAT: 00611 return value_.floatVal; 00612 case TYPE_CHAR: 00613 return (float)value_.charVal; 00614 case TYPE_SHORT: 00615 return (float)value_.shortVal; 00616 case TYPE_INT: 00617 return (float)value_.intVal; 00618 case TYPE_LONG: 00619 return (float)value_.longVal; 00620 case TYPE_UNSIGNEDCHAR: 00621 return (float)value_.ucharVal; 00622 case TYPE_UNSIGNEDSHORT: 00623 return (float)value_.ushortVal; 00624 case TYPE_UNSIGNEDINT: 00625 return (float)value_.uintVal; 00626 case TYPE_UNSIGNEDLONG: 00627 return (float)(long)value_.ulongVal; 00628 case TYPE_DOUBLE: 00629 return (float)value_.doubleVal; 00630 case TYPE_BOOL: 00631 return (float)value_.boolVal; 00632 case TYPE_STRING: 00633 return (float)(StringToDouble(value_.stringVal)); 00634 default: 00635 { 00636 return (float)0; 00637 } 00638 } 00639 }; 00640 00641 inline operator double() const 00642 { 00643 switch (this->type_) 00644 { 00645 case TYPE_DOUBLE: 00646 return value_.doubleVal; 00647 case TYPE_CHAR: 00648 return (double)value_.charVal; 00649 case TYPE_SHORT: 00650 return (double)value_.shortVal; 00651 case TYPE_INT: 00652 return (double)value_.intVal; 00653 case TYPE_LONG: 00654 return (double)value_.longVal; 00655 case TYPE_UNSIGNEDCHAR: 00656 return (double)value_.ucharVal; 00657 case TYPE_UNSIGNEDSHORT: 00658 return (double)value_.ushortVal; 00659 case TYPE_UNSIGNEDINT: 00660 return (double)value_.uintVal; 00661 case TYPE_UNSIGNEDLONG: 00662 return (double)value_.ulongVal; 00663 case TYPE_FLOAT: 00664 return (double)value_.floatVal; 00665 case TYPE_BOOL: 00666 return (double)value_.boolVal; 00667 case TYPE_STRING: 00668 return (double)(StringToDouble(value_.stringVal)); 00669 00670 default: 00671 { 00672 return (double)0; 00673 } 00674 } 00675 }; 00676 00677 inline operator bool() const 00678 { 00679 switch (this->type_) 00680 { 00681 case TYPE_BOOL: 00682 return value_.boolVal; 00683 case TYPE_CHAR: 00684 return (value_.charVal!=0); 00685 case TYPE_SHORT: 00686 return (value_.shortVal!=0); 00687 case TYPE_INT: 00688 return (value_.intVal!=0); 00689 case TYPE_LONG: 00690 return (value_.longVal!=0); 00691 case TYPE_UNSIGNEDCHAR: 00692 return (value_.ucharVal!=0); 00693 case TYPE_UNSIGNEDSHORT: 00694 return (value_.ushortVal!=0); 00695 case TYPE_UNSIGNEDINT: 00696 return (value_.uintVal!=0); 00697 case TYPE_UNSIGNEDLONG: 00698 return (value_.ulongVal!=0); 00699 case TYPE_FLOAT: 00700 return (value_.floatVal!=0); 00701 case TYPE_DOUBLE: 00702 return (value_.doubleVal!=0); 00703 case TYPE_STRING: 00704 if (StrICmp(value_.stringVal,"TRUE")==0) 00705 return true; 00706 else 00707 return false; 00708 default: 00709 { 00710 return false; 00711 } 00712 } 00713 }; 00714 00715 inline operator char*() const 00716 { 00717 static char buffer[35]; 00718 switch (this->type_) 00719 { 00720 case TYPE_STRING: 00721 return value_.stringVal; 00722 case TYPE_CHAR: 00723 SNPrintF(buffer,34,"%d\0",value_.charVal); 00724 return buffer; 00725 case TYPE_SHORT: 00726 SNPrintF(buffer,34,"%d\0",value_.shortVal); 00727 return buffer; 00728 case TYPE_INT: 00729 SNPrintF(buffer,34,"%d\0",value_.intVal); 00730 return buffer; 00731 case TYPE_LONG: 00732 SNPrintF(buffer,34,"%d\0",value_.longVal); 00733 return buffer; 00734 case TYPE_UNSIGNEDCHAR: 00735 SNPrintF(buffer,34,"%d\0",value_.ucharVal); 00736 return buffer; 00737 case TYPE_UNSIGNEDSHORT: 00738 SNPrintF(buffer,34,"%d\0",value_.ushortVal); 00739 return buffer; 00740 case TYPE_UNSIGNEDINT: 00741 SNPrintF(buffer,34,"%d\0",value_.uintVal); 00742 return buffer; 00743 case TYPE_UNSIGNEDLONG: 00744 SNPrintF(buffer,34,"%d\0",value_.ulongVal); 00745 return buffer; 00746 case TYPE_FLOAT: 00747 static char fbuffer[256]; 00748 SNPrintF(fbuffer,255,"%g\0",value_.floatVal); 00749 return fbuffer; 00750 case TYPE_DOUBLE: 00751 static char dbuffer[256]; 00752 SNPrintF(dbuffer,255,"%g\0",value_.doubleVal); 00753 return dbuffer; 00754 case TYPE_BOOL: 00755 if (value_.boolVal) 00756 { 00757 SNPrintF(buffer,34,"True\0"); 00758 return buffer; 00759 } 00760 else 00761 { 00762 SNPrintF(buffer,34,"False\0"); 00763 return buffer; 00764 } 00765 default: 00766 buffer[0]='\0'; 00767 return buffer; 00768 }; 00769 }; 00770 00771 00772 inline operator const char*() const 00773 { 00774 static char buffer[35]; 00775 switch (this->type_) 00776 { 00777 case TYPE_STRING: 00778 return value_.stringVal; 00779 case TYPE_CHAR: 00780 SNPrintF(buffer,34,"%d\0",value_.charVal); 00781 return buffer; 00782 case TYPE_SHORT: 00783 SNPrintF(buffer,34,"%d\0",value_.shortVal); 00784 return buffer; 00785 case TYPE_INT: 00786 SNPrintF(buffer,34,"%d\0",value_.intVal); 00787 return buffer; 00788 case TYPE_LONG: 00789 SNPrintF(buffer,34,"%d\0",value_.longVal); 00790 return buffer; 00791 case TYPE_UNSIGNEDCHAR: 00792 SNPrintF(buffer,34,"%d\0",value_.ucharVal); 00793 return buffer; 00794 case TYPE_UNSIGNEDSHORT: 00795 SNPrintF(buffer,34,"%d\0",value_.ushortVal); 00796 return buffer; 00797 case TYPE_UNSIGNEDINT: 00798 SNPrintF(buffer,34,"%d\0",value_.uintVal); 00799 return buffer; 00800 case TYPE_UNSIGNEDLONG: 00801 SNPrintF(buffer,34,"%d\0",value_.ulongVal); 00802 return buffer; 00803 case TYPE_FLOAT: 00804 static char fbuffer[256]; 00805 SNPrintF(fbuffer,255,"%g\0",value_.floatVal); 00806 return fbuffer; 00807 case TYPE_DOUBLE: 00808 static char dbuffer[256]; 00809 SNPrintF(dbuffer,255,"%g\0",value_.doubleVal); 00810 return dbuffer; 00811 case TYPE_BOOL: 00812 if (value_.boolVal) 00813 return "True"; 00814 else 00815 return "False"; 00816 default: 00817 buffer[0]='\0'; 00818 return buffer; 00819 }; 00820 }; 00821 private: 00822 TYPES type_; 00823 00824 union 00825 { 00826 char charVal; 00827 short shortVal; 00828 int intVal; 00829 long longVal; 00830 unsigned char ucharVal; 00831 unsigned short ushortVal; 00832 unsigned int uintVal; 00833 unsigned long ulongVal; 00834 float floatVal; 00835 double doubleVal; 00836 bool boolVal; 00837 char* stringVal; 00838 } value_; 00839 00840 00841 }; 00842 00843 #endif /* __XMLVariant_H__ */
Reproduction/republishing of any material on this site without permission is strictly prohibited.
