00001
00008 #ifndef __GVARIANT_H__
00009 #define __GVARIANT_H__
00010
00011 #include "GDom.h"
00012 #undef Bool
00013 #include "GDateTime.h"
00014 #include "GContainers.h"
00015
00017 enum GVariantType
00018 {
00019
00020
00022 GV_NULL,
00024 GV_INT32,
00026 GV_INT64,
00028 GV_BOOL,
00030 GV_DOUBLE,
00032 GV_STRING,
00034 GV_BINARY,
00036 GV_LIST,
00038 GV_DOM,
00040 GV_VOID_PTR,
00042 GV_DATETIME,
00043
00044
00045
00047 GV_GVIEW,
00049 GV_GMOUSE,
00051 GV_GKEY
00052 };
00053
00055 class LgiClass GVariant
00056 {
00057 public:
00059 GVariantType Type;
00061 short Id;
00063 bool *Dirty;
00064
00066 union
00067 {
00069 int Int;
00071 bool Bool;
00073 int64 Int64;
00075 double Dbl;
00077 char *String;
00079 GDom *Dom;
00081 void *Ptr;
00083 struct _Binary
00084 {
00085 int Length;
00086 void *Data;
00087 } Binary;
00089 List<GVariant> *Lst;
00091 GDateTime *Date;
00092 } Value;
00093
00095 GVariant();
00097 GVariant(int i);
00099 GVariant(int64 i);
00101 GVariant(double i);
00103 GVariant(char *s);
00105 GVariant(void *p);
00107 GVariant(GDom *p);
00109 GVariant(GDateTime *d);
00110 ~GVariant();
00111
00113 GVariant &operator =(int i);
00115 GVariant &operator =(bool i);
00117 GVariant &operator =(int64 i);
00119 GVariant &operator =(double i);
00121 GVariant &operator =(char *s);
00123 GVariant &operator =(GVariant &i);
00125 GVariant &operator =(void *p);
00127 GVariant &operator =(GDom *p);
00129 GVariant &operator =(GDateTime *d);
00130
00131 GVariant &operator =(class GView *p);
00132 GVariant &operator =(class GMouse *p);
00133 GVariant &operator =(class GKey *k);
00134
00136 bool SetBinary(int Len, void *Data);
00138 bool SetList(List<GVariant> *Lst = 0);
00139
00141 char *Str();
00143 void Empty();
00144
00146 int GetItems();
00147 bool HasItem(GVariant *s);
00148 GVariant *ItemAt(int i);
00149 GVariant *First();
00150 GVariant *Next();
00151 GVariant *Prev();
00152 GVariant *Last();
00153 bool Insert(GVariant *s, int Where = -1);
00154 bool Delete(GVariant *s);
00155
00157 bool IsInt();
00159 bool IsBool();
00161 bool IsDouble();
00163 bool IsString();
00165 bool IsBinary();
00167 bool IsNull();
00168
00170 int32 CastInt32();
00172 char *CastString();
00173 };
00174
00175 #endif