recent changes and enhancements from Horacio

This commit is contained in:
Antonio Linares
2003-06-14 07:23:47 +00:00
parent 9af3ebbf86
commit 571b0ecfeb
2 changed files with 66 additions and 33 deletions

View File

@@ -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*/

View File

@@ -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 );