00001
00002
00003
00004
00005
00006
00007 #ifndef GENETIK_UTIL_VARIANT
00008 #define GENETIK_UTIL_VARIANT
00009
00010 namespace genetiK
00011 {
00012 namespace util
00013 {
00014
00015 class Variant
00016 {
00017 private:
00018 typedef enum VariantType{
00019 UNDEFINED = -1,
00020 INTEGER = 0,
00021 BOOLEAN,
00022 CHARACTER,
00023 REAL,
00024 USER_DATA,
00025 TYPES_NUMBER
00026 }VariantType;
00027
00028
00029
00030 typedef union{
00031 bool boolean;
00032 int integer;
00033 char character;
00034 double real;
00035 void* userData;
00036 }Data;
00037
00038
00039
00040 Data data;
00041 VariantType type;
00042
00043 public:
00044 Variant();
00045 Variant(bool boolean);
00046 Variant(int integer);
00047 Variant(char character);
00048 Variant(double real);
00049 Variant(void* userData);
00050 virtual ~Variant();
00051
00052 VariantType getType() const;
00053
00054 bool getBoolean() const;
00055 int getInteger() const;
00056 char getCharacter() const;
00057 double getReal() const;
00058 void* getUserData() const;
00059
00060
00061
00062 void setBoolean(bool boolean);
00063 void setInteger(int integer);
00064 void setCharacter(char character);
00065 void setReal(double real);
00066 void setUserData(void* userData);
00067
00068 };
00069
00070 }
00071 }
00072
00073 #endif