Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

64 lines
2.9 KiB

//============== DAE: OS/2 Database Access Engine ===================
//============== idb.h: Index Descriptor Block ===================
// Flags for IDB
#define fidbUnique (1<<0) // Duplicate keys not allowed
#define fidbHasTagged (1<<1) // Has a tagged segment
#define fidbAllowAllNulls (1<<2) // Make entries for NULL keys (all segments are null)
#define fidbAllowSomeNulls (1<<3) // Make entries for keys with some null segments
#define fidbNoNullSeg (1<<4) // Don't allow a NULL key segment
#define fidbPrimary (1<<5) // Index is the primary index
#define fidbLangid (1<<6) // Index langid
#define fidbHasMultivalue (1<<7) // Has a multivalued segment
#define IDBSetUnique( pidb ) ( (pidb)->fidb |= fidbUnique )
#define IDBResetUnique( pidb ) ( (pidb)->fidb &= ~fidbUnique )
#define FIDBUnique( pidb ) ( (pidb)->fidb & fidbUnique )
#define IDBSetHasTagged( pidb ) ( (pidb)->fidb |= fidbHasTagged )
#define IDBResetHasTagged( pidb ) ( (pidb)->fidb &= ~fidbHasTagged )
#define FIDBHasTagged( pidb ) ( (pidb)->fidb & fidbHasTagged )
#define IDBSetAllowAllNulls( pidb ) ( (pidb)->fidb |= fidbAllowAllNulls )
#define IDBResetAllowAllNulls( pidb ) ( (pidb)->fidb &= ~fidbAllowAllNulls )
#define FIDBAllowAllNulls( pidb ) ( (pidb)->fidb & fidbAllowAllNulls )
#define IDBSetAllowSomeNulls( pidb ) ( (pidb)->fidb |= fidbAllowSomeNulls )
#define IDBResetAllowSomeNulls( pidb ) ( (pidb)->fidb &= ~fidbAllowSomeNulls )
#define FIDBAllowSomeNulls( pidb ) ( (pidb)->fidb & fidbAllowSomeNulls )
#define IDBSetNoNullSeg( pidb ) ( (pidb)->fidb |= fidbNoNullSeg )
#define IDBResetNoNullSeg( pidb ) ( (pidb)->fidb &= ~fidbNoNullSeg )
#define FIDBNoNullSeg( pidb ) ( (pidb)->fidb & fidbNoNullSeg )
#define IDBSetPrimary( pidb ) ( (pidb)->fidb |= fidbPrimary )
#define IDBResetPrimary( pidb ) ( (pidb)->fidb &= ~fidbPrimary )
#define FIDBPrimary( pidb ) ( (pidb)->fidb & fidbPrimary )
#define IDBSetLangid( pidb ) ( (pidb)->fidb |= fidbLangid )
#define IDBResetLangid( pidb ) ( (pidb)->fidb &= ~fidbLangid )
#define FIDBLangid( pidb ) ( (pidb)->fidb & fidbLangid )
#define IDBSetMultivalued( pidb ) ( (pidb)->fidb |= fidbMultivalued )
#define IDBResetMultivalued( pidb ) ( (pidb)->fidb &= ~fidbMultivalued )
#define FIDBMultivalued( pidb ) ( (pidb)->fidb & fidbMultivalued )
// Index Descriptor Block: information about index key
struct _idb
{
IDXSEG rgidxseg[JET_ccolKeyMost];
BYTE rgbitIdx[32];
LANGID langid; // language of index
CHAR szName[JET_cbNameMost + 1];
BYTE iidxsegMac;
BYTE fidb;
BYTE rgbFiller[2];
};
#define PidbMEMAlloc() (IDB*)PbMEMAlloc(iresIDB)
#ifdef DEBUG /* Debug check for illegal use of freed idb */
#define MEMReleasePidb(pidb) { MEMRelease(iresIDB, (BYTE*)(pidb)); pidb = pidbNil; }
#else
#define MEMReleasePidb(pidb) { MEMRelease(iresIDB, (BYTE*)(pidb)); }
#endif