00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _vdkxdbtable_h
00030 #define _vdkxdbtable_h
00031 #include <vdk/vdkstring.h>
00032 #include <vdk/vdkprops.h>
00033 #include <vdk/dlist.h>
00034 #include <xdb/dbf.h>
00035 #include <xdb/ndx.h>
00036
00037
00038 typedef xbSchema VDKXRecordTemplate ;
00039
00040 class VDKXDatabase;
00041 class VDKXTableIndex;
00042
00043
00044 typedef VDKList<VDKXTableIndex> IndexList;
00045 typedef VDKListIterator<VDKXTableIndex> IndexListIterator;
00046
00047
00055 class VDKXTable: public xbDbf
00056 {
00057 protected:
00059 VDKString name;
00061 IndexList iList;
00062 void SetOrder(xbShort ndx);
00063 bool open;
00064 VDKXTableIndex* activeIndex;
00065 public:
00066
00067
00068
00070 VDKReadOnlyValueProp<VDKXTable,xbLong> Size;
00071
00076 VDKReadWriteValueProp<VDKXTable,xbShort> Order;
00082 void SetOrder(char* name);
00087 VDKReadWriteValueProp<VDKXTable,bool> ShowDeleted;
00088
00089
00090
00091
00092
00093 VDKReadWriteValueProp<VDKXTable,bool> Active;
00094
00101 VDKXTable(VDKXDatabase* owner, char* name);
00103 virtual ~VDKXTable();
00105 VDKString Name() { return name; }
00118 xbShort Create(VDKXRecordTemplate* tpl, bool overwrite = false);
00128 xbShort Open(void);
00135 xbShort Close(void);
00141 bool RemoveIndex(char* name);
00147 VDKXTableIndex* Index(char* name);
00153 VDKXTableIndex* Index(xbShort order);
00167 xbShort First();
00181 xbShort Last();
00195 xbShort Next();
00209 xbShort Prev();
00211 IndexList* NdxList() { return &iList; }
00213 bool IsOpen() { return open; }
00214 };
00215
00220 class VDKXTableIndex: public xbNdx
00221 {
00222 protected:
00223 VDKString name,key;
00224 VDKXTable* table;
00225 bool open;
00226 public:
00232 VDKXTableIndex(VDKXTable* owner, char* s);
00234 virtual ~VDKXTableIndex();
00250 xbShort Create(char* key,
00251 bool unique = true ,
00252 bool overwrite = false
00253 );
00255 xbShort Open(void);
00262 xbShort Close(void);
00264 VDKString Name() { return name; }
00266 VDKString Key() { return key; }
00268 bool IsOpen() { return open; }
00269 };
00270
00271 #endif
00272