recent changes and enhancements from Horacio
This commit is contained in:
@@ -176,12 +176,14 @@ typedef CDXKEYINFO * LPCDXKEYINFO;
|
||||
|
||||
struct _CDXTAG; /* forward declaration */
|
||||
|
||||
typedef struct HB_PAGEINFO_STRU
|
||||
typedef struct HB_CDXPAGEINFO_STRU
|
||||
{
|
||||
LONG Page;
|
||||
LONG Left;
|
||||
LONG Right;
|
||||
BOOL Changed;
|
||||
BOOL keyAdded;
|
||||
BYTE bUsed;
|
||||
BOOL NewRoot;
|
||||
BOOL LastEntry;
|
||||
BOOL Reload;
|
||||
@@ -195,16 +197,19 @@ typedef struct HB_PAGEINFO_STRU
|
||||
BYTE TCBits;
|
||||
BYTE DCMask;
|
||||
BYTE TCMask;
|
||||
USHORT Space;
|
||||
/* USHORT Space; */
|
||||
SHORT FreeSpace;
|
||||
LPCDXKEYINFO pKeys;
|
||||
USHORT uiKeys;
|
||||
SHORT CurKey;
|
||||
struct HB_PAGEINFO_STRU * Owner;
|
||||
struct HB_PAGEINFO_STRU * Child;
|
||||
struct HB_CDXPAGEINFO_STRU * Owner;
|
||||
struct HB_CDXPAGEINFO_STRU * Child;
|
||||
struct _CDXTAG * TagParent;
|
||||
} HB_PAGEINFO;
|
||||
struct HB_CDXPAGEINFO_STRU * pPoolPrev;
|
||||
struct HB_CDXPAGEINFO_STRU * pPoolNext;
|
||||
} HB_CDXPAGEINFO;
|
||||
|
||||
typedef HB_PAGEINFO * LPPAGEINFO;
|
||||
typedef HB_CDXPAGEINFO * LPCDXPAGEINFO;
|
||||
|
||||
|
||||
/*SORT stuff*/
|
||||
|
||||
@@ -67,40 +67,40 @@ static void hb_cdxTagTagStore( LPCDXTAG pTag );
|
||||
static void hb_cdxTagTagOpen( LPCDXTAG pTag, BYTE bCode );
|
||||
static void hb_cdxTagTagClose( LPCDXTAG pTag );
|
||||
static LONG hb_cdxTagNewRoot( LPCDXTAG pTag );
|
||||
static void hb_cdxTagPageLoad( LPCDXTAG pTag, LPPAGEINFO pPage, short noKeys );
|
||||
static void hb_cdxTagPageLoad( LPCDXTAG pTag, LPCDXPAGEINFO pPage, short noKeys );
|
||||
static void hb_cdxTagKeyRead( LPCDXTAG pTag, BYTE bTypRead );
|
||||
static void hb_cdxTagKeyAdd( LPCDXTAG pTag, LPCDXKEYINFO pKey );
|
||||
static void hb_cdxTagPageStore( LPCDXTAG pTag, LPPAGEINFO PIK );
|
||||
static void hb_cdxTagExtNodeWrite( LPCDXTAG pTag, LONG PN, LPCDXDATA pData, LPPAGEINFO PIK );
|
||||
static USHORT hb_cdxTagFillExternalNode( LPCDXTAG pTag, LPCDXDATA pData, LPPAGEINFO PIK,
|
||||
static void hb_cdxTagPageStore( LPCDXTAG pTag, LPCDXPAGEINFO PIK );
|
||||
static void hb_cdxTagExtNodeWrite( LPCDXTAG pTag, LONG PN, LPCDXDATA pData, LPCDXPAGEINFO PIK );
|
||||
static USHORT hb_cdxTagFillExternalNode( LPCDXTAG pTag, LPCDXDATA pData, LPCDXPAGEINFO PIK,
|
||||
USHORT kcnt, USHORT ck, LPCDXKEYINFO * p );
|
||||
static void hb_cdxTagExtNodeBuild( LPCDXTAG pTag, LPCDXDATA pData, LPPAGEINFO pPage, short noKeys );
|
||||
static void hb_cdxTagExtNodeBuild( LPCDXTAG pTag, LPCDXDATA pData, LPCDXPAGEINFO pPage, short noKeys );
|
||||
static void hb_cdxTagTagLoad( LPCDXTAG pTag );
|
||||
static void hb_cdxTagSetRoot( LPCDXTAG pTag, LPPAGEINFO PIK );
|
||||
static void hb_cdxTagIntNodeWrite( LPCDXTAG pTag, LONG PN, LPCDXDATA pData, LPPAGEINFO PIK );
|
||||
static USHORT hb_cdxTagFillInternalNode( LPCDXTAG pTag, LPCDXDATA pData, LPPAGEINFO PIK,
|
||||
static void hb_cdxTagSetRoot( LPCDXTAG pTag, LPCDXPAGEINFO PIK );
|
||||
static void hb_cdxTagIntNodeWrite( LPCDXTAG pTag, LONG PN, LPCDXDATA pData, LPCDXPAGEINFO PIK );
|
||||
static USHORT hb_cdxTagFillInternalNode( LPCDXTAG pTag, LPCDXDATA pData, LPCDXPAGEINFO PIK,
|
||||
USHORT kcnt, USHORT ck, LPCDXKEYINFO * p );
|
||||
static void hb_cdxTagIntNodeBuild( LPCDXTAG pTag, LPCDXDATA pData, LPPAGEINFO pPage );
|
||||
static void hb_cdxTagIntNodeBuild( LPCDXTAG pTag, LPCDXDATA pData, LPCDXPAGEINFO pPage );
|
||||
static LONG hb_cdxTagKeyFind( LPCDXTAG pTag, LPCDXKEYINFO pKey );
|
||||
|
||||
static LPPAGEINFO hb_cdxPageNew( LPCDXTAG PIT, LPPAGEINFO PIK, LONG FilePosn );
|
||||
static void hb_cdxPageFree( LPPAGEINFO pPage );
|
||||
static BOOL hb_cdxPageReadTopKey( LPPAGEINFO pPage );
|
||||
static BOOL hb_cdxPageReadBottomKey( LPPAGEINFO pPage );
|
||||
static int hb_cdxPageSeekKey( LPPAGEINFO pPage, LONG lBlock, LPCDXKEYINFO pKey, BOOL bExact );
|
||||
static void hb_cdxPageInsertKey( LPPAGEINFO pPage, LPCDXKEYINFO pKey, BOOL bAddAfter );
|
||||
static void hb_cdxPagePageStore( LPPAGEINFO pPage );
|
||||
static BOOL hb_cdxPageReadNextKey( LPPAGEINFO pPage );
|
||||
static BOOL hb_cdxPageReadPrevKey( LPPAGEINFO pPage );
|
||||
static LPCDXKEYINFO hb_cdxPageGetKey( LPPAGEINFO pPage, USHORT uiKey );
|
||||
static void hb_cdxPagePageLoad( LPPAGEINFO pPage );
|
||||
static int hb_cdxPageRetrieveKey( LPPAGEINFO pPage, LPCDXKEYINFO *pKey );
|
||||
static void hb_cdxPageAddNodeKey( LPPAGEINFO pPage, LPCDXKEYINFO pKey );
|
||||
static int hb_cdxPageSeekNodeTag( LPPAGEINFO pPage, LONG Tag );
|
||||
static BOOL hb_cdxPageGetChild( LPPAGEINFO pPage, LONG Tag );
|
||||
static void hb_cdxPageDeleteKey( LPPAGEINFO pPage );
|
||||
static void hb_cdxPageReplaceNodeKey( LPPAGEINFO pPage, LPCDXKEYINFO pKey );
|
||||
static void hb_cdxPageDeleteNodeKey( LPPAGEINFO pPage );
|
||||
static LPCDXPAGEINFO hb_cdxPageNew( LPCDXTAG PIT, LPCDXPAGEINFO PIK, LONG FilePosn );
|
||||
static void hb_cdxPageFree( LPCDXPAGEINFO pPage );
|
||||
static BOOL hb_cdxPageReadTopKey( LPCDXPAGEINFO pPage );
|
||||
static BOOL hb_cdxPageReadBottomKey( LPCDXPAGEINFO pPage );
|
||||
static int hb_cdxPageSeekKey( LPCDXPAGEINFO pPage, LONG lBlock, LPCDXKEYINFO pKey, BOOL bExact );
|
||||
static void hb_cdxPageInsertKey( LPCDXPAGEINFO pPage, LPCDXKEYINFO pKey, BOOL bAddAfter );
|
||||
static void hb_cdxPagePageStore( LPCDXPAGEINFO pPage );
|
||||
static BOOL hb_cdxPageReadNextKey( LPCDXPAGEINFO pPage );
|
||||
static BOOL hb_cdxPageReadPrevKey( LPCDXPAGEINFO pPage );
|
||||
static LPCDXKEYINFO hb_cdxPageGetKey( LPCDXPAGEINFO pPage, USHORT uiKey );
|
||||
static void hb_cdxPagePageLoad( LPCDXPAGEINFO pPage );
|
||||
static int hb_cdxPageRetrieveKey( LPCDXPAGEINFO pPage, LPCDXKEYINFO *pKey );
|
||||
static void hb_cdxPageAddNodeKey( LPCDXPAGEINFO pPage, LPCDXKEYINFO pKey );
|
||||
static int hb_cdxPageSeekNodeTag( LPCDXPAGEINFO pPage, LONG Tag );
|
||||
static BOOL hb_cdxPageGetChild( LPCDXPAGEINFO pPage, LONG Tag );
|
||||
static void hb_cdxPageDeleteKey( LPCDXPAGEINFO pPage );
|
||||
static void hb_cdxPageReplaceNodeKey( LPCDXPAGEINFO pPage, LPCDXKEYINFO pKey );
|
||||
static void hb_cdxPageDeleteNodeKey( LPCDXPAGEINFO pPage );
|
||||
|
||||
static LPCDXINDEX hb_cdxIndexNew( AREAP pArea );
|
||||
static void hb_cdxIndexFree( LPCDXINDEX pIndex );
|
||||
@@ -164,3 +164,31 @@ static LPCDXINDEX hb_cdxFindBag( CDXAREAP pArea, char * szBagName );
|
||||
static LPCDXKEYINFO hb_cdxEvalKey( CDXAREAP pArea, LPCDXTAG pTag );
|
||||
static BOOL hb_cdxEvalCond ( CDXAREAP pArea, PHB_ITEM pCondItem, BOOL checkenv );
|
||||
|
||||
|
||||
static BYTE hb_cdxPageKeyLeafInsert( LPCDXPAGEINFO pPage, LPCDXKEYINFO pKey, BOOL bAddAfter );
|
||||
static BYTE hb_cdxPageKeyInsert( LPCDXPAGEINFO pPage, LPCDXKEYINFO pKey, BOOL bAddAfter );
|
||||
static void hb_cdxPageCalcLeafSpace( LPCDXPAGEINFO pPage );
|
||||
static SHORT hb_cdxPageCalcLeafKeySpace( LPCDXPAGEINFO pPage,
|
||||
LPCDXKEYINFO pKeyPrev, LPCDXKEYINFO pKey, LPCDXKEYINFO pKeyNext );
|
||||
static BYTE hb_cdxPageKeyLeafBalance( LPCDXPAGEINFO pPage );
|
||||
static BYTE hb_cdxPageKeyIntBalance( LPCDXPAGEINFO pPage );
|
||||
static BYTE hb_cdxPageRootSplit( LPCDXPAGEINFO pPage );
|
||||
|
||||
static BYTE hb_cdxPageKeyDelete( LPCDXPAGEINFO pPage );
|
||||
static BYTE hb_cdxPageKeyLeafDelete( LPCDXPAGEINFO pPage );
|
||||
|
||||
static void hb_cdxPagePoolFree( LPCDXINDEX pIndex, int nPagesLeft );
|
||||
static void hb_cdxPagePoolFreeTag( LPCDXTAG pTag, int nPagesLeft );
|
||||
static void hb_cdxPagePoolFlush( LPCDXINDEX pIndex );
|
||||
static void hb_cdxPagePoolFlushTag( LPCDXTAG pTag );
|
||||
static void hb_cdxPagePoolCheck( LPCDXTAG pTag );
|
||||
static void hb_cdxPageRealFree( LPCDXPAGEINFO pPage );
|
||||
|
||||
static void hb_cdxKeyListFree( LPCDXKEYINFO pKeyList );
|
||||
static LPCDXKEYINFO hb_cdxKeyListGetKey ( LPCDXKEYINFO pKeyList, USHORT uiKey );
|
||||
static LPCDXKEYINFO hb_cdxKeyListGetLast ( LPCDXKEYINFO pKeyList );
|
||||
|
||||
#define FAST_GOCOLD(A) ( ((CDXAREAP) (A))->fRecordChanged ? ( SELF_GOCOLD( (A) ) ) : SUCCESS )
|
||||
|
||||
static void hb_cdxDoGPF ( void );
|
||||
static void hb_cdxPageLeafCheckKeys( LPCDXPAGEINFO pPage );
|
||||
|
||||
Reference in New Issue
Block a user