Windows-Server-2003/net/jet500/xjet/inc/util.h

75 lines
1.9 KiB
C

#ifndef UTIL_H /* Allow this file to be included at will */
#define UTIL_H
#ifndef _FILE_DEFINED
#include <stdio.h> /* Needed for FPrintF2 prototype */
#endif /* !_FILE_DEFINED */
/* system node keys
/**/
extern const KEY rgkeySTATIC[7];
#define pkeyNull ((KEY *)(rgkeySTATIC+0))
#define pkeyOwnExt ((KEY *)(rgkeySTATIC+1))
#define pkeyAvailExt ((KEY *)(rgkeySTATIC+2))
#define pkeyData ((KEY *)(rgkeySTATIC+3))
#define pkeyLong ((KEY *)(rgkeySTATIC+4))
#define pkeyAutoInc ((KEY *)(rgkeySTATIC+5))
#define pkeyDatabases ((KEY *)(rgkeySTATIC+6))
extern RES rgres[];
/* NOTE: whenever this is changed, also update the rgres[] in sysinit.c */
#define iresCSR 0
#define iresFCB 1
#define iresFUCB 2
#define iresIDB 3
#define iresPIB 4
#define iresSCB 5
#define iresDAB 6
#define iresLinkedMax 7 // the last linked ires + 1
#define iresVER 7
#define iresBF 8
#define iresMax 9 // max all category
/**************** function prototypes *********************
/**********************************************************
/**/
ERR ErrMEMInit( VOID );
BYTE *PbMEMAlloc( int ires);
VOID MEMRelease( int ires, BYTE *pb );
VOID MEMTerm( VOID );
#define PbMEMPreferredThreshold( ires ) ( rgres[ires].pbPreferredThreshold )
#define PbMEMMax( ires ) ( rgres[ires].pbAlloc + ( rgres[ires].cblockAlloc * rgres[ires].cbSize ) )
#ifdef MEM_CHECK
VOID MEMCheck( VOID );
#else
#define MEMCheck()
#endif
#ifdef DEBUG
void VARARG PrintF2(const char * fmt, ...);
void VARARG FPrintF2(const char * fmt, ...);
VOID MEMPrintStat( VOID );
#define PrintF PrintF2
#else
#define PrintF()
#endif
STATIC INLINE INT CmpStKey( BYTE *stKey, const KEY *pkey )
{
INT s;
INT sDiff;
sDiff = *stKey - pkey->cb;
s = memcmp( stKey + 1, pkey->pb, sDiff < 0 ? (INT)*stKey : pkey->cb );
return s ? s : sDiff;
}
INT CmpPartialKeyKey( KEY *pkey1, KEY *pkey2 );
#endif /* !UTIL_H */