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 #ifndef _EYEDBSM_XDR_OFF_H
00026 #define _EYEDBSM_XDR_OFF_H
00027
00028 #define MapHeader_SIZE 68
00029 #define DatafileDesc_SIZE 376
00030 #define DataspaceDesc_SIZE 104
00031 #define DbHeader_SIZE 250696
00032 #define DbRootEntry_SIZE 80
00033 #define DbRootEntries_SIZE 2560
00034
00035 #define MapHeader_mtype_OFF 0
00036 #define MapHeader_sizeslot_OFF 4
00037 #define MapHeader_pow2_OFF 8
00038 #define MapHeader_nslots_OFF 12
00039 #define MapHeader_nbobjs_OFF 16
00040 #define MapHeader_mstat_OFF 24
00041 #define MapHeader_mstat_mtype_OFF 24
00042 #define MapHeader_u_bmh_OFF 56
00043 #define MapHeader_u_bmh_slot_cur_OFF 56
00044 #define MapHeader_u_bmh_slot_lastbusy_OFF 60
00045 #define MapHeader_u_bmh_retry_OFF 64
00046 #define MapHeader_mstat_u_bmstat_OFF 32
00047 #define MapHeader_mstat_u_bmstat_obj_count_OFF 32
00048 #define MapHeader_mstat_u_bmstat_busy_slots_OFF 36
00049 #define MapHeader_mstat_u_bmstat_busy_size_OFF 40
00050 #define MapHeader_mstat_u_bmstat_hole_size_OFF 48
00051 #define MapHeader_mstat_u_lmstat_OFF 32
00052 #define MapHeader_mstat_u_lmstat_nfreecells_OFF 32
00053 #define MapHeader_u_lmh_OFF 56
00054 #define MapHeader_u_lmh_firstcell_OFF 56
00055
00056 #define DatafileDesc_file_OFF 0
00057 #define DatafileDesc_name_OFF 256
00058 #define DatafileDesc___maxsize_OFF 288
00059 #define DatafileDesc_mp_OFF 296
00060 #define DatafileDesc___lastslot_OFF 368
00061 #define DatafileDesc___dspid_OFF 372
00062
00063 #define DataspaceDesc_name_OFF 0
00064 #define DataspaceDesc___cur_OFF 32
00065 #define DataspaceDesc___ndat_OFF 36
00066 #define DataspaceDesc___datid_OFF(datid) (40 + (datid) * sizeof(eyedblib::int16))
00067
00068 #define DbRootEntry_key_OFF 0
00069 #define DbRootEntry_data_OFF 16
00070
00071 #define DbHeader___magic_OFF 0
00072 #define DbHeader___dbid_OFF 4
00073 #define DbHeader_state_OFF 8
00074 #define DbHeader___guest_uid_OFF 12
00075 #define DbHeader___prot_uid_oid_OFF 16
00076 #define DbHeader___prot_list_oid_OFF 24
00077 #define DbHeader___prot_lock_oid_OFF 32
00078 #define DbHeader_shmfile_OFF 40
00079 #define DbHeader___nbobjs_OFF 296
00080 #define DbHeader___ndat_OFF 300
00081 #define DbHeader_dat_OFF(datid) (304 + (datid) * DatafileDesc_SIZE)
00082 #define DbHeader___ndsp_OFF 192816
00083 #define DbHeader_dsp_OFF(dspid) (192820 + (dspid) * DataspaceDesc_SIZE)
00084 #define DbHeader___def_dspid_OFF 246068
00085 #define DbHeader_vre_OFF(idx) (246070 + (idx) * DbRootEntry_SIZE)
00086 #define DbHeader___lastidxbusy_OFF 248632
00087 #define DbHeader___curidxbusy_OFF 248636
00088 #define DbHeader___lastidxblkalloc_OFF 248640
00089 #define DbHeader___lastnsblkalloc_OFF(datid) (248644 + (datid) * sizeof(eyedbsm::Oid::NX))
00090
00091
00092
00093
00094 #define Struct_Ref_X(Struct, addr, Attr, X) ((addr) + Struct##_##Attr##_OFF X)
00095
00096 #define Struct_X(Struct, Type, addr, Attr, X) (*(Type *)((addr) + Struct##_##Attr##_OFF X))
00097
00098 #define Struct_(Struct, Type, addr, Attr) Struct_X(Struct, Type, addr, Attr, )
00099
00100 #define Struct_ptr(Struct, Type, addr, Attr) (Type)((addr) + Struct##_##Attr##_OFF)
00101
00102
00103 #define MapHeader_(Type, addr, Attr) Struct_(MapHeader, Type, addr, Attr)
00104 #define DatafileDesc_(Type, addr, Attr) Struct_(DatafileDesc, Type, addr, Attr)
00105 #define DataspaceDesc_(Type, addr, Attr) Struct_(DataspaceDesc, Type, addr, Attr)
00106 #define DbRootEntry_(Type, addr, Attr) Struct_(DbRootEntry, Type, addr, Attr)
00107 #define DbHeader_(Type, addr, Attr) Struct_(DbHeader, Type, addr, Attr)
00108
00109 #define DatafileDesc_ptr(Type, addr, Attr) Struct_ptr(DatafileDesc, Type, addr, Attr)
00110 #define DataspaceDesc_ptr(Type, addr, Attr) Struct_ptr(DataspaceDesc, Type, addr, Attr)
00111 #define DbRootEntry_ptr(Type, addr, Attr) Struct_ptr(DbRootEntry, Type, addr, Attr)
00112 #define DbHeader_ptr(Type, addr, Attr) Struct_ptr(DbHeader, Type, addr, Attr)
00113
00114
00115 #define MapHeader_mtype(addr) MapHeader_(short, addr, mtype)
00116 #define MapHeader_sizeslot(addr) MapHeader_(unsigned int, addr, sizeslot)
00117 #define MapHeader_pow2(addr) MapHeader_(unsigned int, addr, pow2)
00118 #define MapHeader_nslots(addr) MapHeader_(Oid::NX, addr, nslots)
00119 #define MapHeader_nbobjs(addr) MapHeader_(Oid::NX, addr, nbobjs)
00120 #define MapHeader_mstat_mtype(addr) MapHeader_(short, addr, mstat_mtype)
00121 #define MapHeader_u_bmh_slot_cur(addr) MapHeader_(Oid::NX, addr, u_bmh_slot_cur)
00122 #define MapHeader_u_bmh_slot_lastbusy(addr) MapHeader_(Oid::NX, addr, u_bmh_slot_lastbusy)
00123
00124 #define MapHeader_u_bmh_retry(addr) MapHeader_(short, addr, u_bmh_retry)
00125
00126 #define MapHeader_mstat_u_bmstat_obj_count(addr) MapHeader_(Oid::NX, addr, mstat_u_bmstat_obj_count)
00127 #define MapHeader_mstat_u_bmstat_busy_slots(addr) MapHeader_(NS, addr, mstat_u_bmstat_busy_slots)
00128 #define MapHeader_mstat_u_bmstat_busy_size(addr) MapHeader_(unsigned long long, addr, mstat_u_bmstat_busy_size)
00129 #define MapHeader_mstat_u_bmstat_hole_size(addr) MapHeader_(unsigned long long, addr, mstat_u_bmstat_hole_size)
00130
00131 #define MapHeader_mstat_u_lmstat_nfreecells(addr) MapHeader_(unsigned int, addr, mstat_u_lmstat_nfreecells)
00132
00133 #define MapHeader_u_lmh_firstcell(addr) MapHeader_(int, addr, u_lmh_firstcell)
00134
00135 #define DatafileDesc_file(addr) DatafileDesc_ptr(char *, addr, file)
00136 #define DatafileDesc_name(addr) DatafileDesc_ptr(char *, addr, name)
00137 #define DatafileDesc___maxsize(addr) DatafileDesc_(unsigned int, addr, __maxsize)
00138 #define DatafileDesc___lastslot(addr) DatafileDesc_(unsigned int, addr, __lastslot)
00139 #define DatafileDesc___dspid(addr) DatafileDesc_(unsigned short, addr, __dspid)
00140
00141 #define DataspaceDesc_name(addr) DataspaceDesc_ptr(char *, addr, name)
00142 #define DataspaceDesc___cur(addr) DataspaceDesc_(int, addr, __cur)
00143 #define DataspaceDesc___ndat(addr) DataspaceDesc_(int, addr, __ndat)
00144
00145
00146 #define DataspaceDesc___datid(addr, datid) Struct_X(DataspaceDesc, short, addr, __datid, (datid))
00147
00148 #define DbRootEntry_key(addr) DbRootEntry_ptr(char *, addr, key)
00149 #define DbRootEntry_data(addr) DbRootEntry_ptr(char *, addr, data)
00150
00151 #define DbHeader___magic(addr) DbHeader_(unsigned int, addr, __magic)
00152 #define DbHeader___dbid(addr) DbHeader_(int, addr, __dbid)
00153 #define DbHeader_state(addr) DbHeader_(char, addr, state)
00154 #define DbHeader___guest_uid(addr) DbHeader_(int, addr, __guest_uid)
00155 #define DbHeader___prot_uid_oid(addr) DbHeader_(Oid, addr, __prot_uid_oid)
00156 #define DbHeader___prot_list_oid(addr) DbHeader_(Oid, addr, __prot_list_oid)
00157 #define DbHeader___prot_lock_oid(addr) DbHeader_(Oid, addr, __prot_lock_oid)
00158
00159 #define DbHeader_shmfile(addr) DbHeader_ptr(char *, addr, shmfile)
00160
00161 #define DbHeader___nbobjs(addr) DbHeader_(Oid::NX, addr, __nbobjs)
00162 #define DbHeader___ndat(addr) DbHeader_(unsigned int, addr, __ndat)
00163
00164
00165 #define DbHeader_dat_ref(addr, datid) Struct_Ref_X(DbHeader, addr, dat, (datid))
00166
00167 #define DbHeader___ndsp(addr) DbHeader_(unsigned int, addr, __ndsp)
00168
00169
00170 #define DbHeader_dsp_ref(addr, datid) Struct_Ref_X(DbHeader, addr, dsp, (datid))
00171
00172 #define DbHeader___def_dspid(addr) DbHeader_(short, addr, __def_dspid)
00173 #define DbHeader_vre(addr, idx) Struct_Ref_X(DbHeader, addr, vre, (idx))
00174 #define DbHeader___lastidxbusy(addr) DbHeader_(Oid::NX, addr, __lastidxbusy)
00175 #define DbHeader___curidxbusy(addr) DbHeader_(Oid::NX, addr, __curidxbusy)
00176
00177 #define DbHeader___lastidxblkalloc(addr) DbHeader_(Oid::NX, addr, __lastidxblkalloc)
00178
00179
00180 #define DbHeader___lastnsblkalloc(addr, datid) Struct_X(DbHeader, Oid::NX, addr, __lastnsblkalloc, (datid))
00181
00182 namespace eyedbsm {
00183
00184 class DbRootEntry {
00185 unsigned char *addr;
00186
00187 public:
00188 DbRootEntry(unsigned char *addr) : addr(addr) { }
00189
00190 char *key() {
00191 return DbRootEntry_key(addr);
00192 }
00193
00194 char *data() {
00195 return DbRootEntry_data(addr);
00196 }
00197 };
00198
00199
00200
00201
00202 class MapHeader {
00203
00204 unsigned char *addr;
00205 bool toFree;
00206
00207 public:
00208 MapHeader() {addr = (unsigned char *)(new long long[MapHeader_SIZE / sizeof(unsigned long long)]); toFree = true;}
00209
00210 MapHeader(unsigned char *addr) : addr(addr) { toFree = false;}
00211
00212 ~MapHeader() { if (toFree) delete [] addr;}
00213
00214 void memzero() {
00215 memset(addr, 0, MapHeader_SIZE);
00216 }
00217
00218 unsigned char *_addr() {return addr;}
00219
00220 short &mtype() {
00221 return MapHeader_mtype(addr);
00222 }
00223
00224 short mtype() const {
00225 return MapHeader_mtype(addr);
00226 }
00227
00228 unsigned int &sizeslot() {
00229 return MapHeader_sizeslot(addr);
00230 }
00231
00232 unsigned int sizeslot() const {
00233 return MapHeader_sizeslot(addr);
00234 }
00235
00236 unsigned int &pow2() {
00237 return MapHeader_pow2(addr);
00238 }
00239
00240 unsigned int pow2() const {
00241 return MapHeader_pow2(addr);
00242 }
00243
00244 NS &nslots() {
00245 return MapHeader_nslots(addr);
00246 }
00247
00248 Oid::NX &nbobjs() {
00249 return MapHeader_nbobjs(addr);
00250 }
00251
00252 short &mstat_mtype() {
00253 return MapHeader_mstat_mtype(addr);
00254 }
00255
00256 Oid::NX &mstat_u_bmstat_obj_count() {
00257 return MapHeader_mstat_u_bmstat_obj_count(addr);
00258 }
00259
00260 NS &mstat_u_bmstat_busy_slots() {
00261 return MapHeader_mstat_u_bmstat_busy_slots(addr);
00262 }
00263
00264 unsigned long long &mstat_u_bmstat_busy_size() {
00265 return MapHeader_mstat_u_bmstat_busy_size(addr);
00266 }
00267
00268 unsigned long long &mstat_u_bmstat_hole_size() {
00269 return MapHeader_mstat_u_bmstat_hole_size(addr);
00270 }
00271
00272 Oid::NX &u_bmh_slot_cur() {
00273 return MapHeader_u_bmh_slot_cur(addr);
00274 }
00275
00276 Oid::NX &u_bmh_slot_lastbusy() {
00277 return MapHeader_u_bmh_slot_lastbusy(addr);
00278 }
00279
00280 short &u_bmh_retry() {
00281 return MapHeader_u_bmh_retry(addr);
00282 }
00283 };
00284
00285 class DatafileDesc {
00286
00287 unsigned char *addr;
00288
00289 public:
00290 MapHeader _mp;
00291 DatafileDesc(unsigned char *addr) :
00292 addr(addr), _mp(addr + DatafileDesc_mp_OFF) { }
00293
00294 char *file() {
00295 return DatafileDesc_file(addr);
00296 }
00297
00298 char *name() {
00299 return DatafileDesc_name(addr);
00300 }
00301
00302 unsigned int &__maxsize() {
00303 return DatafileDesc___maxsize(addr);
00304 }
00305
00306 MapHeader *mp() {
00307 return &_mp;
00308 }
00309
00310 unsigned int &__lastslot() {
00311 return DatafileDesc___lastslot(addr);
00312 }
00313
00314 unsigned short &__dspid() {
00315 return DatafileDesc___dspid(addr);
00316 }
00317 };
00318
00319 class DataspaceDesc {
00320
00321 unsigned char *addr;
00322
00323 public:
00324 DataspaceDesc(unsigned char *addr) : addr(addr) { }
00325
00326 char *name() {
00327 return DataspaceDesc_name(addr);
00328 }
00329
00330 int &__cur() {
00331 return DataspaceDesc___cur(addr);
00332 }
00333
00334 int &__ndat() {
00335 return DataspaceDesc___ndat(addr);
00336 }
00337
00338 short *__datid_ref() {
00339 return (short *)(addr + DataspaceDesc___datid_OFF(0));
00340 }
00341
00342 short &__datid(int datid) {
00343 return DataspaceDesc___datid(addr, datid);
00344 }
00345 };
00346
00347 class DbHeader {
00348
00349 unsigned char *addr;
00350 bool toFree;
00351
00352 public:
00353 DbHeader() {addr = (unsigned char *)(new long long[DbHeader_SIZE / sizeof(unsigned long long)]); toFree = true;}
00354
00355 DbHeader(unsigned char *addr) : addr(addr) { toFree = false;}
00356
00357 ~DbHeader() { if (toFree) delete [] addr;}
00358
00359 void memzero() {
00360 memset(addr, 0, DbHeader_SIZE);
00361 }
00362
00363 unsigned char *_addr() {return addr;}
00364
00365 unsigned int &__magic() {
00366 return DbHeader___magic(addr);
00367 }
00368
00369 unsigned int __magic() const {
00370 return DbHeader___magic(addr);
00371 }
00372
00373 int &__dbid() {
00374 return DbHeader___dbid(addr);
00375 }
00376
00377 char &state() {
00378 return DbHeader_state(addr);
00379 }
00380
00381 int &__guest_uid() {
00382 return DbHeader___guest_uid(addr);
00383 }
00384
00385 Oid &__prot_uid_oid() {
00386 return DbHeader___prot_uid_oid(addr);
00387 }
00388
00389 Oid &__prot_list_oid() {
00390 return DbHeader___prot_list_oid(addr);
00391 }
00392
00393 Oid &__prot_lock_oid() {
00394 return DbHeader___prot_lock_oid(addr);
00395 }
00396
00397 char *shmfile() {
00398 return DbHeader_shmfile(addr);
00399 }
00400
00401 Oid::NX &__nbobjs() {
00402 return DbHeader___nbobjs(addr);
00403 }
00404
00405 unsigned int &__ndat() {
00406 return DbHeader___ndat(addr);
00407 }
00408
00409 DatafileDesc dat(short datid) const {
00410 return DatafileDesc(dat_addr(datid));
00411 }
00412
00413 unsigned char *dat_addr(short datid) const {
00414 return DbHeader_dat_ref(addr, datid);
00415 }
00416
00417 unsigned int &__ndsp() {
00418 return DbHeader___ndsp(addr);
00419 }
00420
00421 DataspaceDesc dsp(short datid) const {
00422 return DataspaceDesc(dsp_addr(datid));
00423 }
00424
00425 unsigned char *dsp_addr(short dspid) const {
00426 return DbHeader_dsp_ref(addr, dspid);
00427 }
00428
00429 short &__def_dspid() {
00430 return DbHeader___def_dspid(addr);
00431 }
00432
00433 DbRootEntry vre(int idx) {
00434 return DbRootEntry(vre_addr(idx));
00435 }
00436
00437 unsigned char *vre_addr(int idx) {
00438 return DbHeader_vre(addr, idx);
00439 }
00440
00441 Oid::NX &__lastidxbusy() {
00442 return DbHeader___lastidxbusy(addr);
00443 }
00444
00445 Oid::NX &__curidxbusy() {
00446 return DbHeader___curidxbusy(addr);
00447 }
00448
00449 Oid::NX &__lastidxblkalloc() {
00450 return DbHeader___lastidxblkalloc(addr);
00451 }
00452
00453 Oid::NX &__lastnsblkalloc(short datid) {
00454 return DbHeader___lastnsblkalloc(addr, datid);
00455 }
00456 };
00457 }
00458
00459 #endif