|
|
//============== DAE: OS/2 Database Access Engine ===================
//============== fileint.h: File Manager Internals ===================
// the pragma is bad for efficiency, but we need it here so that the
// THREEBYTES will not be aligned on 4-byte boundary
#pragma pack(1)
// Data kept at the "fields" node of a file
typedef struct { FID fidFixedLast; FID fidVarLast; FID fidTaggedLast; } FIELDDATA;
// Data kept at each son of "fields" (a field definition)
typedef struct { FID fid; LANGID langid; // language of field
WORD wCountry; // country of language
USHORT cp; // code page of language
BYTE bFlags; BYTE bColtyp; ULONG ulLength; CHAR szFieldName[JET_cbNameMost + 1]; WORD cbDefault; BYTE rgbDefault[1]; // must be last field in structure
} FIELDDEFDATA;
// Data kept at each son of "indexes" for a file (an index definition)
typedef struct { LANGID langid; // language of index
#ifdef DATABASE_FORMAT_CHANGE
#else
// UNDONE: index should not have country code
// UNDONE: index should not have cp
WORD wCountry; // country of language
USHORT cp; // code page of language
#endif
BYTE bFlags; BYTE bDensity; CHAR szIndexName[JET_cbNameMost + 1]; BYTE iidxsegMac; IDXSEG rgidxseg[JET_ccolKeyMost]; // must be last field in structure
} INDEXDEFDATA;
#define PbIndexName( pfucb ) ( pfucb->lineData.pb + offsetof( INDEXDEFDATA, szIndexName ) )
#define CbIndexName( pfucb ) ( strlen( PbIndexName( pfucb ) ) )
#define FIndexNameNull( pfucb ) ( CbIndexName( pfucb ) == 0 )
#pragma pack()
ERR ErrFILESeek( FUCB *pfucb, CHAR *szTable ); #define fBumpIndexCount (1<<0)
#define fDropIndexCount (1<<1)
#define fDDLStamp (1<<2)
ERR ErrFILEIUpdateFDPData( FUCB *pfucb, ULONG grbit );
/* field and index definition
/**/ ERR ErrRECNewIDB( IDB **ppidb ); ERR ErrRECAddFieldDef( FDB *pfdb, FID fid, FIELD *pfieldNew ); ERR ErrRECAddKeyDef( FDB *pfdb, IDB *pidb, BYTE iidxsegMac, IDXSEG *rgidxseg, BYTE bFlags, LANGID langid ); #define RECFreeIDB(pidb) { MEMReleasePidb(pidb); }
ERR ErrRECNewFDB( FDB **ppfdb, FID fidFixedLast, FID fidVarLast, FID fidTaggedLast ); VOID FDBSet( FCB *pfcb, FDB *pfdb ); ERR ErrFDBConstruct( FUCB *pfucb, FCB *pfcb, BOOL fBuildDefault ); VOID FDBDestruct( FDB *pfdb );
VOID FILEIDeallocateFileFCB( FCB *pfcb ); ERR ErrFILEIGenerateFCB( FUCB *pfucb, FCB **ppfcb ); ERR ErrFILEIFillInFCB( FUCB *pfucb, FCB *pfcb ); ERR ErrFILEIBuildIndexDefs( FUCB *pfucb, FCB *pfcb ); ERR ErrFILEIFillIn2ndIdxFCB( FUCB *pfucb, FDB *pfdb, FCB *pfcb ); VOID FILEIDeallocateFileFCB( FCB *pfcb ); VOID FILESetAllIndexMask( FCB *pfcbTable ); ERR ErrFILEDeleteTable( PIB *ppib, DBID dbid, CHAR *szName );
FIELD *PfieldFCBFromColumnName( FCB *pfcb, CHAR *szColumnName ); FCB *PfcbFCBFromIndexName( FCB *pfcbTable, CHAR *szName );
|