windows-nt/Source/XPSP1/NT/net/jet500/jet/dae/inc/fileint.h

86 lines
2.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//============== 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 );