From 33177381873f50ddae6de97e665606da0f3cc3ae Mon Sep 17 00:00:00 2001 From: dsandersoremutah Date: Fri, 12 May 2006 19:26:18 +0000 Subject: [PATCH] Got rid of IF_Pool and IF_DynaBuf. Got rid of FlmAllocPool. Also fixed compiler warnings for release builds. git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@409 0109f412-320b-0410-ab79-c3e0c5ffbbe6 --- ftk/src/ftk.h | 567 +++++++++++++++++++++++++++++---------- ftk/src/ftkbtree.cpp | 50 ++-- ftk/src/ftkini.cpp | 56 ++-- ftk/src/ftkmem.cpp | 165 +----------- ftk/src/ftkntab.cpp | 50 +--- ftk/src/ftkstrm.cpp | 23 +- ftk/src/ftksys.h | 223 --------------- ftk/src/ftktext.cpp | 2 +- ftk/src/ftkthrd.cpp | 20 +- xflaim/src/Makefile.am | 1 - xflaim/src/btreeinfo.cpp | 9 +- xflaim/src/fdict.cpp | 107 +++----- xflaim/src/fdict.h | 4 +- xflaim/src/fdom.cpp | 28 +- xflaim/src/flaimsys.h | 288 ++------------------ xflaim/src/flchkix.cpp | 4 +- xflaim/src/flclose.cpp | 18 +- xflaim/src/flkeyret.cpp | 10 +- xflaim/src/flopen.cpp | 48 +--- xflaim/src/fntable.cpp | 48 +--- xflaim/src/fqsort.cpp | 4 +- xflaim/src/fquery.cpp | 92 +++---- xflaim/src/fslfileu.cpp | 20 +- xflaim/src/fstructs.h | 6 +- xflaim/src/funicode.cpp | 2 +- xflaim/src/fxml.cpp | 42 +-- xflaim/src/fxml.h | 17 +- xflaim/src/fxpath.cpp | 4 +- xflaim/src/kybuild.cpp | 79 ++---- xflaim/src/kyqsort.cpp | 4 +- xflaim/src/kyunlock.cpp | 13 +- xflaim/src/xflaim.h | 24 +- xflaim/util/checkdb.cpp | 25 +- xflaim/util/fshell.cpp | 75 ++---- xflaim/util/fshell.h | 4 +- xflaim/util/rebuild.cpp | 19 +- xflaim/util/view.cpp | 3 +- xflaim/util/view.h | 2 +- 38 files changed, 720 insertions(+), 1436 deletions(-) diff --git a/ftk/src/ftk.h b/ftk/src/ftk.h index 1c3d4b9..f18d5e5 100644 --- a/ftk/src/ftk.h +++ b/ftk/src/ftk.h @@ -401,13 +401,13 @@ flminterface IF_PosIStream; flminterface IF_ResultSet; flminterface IF_ThreadInfo; - flminterface IF_Pool; - flminterface IF_DynaBuf; flminterface IF_OStream; flminterface IF_IOStream; flminterface IF_LogMessageClient; flminterface IF_Thread; flminterface IF_IOBuffer; + class F_Pool; + class F_DynaBuf; /**************************************************************************** Desc: Cross-platform definitions @@ -825,8 +825,84 @@ #define RC_SET_AND_ASSERT( rc) (rc) #define RC_UNEXPECTED_ASSERT( rc) #define f_assert(c) + #define flmAssert(c) #endif + /**************************************************************************** + Desc: Memory + ****************************************************************************/ + + RCODE FLMAPI f_allocImp( + FLMUINT uiSize, + void ** ppvPtr, + FLMBOOL bFromNewOp, + const char * pszFile, + int iLine); + + #define f_alloc(s,p) \ + f_allocImp( (s), (void **)(p), FALSE, __FILE__, __LINE__) + + RCODE FLMAPI f_callocImp( + FLMUINT uiSize, + void ** ppvPtr, + const char * pszFile, + int iLine); + + #define f_calloc(s,p) \ + f_callocImp( (s), (void **)(p), __FILE__, __LINE__) + + RCODE FLMAPI f_reallocImp( + FLMUINT uiSize, + void ** ppvPtr, + const char * pszFile, + int iLine); + + #define f_realloc(s,p) \ + f_reallocImp( (s), (void **)(p), __FILE__, __LINE__) + + RCODE FLMAPI f_recallocImp( + FLMUINT uiSize, + void ** ppvPtr, + const char * pszFile, + int iLine); + + #define f_recalloc(s,p) \ + f_recallocImp( (s), (void **)(p), __FILE__, __LINE__) + + #define f_new \ + new( __FILE__, __LINE__) + + void FLMAPI f_freeImp( + void ** ppvPtr, + FLMBOOL bFromDelOp); + + #define f_free(p) \ + f_freeImp( (void **)(p), FALSE) + + void f_resetStackInfoImp( + void * pvPtr, + const char * pszFileName, + int iLineNumber); + + #define f_resetStackInfo(p) \ + f_resetStackInfoImp( (p), __FILE__, __LINE__) + + FLMUINT f_msize( + void * pvPtr); + + RCODE FLMAPI f_allocAlignedBuffer( + FLMUINT uiMinSize, + void ** ppvAlloc); + + void FLMAPI f_freeAlignedBuffer( + void ** ppvAlloc); + + RCODE FLMAPI f_getMemoryInfo( + FLMUINT64 * pui64TotalPhysMem, + FLMUINT64 * pui64AvailPhysMem); + + FLMBOOL FLMAPI f_canGetMemoryInfo( void); + /**************************************************************************** Desc: ****************************************************************************/ @@ -1603,73 +1679,6 @@ FLMUINT uiKeyLength) = 0; }; - /**************************************************************************** - Desc: Pool memory allocator - ****************************************************************************/ - flminterface IF_Pool : public F_Object - { - virtual void FLMAPI poolInit( - FLMUINT uiBlockSize) = 0; - - virtual RCODE FLMAPI poolAlloc( - FLMUINT uiSize, - void ** ppvPtr) = 0; - - virtual RCODE FLMAPI poolCalloc( - FLMUINT uiSize, - void ** ppvPtr) = 0; - - virtual void FLMAPI poolFree( void) = 0; - - virtual void FLMAPI poolReset( - void * pvMark, - FLMBOOL bReduceFirstBlock = FALSE) = 0; - - virtual void * FLMAPI poolMark( void) = 0; - - virtual FLMUINT FLMAPI getBlockSize( void) = 0; - - virtual FLMUINT FLMAPI getBytesAllocated( void) = 0; - }; - - RCODE FLMAPI FlmAllocPool( - IF_Pool ** ppPool, - FLMUINT uiBlockSize = 0); - - /**************************************************************************** - Desc: Dynamic buffer - ****************************************************************************/ - flminterface IF_DynaBuf : public F_Object - { - virtual void FLMAPI truncateData( - FLMUINT uiSize) = 0; - - virtual RCODE FLMAPI allocSpace( - FLMUINT uiSize, - void ** ppvPtr) = 0; - - virtual RCODE FLMAPI appendData( - const void * pvData, - FLMUINT uiSize) = 0; - - virtual RCODE FLMAPI appendByte( - FLMBYTE ucChar) = 0; - - virtual RCODE FLMAPI appendUniChar( - FLMUNICODE uChar) = 0; - - virtual FLMBYTE * FLMAPI getBufferPtr( void) = 0; - - virtual FLMUNICODE * FLMAPI getUnicodePtr( void) = 0; - - virtual FLMUINT FLMAPI getUnicodeLength( void) = 0; - - virtual FLMUINT FLMAPI getDataLength( void) = 0; - - virtual RCODE FLMAPI copyFromBuffer( - IF_DynaBuf * pSource) = 0; - }; - /**************************************************************************** Desc: Random numbers ****************************************************************************/ @@ -1788,7 +1797,7 @@ FLMUINT * puiThreadId) = 0; virtual RCODE FLMAPI getThreadInfo( - IF_Pool * pPool, + F_Pool * pPool, F_THREAD_INFO ** ppThreadInfo, FLMUINT * puiNumThreads) = 0; @@ -2130,7 +2139,7 @@ IF_PosIStream * pIStream, FLMBOOL bAllowEscapes, FLMUINT uiCompareRules, - IF_DynaBuf * pDynaBuf); + F_DynaBuf * pDynaBuf); RCODE FLMAPI f_getNextMetaphone( IF_IStream * pIStream, @@ -2819,7 +2828,7 @@ ...); /**************************************************************************** - Desc: + Desc: Memory copying, moving, setting ****************************************************************************/ void * FLMAPI f_memcpy( @@ -2924,81 +2933,6 @@ FLMBYTE * pucBuf, FLMUINT * puiBufLength); - /**************************************************************************** - Desc: Memory - ****************************************************************************/ - - RCODE FLMAPI f_allocImp( - FLMUINT uiSize, - void ** ppvPtr, - FLMBOOL bFromNewOp, - const char * pszFile, - int iLine); - - #define f_alloc(s,p) \ - f_allocImp( (s), (void **)(p), FALSE, __FILE__, __LINE__) - - RCODE FLMAPI f_callocImp( - FLMUINT uiSize, - void ** ppvPtr, - const char * pszFile, - int iLine); - - #define f_calloc(s,p) \ - f_callocImp( (s), (void **)(p), __FILE__, __LINE__) - - RCODE FLMAPI f_reallocImp( - FLMUINT uiSize, - void ** ppvPtr, - const char * pszFile, - int iLine); - - #define f_realloc(s,p) \ - f_reallocImp( (s), (void **)(p), __FILE__, __LINE__) - - RCODE FLMAPI f_recallocImp( - FLMUINT uiSize, - void ** ppvPtr, - const char * pszFile, - int iLine); - - #define f_recalloc(s,p) \ - f_recallocImp( (s), (void **)(p), __FILE__, __LINE__) - - #define f_new \ - new( __FILE__, __LINE__) - - void FLMAPI f_freeImp( - void ** ppvPtr, - FLMBOOL bFromDelOp); - - #define f_free(p) \ - f_freeImp( (void **)(p), FALSE) - - void f_resetStackInfoImp( - void * pvPtr, - const char * pszFileName, - int iLineNumber); - - #define f_resetStackInfo(p) \ - f_resetStackInfoImp( (p), __FILE__, __LINE__) - - FLMUINT f_msize( - void * pvPtr); - - RCODE FLMAPI f_allocAlignedBuffer( - FLMUINT uiMinSize, - void ** ppvAlloc); - - void FLMAPI f_freeAlignedBuffer( - void ** ppvAlloc); - - RCODE FLMAPI f_getMemoryInfo( - FLMUINT64 * pui64TotalPhysMem, - FLMUINT64 * pui64AvailPhysMem); - - FLMBOOL FLMAPI f_canGetMemoryInfo( void); - /**************************************************************************** Desc: Logging ****************************************************************************/ @@ -3071,8 +3005,6 @@ ****************************************************************************/ flminterface IF_NameTable : public F_Object { - virtual RCODE FLMAPI setupNameTable( void) = 0; - virtual void FLMAPI clearTable( FLMUINT uiPoolBlkSize) = 0; @@ -4052,4 +3984,341 @@ FLMINT iError, RCODE defaultRc); + /**************************************************************************** + Desc: This class is used to do pool memory allocations. + ****************************************************************************/ + class F_Pool : public F_Object + { + public: + + typedef struct PoolMemoryBlock + { + PoolMemoryBlock * pPrevBlock; + FLMUINT uiBlockSize; + FLMUINT uiFreeOffset; + FLMUINT uiFreeSize; + } MBLK; + + typedef struct + { + FLMUINT uiAllocBytes; + FLMUINT uiCount; + } POOL_STATS; + + F_Pool() + { + m_uiBytesAllocated = 0; + m_pLastBlock = NULL; + m_pPoolStats = NULL; + m_uiBlockSize = 0; + } + + virtual ~F_Pool(); + + FINLINE void FLMAPI poolInit( + FLMUINT uiBlockSize) + { + m_uiBlockSize = uiBlockSize; + } + + void smartPoolInit( + POOL_STATS * pPoolStats); + + RCODE FLMAPI poolAlloc( + FLMUINT uiSize, + void ** ppvPtr); + + RCODE FLMAPI poolCalloc( + FLMUINT uiSize, + void ** ppvPtr); + + void FLMAPI poolFree( void); + + void FLMAPI poolReset( + void * pvMark, + FLMBOOL bReduceFirstBlock = FALSE); + + FINLINE void * FLMAPI poolMark( void) + { + return (void *)(m_pLastBlock + ? (FLMBYTE *)m_pLastBlock + m_pLastBlock->uiFreeOffset + : NULL); + } + + FINLINE FLMUINT FLMAPI getBlockSize( void) + { + return( m_uiBlockSize); + } + + FINLINE FLMUINT FLMAPI getBytesAllocated( void) + { + return( m_uiBytesAllocated); + } + + private: + + FINLINE void updateSmartPoolStats( void) + { + if (m_uiBytesAllocated) + { + if( (m_pPoolStats->uiAllocBytes + m_uiBytesAllocated) >= 0xFFFF0000) + { + m_pPoolStats->uiAllocBytes = + (m_pPoolStats->uiAllocBytes / m_pPoolStats->uiCount) * 100; + m_pPoolStats->uiCount = 100; + } + else + { + m_pPoolStats->uiAllocBytes += m_uiBytesAllocated; + m_pPoolStats->uiCount++; + } + m_uiBytesAllocated = 0; + } + } + + FINLINE void setInitialSmartPoolBlkSize( void) + { + // Determine starting block size: + // 1) average of bytes allocated / # of frees/resets (average size needed) + // 2) add 10% - to minimize extra allocs + + m_uiBlockSize = (m_pPoolStats->uiAllocBytes / m_pPoolStats->uiCount); + m_uiBlockSize += (m_uiBlockSize / 10); + + if (m_uiBlockSize < 512) + { + m_uiBlockSize = 512; + } + } + + void freeToMark( + void * pvMark); + + PoolMemoryBlock * m_pLastBlock; + FLMUINT m_uiBlockSize; + FLMUINT m_uiBytesAllocated; + POOL_STATS * m_pPoolStats; + }; + + /**************************************************************************** + Desc: + *****************************************************************************/ + class F_DynaBuf : public F_Object + { + public: + + F_DynaBuf( + FLMBYTE * pucBuffer, + FLMUINT uiBufferSize) + { + m_pucBuffer = pucBuffer; + m_uiBufferSize = uiBufferSize; + m_uiOffset = 0; + m_bAllocatedBuffer = FALSE; + } + + virtual ~F_DynaBuf() + { + if( m_bAllocatedBuffer) + { + f_free( &m_pucBuffer); + } + } + + FINLINE void FLMAPI truncateData( + FLMUINT uiSize) + { + if( uiSize < m_uiOffset) + { + m_uiOffset = uiSize; + } + } + + FINLINE RCODE FLMAPI allocSpace( + FLMUINT uiSize, + void ** ppvPtr) + { + RCODE rc = NE_FLM_OK; + + if( m_uiOffset + uiSize >= m_uiBufferSize) + { + if( RC_BAD( rc = resizeBuffer( m_uiOffset + uiSize + 512))) + { + goto Exit; + } + } + + *ppvPtr = &m_pucBuffer[ m_uiOffset]; + m_uiOffset += uiSize; + + Exit: + + return( rc); + } + + FINLINE RCODE FLMAPI appendData( + const void * pvData, + FLMUINT uiSize) + { + RCODE rc = NE_FLM_OK; + void * pvTmp = NULL; + + if( RC_BAD( rc = allocSpace( uiSize, &pvTmp))) + { + goto Exit; + } + + if( uiSize == 1) + { + *((FLMBYTE *)pvTmp) = *((FLMBYTE *)pvData); + } + else + { + f_memcpy( pvTmp, pvData, uiSize); + } + + Exit: + + return( rc); + } + + FINLINE RCODE FLMAPI appendByte( + FLMBYTE ucChar) + { + RCODE rc = NE_FLM_OK; + FLMBYTE * pucTmp; + + if( RC_BAD( rc = allocSpace( 1, (void **)&pucTmp))) + { + goto Exit; + } + + *pucTmp = ucChar; + + Exit: + + return( rc); + } + + FINLINE RCODE FLMAPI appendUniChar( + FLMUNICODE uChar) + { + RCODE rc = NE_FLM_OK; + FLMUNICODE * puTmp; + + if( RC_BAD( rc = allocSpace( sizeof( FLMUNICODE), (void **)&puTmp))) + { + goto Exit; + } + + *puTmp = uChar; + + Exit: + + return( rc); + } + + FINLINE FLMBYTE * FLMAPI getBufferPtr( void) + { + return( m_pucBuffer); + } + + FINLINE FLMUNICODE * FLMAPI getUnicodePtr( void) + { + if( m_uiOffset >= sizeof( FLMUNICODE)) + { + return( (FLMUNICODE *)m_pucBuffer); + } + + return( NULL); + } + + FINLINE FLMUINT FLMAPI getUnicodeLength( void) + { + if( m_uiOffset <= sizeof( FLMUNICODE)) + { + return( 0); + } + + return( (m_uiOffset >> 1) - 1); + } + + FINLINE FLMUINT FLMAPI getDataLength( void) + { + return( m_uiOffset); + } + + FINLINE RCODE FLMAPI copyFromBuffer( + F_DynaBuf * pSource) + { + RCODE rc = NE_FLM_OK; + + if( RC_BAD( rc = resizeBuffer( pSource->m_uiBufferSize))) + { + goto Exit; + } + + if( (m_uiOffset = pSource->m_uiOffset) != 0) + { + f_memcpy( m_pucBuffer, pSource->m_pucBuffer, pSource->m_uiOffset); + } + + Exit: + + return( rc); + } + + private: + + FINLINE RCODE resizeBuffer( + FLMUINT uiNewSize) + { + RCODE rc = NE_FLM_OK; + + if( !m_bAllocatedBuffer) + { + if( uiNewSize > m_uiBufferSize) + { + FLMBYTE * pucOriginalBuf = m_pucBuffer; + + if( RC_BAD( rc = f_alloc( uiNewSize, &m_pucBuffer))) + { + m_pucBuffer = pucOriginalBuf; + goto Exit; + } + + m_bAllocatedBuffer = TRUE; + + if( m_uiOffset) + { + f_memcpy( m_pucBuffer, pucOriginalBuf, m_uiOffset); + } + } + } + else + { + if( RC_BAD( rc = f_realloc( uiNewSize, &m_pucBuffer))) + { + goto Exit; + } + + if( uiNewSize < m_uiOffset) + { + m_uiOffset = uiNewSize; + } + } + + m_uiBufferSize = uiNewSize; + + Exit: + + return( rc); + } + + FLMBOOL m_bAllocatedBuffer; + FLMBYTE * m_pucBuffer; + FLMUINT m_uiBufferSize; + FLMUINT m_uiOffset; + }; + #endif // FTK_H diff --git a/ftk/src/ftkbtree.cpp b/ftk/src/ftkbtree.cpp index c976258..e69059d 100644 --- a/ftk/src/ftkbtree.cpp +++ b/ftk/src/ftkbtree.cpp @@ -1189,7 +1189,7 @@ private: FLMUINT32 ui32ToBlkAddr); IF_BlockMgr * m_pBlockMgr; - IF_Pool * m_pPool; + F_Pool m_pool; FLMUINT m_uiRootBlkAddr; FLMBOOL m_bCounts; FLMBOOL m_bData; @@ -1478,7 +1478,7 @@ Desc: F_Btree::F_Btree( void) { m_pBlockMgr = NULL; - m_pPool = NULL; + m_pool.poolInit( 4096); m_bOpened = FALSE; m_uiRootBlkAddr = 0; m_pStack = NULL; @@ -1526,6 +1526,7 @@ F_Btree::~F_Btree( void) { btClose(); } + m_pool.poolFree(); } /*************************************************************************** @@ -1664,14 +1665,10 @@ RCODE F_Btree::btOpen( m_bSetupForWrite = FALSE; m_bSetupForReplace = FALSE; - if( RC_BAD( rc = FlmAllocPool( &m_pPool))) - { - goto Exit; - } + m_pool.poolFree(); + m_pool.poolInit( m_uiBlockSize); - m_pPool->poolInit( m_uiBlockSize); - - if( RC_BAD( rc = m_pPool->poolAlloc( + if( RC_BAD( rc = m_pool.poolAlloc( sizeof( BTREE_REPLACE_STRUCT) * F_BTREE_MAX_LEVELS, (void **)&m_pReplaceStruct))) { @@ -1729,12 +1726,9 @@ void F_Btree::btClose() m_pBlockMgr->Release(); m_pBlockMgr = NULL; } - - if( m_pPool) - { - m_pPool->Release(); - m_pPool = NULL; - } + + m_pool.poolFree(); + m_pool.poolInit( 4096); m_uiRootBlkAddr = 0; m_bOpened = FALSE; @@ -4858,7 +4852,7 @@ RCODE F_Btree::moveToPrev( FLMUINT uiEntrySize; FLMUINT uiIndex; FLMBOOL bEntriesCombined = FALSE; - void * pvPoolMark = m_pPool->poolMark(); + void * pvPoolMark = m_pool.poolMark(); // Make sure we have logged the block we are changing. // Note that the source block will be logged in the removeRange method. @@ -4871,7 +4865,7 @@ RCODE F_Btree::moveToPrev( pui16DstOffsetA = BtOffsetArray( *ppPrevBlock, 0); pucDstEntry = getBlockEnd( *ppPrevBlock); - if( RC_BAD( rc = m_pPool->poolAlloc( m_uiBlockSize, (void **)&pucTempBlk))) + if( RC_BAD( rc = m_pool.poolAlloc( m_uiBlockSize, (void **)&pucTempBlk))) { goto Exit; } @@ -4956,7 +4950,7 @@ RCODE F_Btree::moveToPrev( Exit: - m_pPool->poolReset( pvPoolMark); + m_pool.poolReset( pvPoolMark); return( rc); } @@ -5217,16 +5211,16 @@ RCODE F_Btree::moveToNext( FLMBYTE * pucBuffer = NULL; FLMBYTE * pucTmpBlk = NULL; FLMUINT uiBufferSize = 0; - void * pvPoolMark = m_pPool->poolMark(); + void * pvPoolMark = m_pool.poolMark(); uiBufferSize = m_uiBlockSize * 2; - if( RC_BAD( rc = m_pPool->poolAlloc( uiBufferSize, (void **)&pucBuffer))) + if( RC_BAD( rc = m_pool.poolAlloc( uiBufferSize, (void **)&pucBuffer))) { goto Exit; } - if( RC_BAD( rc = m_pPool->poolAlloc( m_uiBlockSize, (void **)&pucTmpBlk))) + if( RC_BAD( rc = m_pool.poolAlloc( m_uiBlockSize, (void **)&pucTmpBlk))) { goto Exit; } @@ -5357,7 +5351,7 @@ RCODE F_Btree::moveToNext( Exit: - m_pPool->poolReset( pvPoolMark); + m_pool.poolReset( pvPoolMark); return( rc); } @@ -6672,7 +6666,7 @@ RCODE F_Btree::defragmentBlock( FLMBYTE * pucHeap; FLMBYTE * pucBlkEnd; IF_Block * pOldBlock = NULL; - void * pvPoolMark = m_pPool->poolMark(); + void * pvPoolMark = m_pool.poolMark(); f_assert( pBlock->getBytesAvail() != pBlock->getHeapSize()); @@ -6745,7 +6739,7 @@ RCODE F_Btree::defragmentBlock( if( pOldBlock == pBlock) { - if( RC_BAD( rc = m_pPool->poolAlloc( m_uiBlockSize, + if( RC_BAD( rc = m_pool.poolAlloc( m_uiBlockSize, (void **)&pucTempDefragBlk))) { goto Exit; @@ -6871,7 +6865,7 @@ Exit: pOldBlock->Release(); } - m_pPool->poolReset( pvPoolMark); + m_pool.poolReset( pvPoolMark); return( rc); } #endif @@ -7851,7 +7845,7 @@ RCODE F_Btree::replaceOldEntry( FLMUINT uiOldOADataLen = 0; FLMBOOL bRemoveOADataAllowance = FALSE; FLMBYTE * pucTmpBlk = NULL; - void * pvPoolMark = m_pPool->poolMark(); + void * pvPoolMark = m_pool.poolMark(); uiOldEntrySize = actualEntrySize( getEntrySize( m_pStack->pBlock, m_pStack->uiCurOffset, &pucEntry)); @@ -7931,7 +7925,7 @@ RCODE F_Btree::replaceOldEntry( { if( !pucTmpBlk) { - if( RC_BAD( rc = m_pPool->poolAlloc( m_uiBlockSize, (void **)&pucTmpBlk))) + if( RC_BAD( rc = m_pool.poolAlloc( m_uiBlockSize, (void **)&pucTmpBlk))) { goto Exit; } @@ -8153,7 +8147,7 @@ RCODE F_Btree::replaceOldEntry( Exit: - m_pPool->poolReset( pvPoolMark); + m_pool.poolReset( pvPoolMark); return( rc); } diff --git a/ftk/src/ftkini.cpp b/ftk/src/ftkini.cpp index 6d040eb..914aa76 100644 --- a/ftk/src/ftkini.cpp +++ b/ftk/src/ftkini.cpp @@ -48,7 +48,7 @@ public: virtual ~F_IniFile(); - RCODE init( void); + void init( void); RCODE FLMAPI read( const char * pszFileName); @@ -134,7 +134,7 @@ private: return( ucChar == 32 || ucChar == 9 ? TRUE : FALSE); } - IF_Pool * m_pPool; + F_Pool m_pool; IF_FileHdl * m_pFileHdl; char * m_pszFileName; INI_LINE * m_pFirstLine; @@ -155,7 +155,7 @@ F_IniFile::F_IniFile() m_bModified = FALSE; m_pszFileName = NULL; m_pFileHdl = NULL; - m_pPool = NULL; + m_pool.poolInit( 512); } /**************************************************************************** @@ -168,10 +168,7 @@ F_IniFile::~F_IniFile() f_free( &m_pszFileName); } - if( m_pPool) - { - m_pPool->Release(); - } + m_pool.poolFree(); if( m_pFileHdl) { @@ -194,10 +191,7 @@ RCODE FLMAPI FlmAllocIniFile( goto Exit; } - if( RC_BAD( rc = pIniFile->init())) - { - goto Exit; - } + pIniFile->init(); *ppIniFile = pIniFile; pIniFile = NULL; @@ -215,29 +209,13 @@ Exit: /**************************************************************************** Desc: ****************************************************************************/ -RCODE F_IniFile::init() +void F_IniFile::init( void) { - RCODE rc = NE_FLM_OK; - - if( m_pPool) - { - m_pPool->Release(); - m_pPool = NULL; - } - - if( RC_BAD( rc = FlmAllocPool( &m_pPool))) - { - goto Exit; - } - - m_pPool->poolInit( 512); + m_pool.poolFree(); + m_pool.poolInit( 512); m_pFirstLine = NULL; m_pLastLine = NULL; m_bReady = TRUE; - -Exit: - - return( rc); } /**************************************************************************** @@ -929,7 +907,7 @@ Comment: if( pszNameStart || pszCommentStart) { - if( RC_BAD( rc = m_pPool->poolCalloc( sizeof( INI_LINE), + if( RC_BAD( rc = m_pool.poolCalloc( sizeof( INI_LINE), (void **)&pLine))) { goto Exit; @@ -938,7 +916,7 @@ Comment: if( pszNameStart) { uiStrLen = pszNameEnd - pszNameStart + 1; - if( RC_BAD( rc = m_pPool->poolAlloc( uiStrLen + 1, + if( RC_BAD( rc = m_pool.poolAlloc( uiStrLen + 1, (void **)&pLine->pszParamName))) { goto Exit; @@ -951,7 +929,7 @@ Comment: if( pszValStart) { uiStrLen = pszValEnd - pszValStart + 1; - if( RC_BAD( rc = m_pPool->poolAlloc( uiStrLen + 1, + if( RC_BAD( rc = m_pool.poolAlloc( uiStrLen + 1, (void **)&pLine->pszParamValue))) { goto Exit; @@ -964,7 +942,7 @@ Comment: if (pszCommentStart) { uiStrLen = uiNumBytes-(pszCommentStart-pszBuf); - if (RC_BAD( rc = m_pPool->poolAlloc( uiStrLen + 1, + if (RC_BAD( rc = m_pool.poolAlloc( uiStrLen + 1, (void **)&pLine->pszComment))) { goto Exit; @@ -1030,7 +1008,7 @@ RCODE F_IniFile::setParamCommon( RCODE rc = NE_FLM_OK; INI_LINE * pLine; - if( RC_BAD( rc = m_pPool->poolCalloc( + if( RC_BAD( rc = m_pool.poolCalloc( sizeof( INI_LINE), (void **)&pLine))) { goto Exit; @@ -1049,7 +1027,7 @@ RCODE F_IniFile::setParamCommon( m_pFirstLine = pLine; } - if( RC_BAD( rc = m_pPool->poolAlloc( f_strlen(pszParamName)+1, + if( RC_BAD( rc = m_pool.poolAlloc( f_strlen(pszParamName)+1, (void **)&pLine->pszParamName))) { goto Exit; @@ -1162,7 +1140,7 @@ RCODE F_IniFile::toAscii( f_sprintf( szTemp, "%*.*lu", sizeof(szTemp), sizeof(szTemp), puiVal); - if( RC_BAD( rc = m_pPool->poolAlloc( f_strlen( szTemp), + if( RC_BAD( rc = m_pool.poolAlloc( f_strlen( szTemp), (void **)ppszParamValue))) { goto Exit; @@ -1186,7 +1164,7 @@ RCODE F_IniFile::toAscii( { RCODE rc = NE_FLM_OK; - if( RC_BAD( rc = m_pPool->poolAlloc( 6, (void **)ppszParamValue))) + if( RC_BAD( rc = m_pool.poolAlloc( 6, (void **)ppszParamValue))) { goto Exit; } @@ -1217,7 +1195,7 @@ RCODE F_IniFile::toAscii( { RCODE rc = NE_FLM_OK; - if( RC_BAD( rc = m_pPool->poolAlloc( f_strlen( pszVal), + if( RC_BAD( rc = m_pool.poolAlloc( f_strlen( pszVal), (void **)ppszParamValue))) { goto Exit; diff --git a/ftk/src/ftkmem.cpp b/ftk/src/ftkmem.cpp index 87bee51..7cdf7ef 100644 --- a/ftk/src/ftkmem.cpp +++ b/ftk/src/ftkmem.cpp @@ -125,6 +125,7 @@ Desc: #error Platform not supported #endif +#ifdef FLM_DEBUG static FLMBOOL gv_bMemTrackingInitialized = FALSE; static FLMUINT gv_uiInitThreadId = 0; static F_MUTEX gv_hMemTrackingMutex = F_MUTEX_NULL; @@ -136,6 +137,8 @@ static FLMUINT gv_uiNextMemPtrSlotToUse = 0; static FLMUINT gv_uiAllocCnt = 0; static FLMBOOL gv_bStackWalk = FALSE; static FLMBOOL gv_bLogLeaks = FALSE; +#endif + #ifdef FLM_WIN static HANDLE gv_hMemProcess; #endif @@ -150,6 +153,7 @@ static FLMBOOL gv_bLogLeaks = FALSE; #define F_PICKET_FENCE_SIZE 0 #endif +#ifdef FLM_DEBUG FSTATIC FLMBOOL initMemTracking( void); FSTATIC void saveMemTrackingInfo( @@ -162,6 +166,7 @@ FSTATIC void freeMemTrackingInfo( FLMBOOL bMutexAlreadyLocked, FLMUINT uiId, FLMUINT * puiStack); +#endif /**************************************************************************** Desc: @@ -626,142 +631,6 @@ private: IF_FixedAlloc ** m_ppAllocators; }; -/**************************************************************************** -Desc: This class is used to do pool memory allocations. -****************************************************************************/ -class F_Pool : public IF_Pool -{ -public: - - typedef struct PoolMemoryBlock - { - PoolMemoryBlock * pPrevBlock; - FLMUINT uiBlockSize; - FLMUINT uiFreeOffset; - FLMUINT uiFreeSize; - } MBLK; - - typedef struct - { - FLMUINT uiAllocBytes; - FLMUINT uiCount; - } POOL_STATS; - - F_Pool() - { - m_uiBytesAllocated = 0; - m_pLastBlock = NULL; - m_pPoolStats = NULL; - m_uiBlockSize = 0; - } - - virtual ~F_Pool(); - - FINLINE void FLMAPI poolInit( - FLMUINT uiBlockSize) - { - m_uiBlockSize = uiBlockSize; - } - - void smartPoolInit( - POOL_STATS * pPoolStats); - - RCODE FLMAPI poolAlloc( - FLMUINT uiSize, - void ** ppvPtr); - - RCODE FLMAPI poolCalloc( - FLMUINT uiSize, - void ** ppvPtr); - - void FLMAPI poolFree( void); - - void FLMAPI poolReset( - void * pvMark, - FLMBOOL bReduceFirstBlock = FALSE); - - FINLINE void * FLMAPI poolMark( void) - { - return (void *)(m_pLastBlock - ? (FLMBYTE *)m_pLastBlock + m_pLastBlock->uiFreeOffset - : NULL); - } - - FINLINE FLMUINT FLMAPI getBlockSize( void) - { - return( m_uiBlockSize); - } - - FINLINE FLMUINT FLMAPI getBytesAllocated( void) - { - return( m_uiBytesAllocated); - } - -private: - - FINLINE void updateSmartPoolStats( void) - { - if (m_uiBytesAllocated) - { - if( (m_pPoolStats->uiAllocBytes + m_uiBytesAllocated) >= 0xFFFF0000) - { - m_pPoolStats->uiAllocBytes = - (m_pPoolStats->uiAllocBytes / m_pPoolStats->uiCount) * 100; - m_pPoolStats->uiCount = 100; - } - else - { - m_pPoolStats->uiAllocBytes += m_uiBytesAllocated; - m_pPoolStats->uiCount++; - } - m_uiBytesAllocated = 0; - } - } - - FINLINE void setInitialSmartPoolBlkSize( void) - { - // Determine starting block size: - // 1) average of bytes allocated / # of frees/resets (average size needed) - // 2) add 10% - to minimize extra allocs - - m_uiBlockSize = (m_pPoolStats->uiAllocBytes / m_pPoolStats->uiCount); - m_uiBlockSize += (m_uiBlockSize / 10); - - if (m_uiBlockSize < 512) - { - m_uiBlockSize = 512; - } - } - - void freeToMark( - void * pvMark); - - PoolMemoryBlock * m_pLastBlock; - FLMUINT m_uiBlockSize; - FLMUINT m_uiBytesAllocated; - POOL_STATS * m_pPoolStats; -}; - -/************************************************************************ -Desc: -*************************************************************************/ -RCODE FLMAPI FlmAllocPool( - IF_Pool ** ppPool, - FLMUINT uiBlockSize) -{ - if( (*ppPool = f_new F_Pool) == NULL) - { - return( RC_SET( NE_FLM_MEM)); - } - - if( uiBlockSize) - { - (*ppPool)->poolInit( uiBlockSize); - } - - return( NE_FLM_OK); -} - /**************************************************************************** Desc: ****************************************************************************/ @@ -1674,11 +1543,7 @@ RCODE FLMAPI f_reallocImp( if (!(*ppvPtr)) { -#ifdef FLM_DEBUG rc = f_allocImp( uiSize, ppvPtr, FALSE, pszFileName, iLineNumber); -#else - rc = f_allocImp( uiSize, ppvPtr); -#endif goto Exit; } @@ -1766,11 +1631,7 @@ RCODE FLMAPI f_recallocImp( if (!(*ppvPtr)) { -#ifdef FLM_DEBUG rc = f_callocImp( uiSize, ppvPtr, pszFileName, iLineNumber); -#else - rc = f_callocImp( uiSize, ppvPtr); -#endif goto Exit; } @@ -4772,15 +4633,7 @@ void * F_Object::operator new( { void * pvReturnPtr = NULL; -#ifdef FLM_DEBUG f_allocImp( uiSize, &pvReturnPtr, TRUE, pszFile, iLine); -#else - F_UNREFERENCED_PARM( pszFile); - F_UNREFERENCED_PARM( iLine); - - f_allocImp( uiSize, &pvReturnPtr); -#endif - return( pvReturnPtr); } @@ -4794,15 +4647,7 @@ void * F_Object::operator new[]( { void * pvReturnPtr = NULL; -#ifdef FLM_DEBUG f_allocImp( uiSize, &pvReturnPtr, TRUE, pszFile, iLine); -#else - F_UNREFERENCED_PARM( pszFile); - F_UNREFERENCED_PARM( iLine); - - f_allocImp( uiSize, &pvReturnPtr); -#endif - return( pvReturnPtr); } diff --git a/ftk/src/ftkntab.cpp b/ftk/src/ftkntab.cpp index e217cac..51661ca 100644 --- a/ftk/src/ftkntab.cpp +++ b/ftk/src/ftkntab.cpp @@ -72,8 +72,6 @@ public: virtual ~F_NameTable(); - RCODE FLMAPI setupNameTable( void); - void FLMAPI clearTable( FLMUINT uiPoolBlkSize); @@ -192,7 +190,7 @@ private: FLMUNICODE * puzNamespace, FLMUINT uiInsertPos); - IF_Pool * m_pPool; + F_Pool m_pool; FLMUINT m_uiMemoryAllocated; FLM_TAG_INFO ** m_ppSortedByTagTypeAndName; FLM_TAG_INFO ** m_ppSortedByTagTypeAndNum; @@ -210,7 +208,7 @@ Desc: ****************************************************************************/ F_NameTable::F_NameTable() { - m_pPool = NULL; + m_pool.poolInit( 1024); m_uiMemoryAllocated = 0; m_ppSortedByTagTypeAndName = NULL; m_ppSortedByTagTypeAndNum = NULL; @@ -229,49 +227,23 @@ Desc: F_NameTable::~F_NameTable() { clearTable( 0); - - if( m_pPool) - { - m_pPool->Release(); - } - if( m_hRefMutex) { f_mutexDestroy( &m_hRefMutex); } } -/**************************************************************************** -Desc: Setup name table. This routine should be called immediately after - the object is allocated. -****************************************************************************/ -RCODE FLMAPI F_NameTable::setupNameTable( void) -{ - RCODE rc = NE_FLM_OK; - - if( RC_BAD( rc = FlmAllocPool( &m_pPool))) - { - goto Exit; - } - - m_pPool->poolInit( 1024); - -Exit: - - return( rc); -} - /**************************************************************************** Desc: Free everything in the table ****************************************************************************/ void FLMAPI F_NameTable::clearTable( FLMUINT uiPoolBlkSize) { - m_pPool->poolFree(); + m_pool.poolFree(); if (uiPoolBlkSize) { - m_pPool->poolInit( uiPoolBlkSize); + m_pool.poolInit( uiPoolBlkSize); } m_uiMemoryAllocated = 0; @@ -1153,9 +1125,9 @@ RCODE F_NameTable::allocTag( // Create a new tag info structure. - pvMark = m_pPool->poolMark(); + pvMark = m_pool.poolMark(); uiSaveMemoryAllocated = m_uiMemoryAllocated; - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FLM_TAG_INFO), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FLM_TAG_INFO), (void **)&pTagInfo))) { goto Exit; @@ -1167,7 +1139,7 @@ RCODE F_NameTable::allocTag( if (puzTagName) { uiNameSize = (f_unilen( puzTagName) + 1) * sizeof( FLMUNICODE); - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameSize, (void **)&pTagInfo->puzTagName))) { goto Exit; @@ -1178,7 +1150,7 @@ RCODE F_NameTable::allocTag( else { uiNameSize = (f_strlen( pszTagName) + 1) * sizeof( FLMUNICODE); - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameSize, (void **)&pTagInfo->puzTagName))) { goto Exit; @@ -1207,7 +1179,7 @@ RCODE F_NameTable::allocTag( &uiNamespaceInsertPos)) == NULL) { uiNameSize = (f_unilen( puzNamespace) + 1) * sizeof( FLMUNICODE); - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameSize, (void **)&puzTblNamespace))) { goto Exit; @@ -1225,7 +1197,7 @@ RCODE F_NameTable::allocTag( // allocated if the pool is reset at Exit due to a later // error. - pvMark = m_pPool->poolMark(); + pvMark = m_pool.poolMark(); uiSaveMemoryAllocated = m_uiMemoryAllocated; } @@ -1236,7 +1208,7 @@ Exit: if (RC_BAD( rc)) { - m_pPool->poolReset( pvMark); + m_pool.poolReset( pvMark); m_uiMemoryAllocated = uiSaveMemoryAllocated; pTagInfo = NULL; } diff --git a/ftk/src/ftkstrm.cpp b/ftk/src/ftkstrm.cpp index 27bf593..1df7247 100644 --- a/ftk/src/ftkstrm.cpp +++ b/ftk/src/ftkstrm.cpp @@ -231,7 +231,7 @@ public: F_CompressingOStream() { - m_pPool = NULL; + m_pool.poolInit( 64 * 1024); m_pOStream = NULL; m_ppHashTbl = NULL; } @@ -265,7 +265,7 @@ private: FLMUINT16 ui16CurrentCode, FLMBYTE ucChar); - IF_Pool * m_pPool; + F_Pool m_pool; IF_OStream * m_pOStream; LZWODictItem ** m_ppHashTbl; FLMUINT m_uiHashTblSize; @@ -2378,15 +2378,6 @@ RCODE FLMAPI F_CompressingOStream::open( goto Exit; } - // Create a pool for temporary allocations - - if( RC_BAD( rc = FlmAllocPool( &m_pPool))) - { - goto Exit; - } - - m_pPool->poolInit( 64 * 1024); - f_memset( m_ppHashTbl, 0, sizeof( LZWODictItem *) * m_uiHashTblSize); // Output a magic number so the stream can be identified @@ -2508,7 +2499,7 @@ RCODE FLMAPI F_CompressingOStream::write( if( m_ui16FreeCode < LZW_MAX_CODE) { uiBucket = getHashBucket( m_ui16CurrentCode, *pucBuffer); - if( RC_BAD( rc = m_pPool->poolAlloc( + if( RC_BAD( rc = m_pool.poolAlloc( sizeof( LZWODictItem), (void **)&pDictItem))) { goto Exit; @@ -2583,7 +2574,7 @@ RCODE FLMAPI F_CompressingOStream::write( // Reset the dictionary - m_pPool->poolReset( NULL); + m_pool.poolReset( NULL); f_memset( m_ppHashTbl, 0, sizeof( LZWODictItem *) * m_uiHashTblSize); m_ui16FreeCode = LZW_START_CODE; } @@ -2671,11 +2662,7 @@ RCODE FLMAPI F_CompressingOStream::close( void) m_uiHashTblSize = 0; } - if( m_pPool) - { - m_pPool->Release(); - m_pPool = NULL; - } + m_pool.poolFree(); return( rc); } diff --git a/ftk/src/ftksys.h b/ftk/src/ftksys.h index bc38cd7..b4554fc 100644 --- a/ftk/src/ftksys.h +++ b/ftk/src/ftksys.h @@ -477,229 +477,6 @@ friend class F_IOBufferMgr; }; - /**************************************************************************** - Desc: - *****************************************************************************/ - class F_DynaBuf : public IF_DynaBuf - { - public: - - F_DynaBuf( - FLMBYTE * pucBuffer, - FLMUINT uiBufferSize) - { - m_pucBuffer = pucBuffer; - m_uiBufferSize = uiBufferSize; - m_uiOffset = 0; - m_bAllocatedBuffer = FALSE; - } - - virtual ~F_DynaBuf() - { - if( m_bAllocatedBuffer) - { - f_free( &m_pucBuffer); - } - } - - FINLINE void FLMAPI truncateData( - FLMUINT uiSize) - { - if( uiSize < m_uiOffset) - { - m_uiOffset = uiSize; - } - } - - FINLINE RCODE FLMAPI allocSpace( - FLMUINT uiSize, - void ** ppvPtr) - { - RCODE rc = NE_FLM_OK; - - if( m_uiOffset + uiSize >= m_uiBufferSize) - { - if( RC_BAD( rc = resizeBuffer( m_uiOffset + uiSize + 512))) - { - goto Exit; - } - } - - *ppvPtr = &m_pucBuffer[ m_uiOffset]; - m_uiOffset += uiSize; - - Exit: - - return( rc); - } - - FINLINE RCODE FLMAPI appendData( - const void * pvData, - FLMUINT uiSize) - { - RCODE rc = NE_FLM_OK; - void * pvTmp; - - if( RC_BAD( rc = allocSpace( uiSize, &pvTmp))) - { - goto Exit; - } - - if( uiSize == 1) - { - *((FLMBYTE *)pvTmp) = *((FLMBYTE *)pvData); - } - else - { - f_memcpy( pvTmp, pvData, uiSize); - } - - Exit: - - return( rc); - } - - FINLINE RCODE FLMAPI appendByte( - FLMBYTE ucChar) - { - RCODE rc = NE_FLM_OK; - FLMBYTE * pucTmp; - - if( RC_BAD( rc = allocSpace( 1, (void **)&pucTmp))) - { - goto Exit; - } - - *pucTmp = ucChar; - - Exit: - - return( rc); - } - - FINLINE RCODE FLMAPI appendUniChar( - FLMUNICODE uChar) - { - RCODE rc = NE_FLM_OK; - FLMUNICODE * puTmp; - - if( RC_BAD( rc = allocSpace( sizeof( FLMUNICODE), (void **)&puTmp))) - { - goto Exit; - } - - *puTmp = uChar; - - Exit: - - return( rc); - } - - FINLINE FLMBYTE * FLMAPI getBufferPtr( void) - { - return( m_pucBuffer); - } - - FINLINE FLMUNICODE * FLMAPI getUnicodePtr( void) - { - if( m_uiOffset >= sizeof( FLMUNICODE)) - { - return( (FLMUNICODE *)m_pucBuffer); - } - - return( NULL); - } - - FINLINE FLMUINT FLMAPI getUnicodeLength( void) - { - if( m_uiOffset <= sizeof( FLMUNICODE)) - { - return( 0); - } - - return( (m_uiOffset >> 1) - 1); - } - - FINLINE FLMUINT FLMAPI getDataLength( void) - { - return( m_uiOffset); - } - - FINLINE RCODE FLMAPI copyFromBuffer( - IF_DynaBuf * pSource) - { - RCODE rc = NE_FLM_OK; - - if( RC_BAD( rc = resizeBuffer( - ((F_DynaBuf *)pSource)->m_uiBufferSize))) - { - goto Exit; - } - - if( (m_uiOffset = ((F_DynaBuf *)pSource)->m_uiOffset) != 0) - { - f_memcpy( m_pucBuffer, ((F_DynaBuf *)pSource)->m_pucBuffer, - ((F_DynaBuf *)pSource)->m_uiOffset); - } - - Exit: - - return( rc); - } - - private: - - FINLINE RCODE resizeBuffer( - FLMUINT uiNewSize) - { - RCODE rc = NE_FLM_OK; - - if( !m_bAllocatedBuffer) - { - if( uiNewSize > m_uiBufferSize) - { - FLMBYTE * pucOriginalBuf = m_pucBuffer; - - if( RC_BAD( rc = f_alloc( uiNewSize, &m_pucBuffer))) - { - m_pucBuffer = pucOriginalBuf; - goto Exit; - } - - m_bAllocatedBuffer = TRUE; - - if( m_uiOffset) - { - f_memcpy( m_pucBuffer, pucOriginalBuf, m_uiOffset); - } - } - } - else - { - if( RC_BAD( rc = f_realloc( uiNewSize, &m_pucBuffer))) - { - goto Exit; - } - - if( uiNewSize < m_uiOffset) - { - m_uiOffset = uiNewSize; - } - } - - m_uiBufferSize = uiNewSize; - - Exit: - - return( rc); - } - - FLMBOOL m_bAllocatedBuffer; - FLMBYTE * m_pucBuffer; - FLMUINT m_uiBufferSize; - FLMUINT m_uiOffset; - }; - /*************************************************************************** Desc: ***************************************************************************/ diff --git a/ftk/src/ftktext.cpp b/ftk/src/ftktext.cpp index 9d10519..eeb07cd 100644 --- a/ftk/src/ftktext.cpp +++ b/ftk/src/ftktext.cpp @@ -5195,7 +5195,7 @@ RCODE FLMAPI f_formatUTF8Text( IF_PosIStream * pIStream, FLMBOOL bAllowEscapes, FLMUINT uiCompareRules, - IF_DynaBuf * pDynaBuf) + F_DynaBuf * pDynaBuf) { RCODE rc = NE_FLM_OK; FLMUINT uiFirstSpaceCharPos = FLM_MAX_UINT; diff --git a/ftk/src/ftkthrd.cpp b/ftk/src/ftkthrd.cpp index 575bcf0..90222e7 100644 --- a/ftk/src/ftkthrd.cpp +++ b/ftk/src/ftkthrd.cpp @@ -87,7 +87,7 @@ public: FLMUINT * puiThreadId); RCODE FLMAPI getThreadInfo( - IF_Pool * pPool, + F_Pool * pPool, F_THREAD_INFO ** ppThreadInfo, FLMUINT * puiNumThreads); @@ -265,17 +265,14 @@ public: F_ThreadInfo() { - m_pPool = NULL; + m_pool.poolInit( 512); m_uiNumThreads = 0; m_pThreadInfoArray = NULL; } virtual ~F_ThreadInfo() { - if( m_pPool) - { - m_pPool->Release(); - } + m_pool.poolFree(); } FLMUINT FLMAPI getNumThreads( void) @@ -314,7 +311,7 @@ public: } } - IF_Pool * m_pPool; + F_Pool m_pool; F_THREAD_INFO * m_pThreadInfoArray; FLMUINT m_uiNumThreads; }; @@ -1029,7 +1026,7 @@ Desc: Allocates an array of F_THREAD_INFO structures and populates them with information about the threads being managed by this object. ****************************************************************************/ RCODE FLMAPI F_ThreadMgr::getThreadInfo( - IF_Pool * pPool, + F_Pool * pPool, F_THREAD_INFO ** ppThreadInfo, FLMUINT * puiNumThreads) { @@ -1394,13 +1391,8 @@ RCODE FLMAPI FlmGetThreadInfo( goto Exit; } - if( RC_BAD( rc = FlmAllocPool( &pThreadInfo->m_pPool))) - { - goto Exit; - } - if( RC_BAD( rc = f_getThreadMgrPtr()->getThreadInfo( - pThreadInfo->m_pPool, + &pThreadInfo->m_pool, &pThreadInfo->m_pThreadInfoArray, &pThreadInfo->m_uiNumThreads))) { diff --git a/xflaim/src/Makefile.am b/xflaim/src/Makefile.am index 7ec33de..5b9b2ee 100644 --- a/xflaim/src/Makefile.am +++ b/xflaim/src/Makefile.am @@ -109,7 +109,6 @@ libxflaim_la_SOURCES = \ flerror.cpp \ flerrstr.cpp \ flfixed.cpp \ - flfixed.h \ flgethdr.cpp \ flindex.cpp \ flkeyret.cpp \ diff --git a/xflaim/src/btreeinfo.cpp b/xflaim/src/btreeinfo.cpp index dbb92c9..20b2adf 100644 --- a/xflaim/src/btreeinfo.cpp +++ b/xflaim/src/btreeinfo.cpp @@ -344,7 +344,7 @@ RCODE F_BTreeInfo::collectBTreeInfo( // Allocate a name buffer. uiNameBufSize = f_strlen( pszName) + 1; - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameBufSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameBufSize, (void **)(&pBTreeInfo->pszLfName)))) { goto Exit; @@ -357,7 +357,7 @@ RCODE F_BTreeInfo::collectBTreeInfo( // Allocate a name buffer. uiNameBufSize++; - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameBufSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameBufSize, (void **)(&pBTreeInfo->pszLfName)))) { goto Exit; @@ -825,11 +825,6 @@ RCODE FLMAPI F_DbSystem::createIFBTreeInfo( goto Exit; } - if( RC_BAD( rc = pBTreeInfo->setup())) - { - goto Exit; - } - *ppBTreeInfo = pBTreeInfo; pBTreeInfo = NULL; diff --git a/xflaim/src/fdict.cpp b/xflaim/src/fdict.cpp index ce7ef47..d756675 100644 --- a/xflaim/src/fdict.cpp +++ b/xflaim/src/fdict.cpp @@ -48,17 +48,17 @@ FSTATIC void fdictRemoveFromIcdChain( ICD * pIcd); FSTATIC RCODE fdictCopyCollection( - IF_Pool * pDictPool, + F_Pool * pDictPool, F_COLLECTION ** ppDestCollection, F_COLLECTION * pSrcCollection); FSTATIC RCODE fdictCopyPrefix( - IF_Pool * pDictPool, + F_Pool * pDictPool, F_PREFIX ** ppDestPrefix, F_PREFIX * pSrcPrefix); FSTATIC RCODE fdictCopyEncDef( - IF_Pool * pDictPool, + F_Pool * pDictPool, F_ENCDEF ** ppDestEncDef, F_ENCDEF * pSrcEncDef); @@ -94,7 +94,7 @@ F_Dict::F_Dict() m_pPrev = NULL; m_pDatabase = NULL; m_uiDictSeq = 0; - m_pDictPool = NULL; + m_dictPool.poolInit( 1024); m_pElementDefTbl = NULL; m_uiLowestElementNum = 0; @@ -162,30 +162,6 @@ Desc: F_Dict::~F_Dict() { resetDict(); - - if( m_pDictPool) - { - m_pDictPool->Release(); - } -} - -/*************************************************************************** -Desc: -***************************************************************************/ -RCODE F_Dict::setup( void) -{ - RCODE rc = NE_XFLM_OK; - - if( RC_BAD( rc = FlmAllocPool( &m_pDictPool))) - { - goto Exit; - } - - m_pDictPool->poolInit( 1024); - -Exit: - - return( rc); } /*************************************************************************** @@ -265,11 +241,8 @@ void F_Dict::resetDict( void) m_pDataCollection = NULL; m_pMaintCollection = NULL; - if( m_pDictPool) - { - m_pDictPool->poolFree(); - m_pDictPool->poolInit( 1024); - } + m_dictPool.poolFree(); + m_dictPool.poolInit( 1024); if (m_pNameTable) { @@ -288,10 +261,7 @@ RCODE F_Dict::allocNameTable( void) { return( RC_SET( NE_XFLM_MEM)); } - else - { - return( m_pNameTable->setupNameTable()); - } + return( NE_XFLM_OK); } /*************************************************************************** @@ -2292,7 +2262,7 @@ RCODE F_Dict::copyIXD( // Allocate the IXD structure - if (RC_BAD( rc = m_pDictPool->poolAlloc( sizeof( IXD), (void **)&pDestIxd))) + if (RC_BAD( rc = m_dictPool.poolAlloc( sizeof( IXD), (void **)&pDestIxd))) { goto Exit; } @@ -2315,7 +2285,7 @@ RCODE F_Dict::copyIXD( pSrcIcd = pSrcIxd->pIcdTree; while (pSrcIcd) { - if (RC_BAD( rc = m_pDictPool->poolAlloc( sizeof( ICD), + if (RC_BAD( rc = m_dictPool.poolAlloc( sizeof( ICD), (void **)&pDestIcd))) { goto Exit; @@ -2530,7 +2500,7 @@ Exit: Desc: Copies a collection ****************************************************************************/ FSTATIC RCODE fdictCopyCollection( - IF_Pool * pDictPool, + F_Pool * pDictPool, F_COLLECTION ** ppDestCollection, F_COLLECTION * pSrcCollection) { @@ -2559,7 +2529,7 @@ Exit: Desc: Copies a prefix ****************************************************************************/ FSTATIC RCODE fdictCopyPrefix( - IF_Pool * pDictPool, + F_Pool * pDictPool, F_PREFIX ** ppDestPrefix, F_PREFIX * pSrcPrefix) { @@ -2602,7 +2572,7 @@ Exit: Desc: Copies an encryption def (F_ENCDEF) ****************************************************************************/ FSTATIC RCODE fdictCopyEncDef( - IF_Pool * pDictPool, + F_Pool * pDictPool, F_ENCDEF ** ppDestEncDef, F_ENCDEF * pSrcEncDef) { @@ -2879,21 +2849,21 @@ RCODE F_Dict::cloneDict( // Copy the pre-defined collections - if (RC_BAD( rc = fdictCopyCollection( m_pDictPool, + if (RC_BAD( rc = fdictCopyCollection( &m_dictPool, &m_pDictCollection, pSrcDict->m_pDictCollection))) { goto Exit; } - if (RC_BAD( rc = fdictCopyCollection( m_pDictPool, + if (RC_BAD( rc = fdictCopyCollection( &m_dictPool, &m_pDataCollection, pSrcDict->m_pDataCollection))) { goto Exit; } - if (RC_BAD( rc = fdictCopyCollection( m_pDictPool, + if (RC_BAD( rc = fdictCopyCollection( &m_dictPool, &m_pMaintCollection, pSrcDict->m_pMaintCollection))) { @@ -2917,7 +2887,7 @@ RCODE F_Dict::cloneDict( for (uiLoop = 0; uiLoop < uiCount; uiLoop++) { - if (RC_BAD( rc = fdictCopyCollection( m_pDictPool, + if (RC_BAD( rc = fdictCopyCollection( &m_dictPool, &m_ppCollectionTbl [uiLoop], pSrcDict->m_ppCollectionTbl [uiLoop]))) { @@ -2943,7 +2913,7 @@ RCODE F_Dict::cloneDict( for (uiLoop = 0; uiLoop < uiCount; uiLoop++) { - if (RC_BAD( rc = fdictCopyPrefix( m_pDictPool, + if (RC_BAD( rc = fdictCopyPrefix( &m_dictPool, &m_ppPrefixTbl [uiLoop], pSrcDict->m_ppPrefixTbl [uiLoop]))) { @@ -2969,7 +2939,7 @@ RCODE F_Dict::cloneDict( for (uiLoop = 0; uiLoop < uiCount; uiLoop++) { - if (RC_BAD( rc = fdictCopyEncDef( m_pDictPool, + if (RC_BAD( rc = fdictCopyEncDef( &m_dictPool, &m_ppEncDefTbl [uiLoop], pSrcDict->m_ppEncDefTbl [uiLoop]))) { @@ -6291,7 +6261,7 @@ RCODE F_Dict::updateIndexDef( ) { RCODE rc = NE_XFLM_OK; - void * pvMark = m_pDictPool->poolMark(); + void * pvMark = m_dictPool.poolMark(); FLMUNICODE * puzIndexName = NULL; F_DOMNode * pNode = NULL; FLMUINT uiElementId; @@ -6414,7 +6384,7 @@ RCODE F_Dict::updateIndexDef( // Allocate a new IXD - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( IXD), (void **)&pIxd))) + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( IXD), (void **)&pIxd))) { goto Exit; } @@ -6470,7 +6440,7 @@ RCODE F_Dict::updateIndexDef( // Allocate an ICD and link in - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( ICD), + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( ICD), (void **)&pIcd))) { goto Exit; @@ -6723,7 +6693,7 @@ Get_Sibling: // Discard the new IXD, it is not needed. - m_pDictPool->poolReset( pvMark); + m_dictPool.poolReset( pvMark); } else { @@ -6835,7 +6805,7 @@ Exit: if (RC_BAD( rc)) { - m_pDictPool->poolReset( pvMark); + m_dictPool.poolReset( pvMark); } return( rc); @@ -7072,7 +7042,7 @@ RCODE F_Dict::updateCollectionDef( // Allocate a new collection - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( F_COLLECTION), + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( F_COLLECTION), (void **)&pCollection))) { goto Exit; @@ -7236,7 +7206,7 @@ RCODE F_Db::getPrefixDef( } uiBufferSize = sizeof( FLMUNICODE) * (uiPrefixLen + 1); - if( RC_BAD( rc = pDict->m_pDictPool->poolAlloc( uiBufferSize, + if( RC_BAD( rc = pDict->m_dictPool.poolAlloc( uiBufferSize, (void **)ppuzPrefixName))) { goto Exit; @@ -7338,7 +7308,7 @@ RCODE F_Dict::updatePrefixDef( F_PREFIX * pOldPrefix = NULL; FLMUNICODE * puzPrefixName = NULL; FLMUINT uiTmp; - void * pvMark = m_pDictPool->poolMark(); + void * pvMark = m_dictPool.poolMark(); if (bOpeningDict) { @@ -7384,7 +7354,7 @@ RCODE F_Dict::updatePrefixDef( // Allocate a new prefix - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( F_PREFIX), + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( F_PREFIX), (void **)&pPrefix))) { goto Exit; @@ -7444,7 +7414,7 @@ Exit: { if( pvMark) { - m_pDictPool->poolReset( pvMark); + m_dictPool.poolReset( pvMark); } } @@ -7545,7 +7515,7 @@ RCODE F_Db::getEncDefDef( } uiBufferSize = sizeof( FLMUNICODE) * (uiEncDefLen + 1); - if( RC_BAD( rc = pDict->m_pDictPool->poolAlloc( uiBufferSize, + if( RC_BAD( rc = pDict->m_dictPool.poolAlloc( uiBufferSize, (void **)ppuzEncDefName))) { goto Exit; @@ -7909,7 +7879,7 @@ RCODE F_Dict::updateEncDef( F_ENCDEF * pOldEncDef; FLMUNICODE * puzEncDefName = NULL; FLMUINT uiTmp; - void * pvMark = m_pDictPool->poolMark(); + void * pvMark = m_dictPool.poolMark(); F_CCS * pCcs = NULL; FLMUINT uiEncKeySize = 0; @@ -7963,7 +7933,7 @@ RCODE F_Dict::updateEncDef( { // Allocate a new encdef - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( F_ENCDEF), + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( F_ENCDEF), (void **)&pEncDef))) { goto Exit; @@ -8031,7 +8001,7 @@ Exit: { if( pvMark) { - m_pDictPool->poolReset( pvMark); + m_dictPool.poolReset( pvMark); } } @@ -8224,7 +8194,7 @@ RCODE F_Dict::setupPredefined( // Allocate memory for the predefined collections - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( F_COLLECTION) * 3, + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( F_COLLECTION) * 3, (void **)&m_pDictCollection))) { goto Exit; @@ -8245,7 +8215,7 @@ RCODE F_Dict::setupPredefined( // Allocate IXDs for the predefined indexes. - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( IXD) * 2, + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( IXD) * 2, (void **)&m_pNameIndex))) { goto Exit; @@ -8298,7 +8268,7 @@ RCODE F_Dict::setupPredefined( // Set up the ICDs for the name index - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( ICD) * 4, + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( ICD) * 4, (void **)&m_pNameIndex->pIcdTree))) { goto Exit; @@ -8393,7 +8363,7 @@ RCODE F_Dict::setupPredefined( // Set up the ICDs for the number index - if (RC_BAD( rc = m_pDictPool->poolCalloc( sizeof( ICD) * 2, + if (RC_BAD( rc = m_dictPool.poolCalloc( sizeof( ICD) * 2, (void **)&m_pNumberIndex->pIcdTree))) { goto Exit; @@ -9735,11 +9705,6 @@ RCODE F_Db::dictOpen( void) goto Exit; } - if( RC_BAD( rc = m_pDict->setup())) - { - goto Exit; - } - // Allocate the name table if (RC_BAD( rc = m_pDict->allocNameTable())) diff --git a/xflaim/src/fdict.h b/xflaim/src/fdict.h index 72bb635..5846cc7 100644 --- a/xflaim/src/fdict.h +++ b/xflaim/src/fdict.h @@ -411,8 +411,6 @@ public: ~F_Dict(); - RCODE setup( void); - void resetDict( void); RCODE getElement( @@ -925,7 +923,7 @@ private: // to a database. FLMUINT m_uiDictSeq; // This is the sequence number of the // dictionary - IF_Pool * m_pDictPool; // Pool for all allocations except tables. + F_Pool m_dictPool; // Pool for all allocations except tables. // Fixed element definition table - used for elements whose tag numbers // are less than or equal to FLM_HIGH_FIXED_ELEMENT_NUM diff --git a/xflaim/src/fdom.cpp b/xflaim/src/fdom.cpp index a23b3e2..5b01530 100644 --- a/xflaim/src/fdom.cpp +++ b/xflaim/src/fdom.cpp @@ -5540,13 +5540,13 @@ Desc: *****************************************************************************/ RCODE FLMAPI F_DOMNode::getUnicode( IF_Db * ifpDb, - IF_DynaBuf * pBuffer) + F_DynaBuf * pBuffer) { RCODE rc = NE_XFLM_OK; F_Db * pDb = (F_Db *)ifpDb; FLMUINT uiBufSize; FLMUINT uiChars; - void * pvBuffer; + void * pvBuffer = NULL; FLMBOOL bStartedTrans = FALSE; if( RC_BAD( rc = pDb->checkTransaction( @@ -5810,12 +5810,12 @@ Desc: *****************************************************************************/ RCODE FLMAPI F_DOMNode::getUTF8( IF_Db * ifpDb, - IF_DynaBuf * pBuffer) + F_DynaBuf * pBuffer) { RCODE rc = NE_XFLM_OK; F_Db * pDb = (F_Db *)ifpDb; FLMUINT uiBufSize; - void * pvBuffer; + void * pvBuffer = NULL; FLMBOOL bStartedTrans = FALSE; if( RC_BAD( rc = pDb->checkTransaction( @@ -5972,12 +5972,12 @@ Desc: *****************************************************************************/ RCODE FLMAPI F_DOMNode::getBinary( IF_Db * ifpDb, - IF_DynaBuf * pBuffer) + F_DynaBuf * pBuffer) { RCODE rc = NE_XFLM_OK; F_Db * pDb = (F_Db *)ifpDb; FLMUINT uiBufSize; - void * pvBuffer; + void * pvBuffer = NULL; FLMBOOL bStartedTrans = FALSE; if( RC_BAD( rc = pDb->checkTransaction( @@ -6184,11 +6184,11 @@ Desc: RCODE FLMAPI F_DOMNode::getAttributeValueUnicode( IF_Db * ifpDb, FLMUINT uiAttrName, - IF_DynaBuf * pBuffer) + F_DynaBuf * pBuffer) { RCODE rc = NE_XFLM_OK; FLMUINT uiBufSize; - void * pvBuffer; + void * pvBuffer = NULL; pBuffer->truncateData( 0); @@ -6300,11 +6300,11 @@ Desc: RCODE FLMAPI F_DOMNode::getAttributeValueUTF8( IF_Db * ifpDb, FLMUINT uiAttrName, - IF_DynaBuf * pBuffer) + F_DynaBuf * pBuffer) { RCODE rc = NE_XFLM_OK; FLMUINT uiBufSize; - void * pvBuffer; + void * pvBuffer = NULL; pBuffer->truncateData( 0); @@ -6380,14 +6380,14 @@ Exit: Desc: ******************************************************************************/ RCODE FLMAPI F_DOMNode::getAttributeValueBinary( - IF_Db * ifpDb, - FLMUINT uiAttrName, - IF_DynaBuf * pBuffer) + IF_Db * ifpDb, + FLMUINT uiAttrName, + F_DynaBuf * pBuffer) { RCODE rc = NE_XFLM_OK; FLMBOOL bStartedTrans = FALSE; FLMUINT uiBufSize; - void * pvBuffer; + void * pvBuffer = NULL; pBuffer->truncateData( 0); diff --git a/xflaim/src/flaimsys.h b/xflaim/src/flaimsys.h index c421e9c..803f96a 100644 --- a/xflaim/src/flaimsys.h +++ b/xflaim/src/flaimsys.h @@ -416,8 +416,6 @@ public: ~F_NameTable(); - RCODE setupNameTable( void); - void clearTable( FLMUINT uiPoolBlkSize); @@ -554,7 +552,7 @@ private: FLMUNICODE * puzNamespace, FLMUINT uiInsertPos); - IF_Pool * m_pPool; + F_Pool m_pool; FLMUINT m_uiMemoryAllocated; FLM_TAG_INFO ** m_ppSortedByTagTypeAndName; FLM_TAG_INFO ** m_ppSortedByTagTypeAndNum; @@ -639,7 +637,7 @@ RCODE flmStorage2Unicode( FLMUINT uiType, FLMUINT uiStorageLength, const FLMBYTE * pucStorageBuffer, - IF_DynaBuf * pBuffer); + F_DynaBuf * pBuffer); RCODE flmUnicode2Storage( const FLMUNICODE * puzStr, @@ -1085,7 +1083,7 @@ public: FINLINE RCODE FLMAPI getUnicode( FLMUINT uiElementNumber, - IF_DynaBuf * pBuffer) + F_DynaBuf * pBuffer) { F_VECTOR_ELEMENT * pVector; @@ -1157,7 +1155,7 @@ public: FINLINE RCODE FLMAPI getBinary( FLMUINT uiElementNumber, - IF_DynaBuf * pBuffer) + F_DynaBuf * pBuffer) { F_VECTOR_ELEMENT * pVector; @@ -1810,7 +1808,7 @@ public: m_pNodeList = NULL; m_uiListSize = 0; m_uiNodeCount = 0; - m_pPool = NULL; + m_pool.poolInit( 512); } ~F_OldNodeList(); @@ -1840,7 +1838,7 @@ public: private: OLD_NODE_DATA * m_pNodeList; - IF_Pool * m_pPool; + F_Pool m_pool; FLMUINT m_uiListSize; FLMUINT m_uiNodeCount; }; @@ -1857,8 +1855,6 @@ public: virtual ~F_Db(); - RCODE setup( void); - RCODE FLMAPI transBegin( eDbTransType eTransType, FLMUINT uiMaxLockWait = XFLM_NO_TIMEOUT, @@ -3179,12 +3175,12 @@ private: // in the pool. FLMBYTE * m_pucKrefKeyBuf; // Pointer to temporary key buffer. FLMBOOL m_bKrefSetup; // True if the KRef table has been initialized. - IF_Pool * m_pKrefPool; // Memory pool to use + F_Pool * m_pKrefPool; // Memory pool to use FLMBOOL m_bReuseKrefPool; // Reuse pool instead of free it? FLMBOOL m_bKrefCompoundKey; // True if a compound key has been processed. void * m_pKrefReset; // Used to reset the Kref pool on // indexing failures - IF_Pool * m_pTmpKrefPool; // KREF pool to be used during + F_Pool m_tmpKrefPool; // KREF pool to be used during // read transactions - only used when // checking indexes. @@ -3233,7 +3229,7 @@ private: // 2) a 'purge' element or attribute // can be deleted - IF_Pool * m_pTempPool; // Temporary memory pool. It + F_Pool m_tempPool; // Temporary memory pool. It // is only used for the duration of // a FLAIM operation and then reset. // The first block in the pool is @@ -3495,7 +3491,7 @@ public: m_pCollectionArray = NULL; m_uiCollectionArraySize = 0; m_uiNumCollections = 0; - m_pPool = NULL; + m_pool.poolInit( 512); } virtual ~F_BTreeInfo() @@ -3508,16 +3504,7 @@ public: { f_free( &m_pCollectionArray); } - - if( m_pPool) - { - m_pPool->Release(); - } - } - - FINLINE RCODE setup( void) - { - return( FlmAllocPool( &m_pPool, 512)); + m_pool.poolFree(); } FINLINE void FLMAPI clearBTreeInfo( void) @@ -3664,7 +3651,7 @@ private: BTREE_INFO * m_pCollectionArray; FLMUINT m_uiCollectionArraySize; FLMUINT m_uiNumCollections; - IF_Pool * m_pPool; + F_Pool m_pool; // Items for the callback function. @@ -3949,8 +3936,6 @@ public: virtual ~F_Query(); - RCODE setup( void); - // Methods for constructing a query FINLINE RCODE FLMAPI setLanguage( @@ -4479,14 +4464,14 @@ private: IF_DOMNode * pContextNode, FLMBOOL bForward, FQNODE * pCurrNode, - IF_DynaBuf * pDynaBuf); + F_DynaBuf * pDynaBuf); RCODE getFuncValue( IF_DOMNode * pContextNode, FLMBOOL bForward, FQNODE ** ppCurrNode, FLMBOOL * pbGetNodeValue, - IF_DynaBuf * pDynaBuf); + F_DynaBuf * pDynaBuf); RCODE getXPathValue( IF_DOMNode * pContextNode, @@ -4688,7 +4673,7 @@ private: FLMUINT64 m_ui64RSDocsRead; FLMUINT64 m_ui64RSDocsPassed; EXPR_STATE * m_pCurExprState; - IF_Pool * m_pPool; + F_Pool m_pool; FLMBOOL m_bOptimized; FLMUINT m_uiLanguage; FLMUINT m_uiCollection; @@ -5097,12 +5082,6 @@ public: IF_IStream * pInputStream, IF_IStream ** ppDecodedStream); - FINLINE RCODE FLMAPI createMemoryPool( - IF_Pool ** ppPool) - { - return( FlmAllocPool( ppPool)); - } - RCODE FLMAPI createIFDataVector( IF_DataVector ** ifppDV); @@ -5873,7 +5852,7 @@ public: RCODE FLMAPI getUnicode( IF_Db * pDb, - IF_DynaBuf * pDynaBuf); + F_DynaBuf * pDynaBuf); RCODE FLMAPI getUTF8( IF_Db * pDb, @@ -5890,7 +5869,7 @@ public: RCODE FLMAPI getUTF8( IF_Db * pDb, - IF_DynaBuf * pDynaBuf); + F_DynaBuf * pDynaBuf); RCODE FLMAPI getBinary( IF_Db * pDb, @@ -5901,7 +5880,7 @@ public: RCODE FLMAPI getBinary( IF_Db * pDb, - IF_DynaBuf * pBuffer); + F_DynaBuf * pBuffer); FINLINE RCODE FLMAPI getAttributeValueUINT32( IF_Db * pDb, @@ -6128,7 +6107,7 @@ public: RCODE FLMAPI getAttributeValueUnicode( IF_Db * pDb, FLMUINT uiAttrName, - IF_DynaBuf * pDynaBuf); + F_DynaBuf * pDynaBuf); RCODE FLMAPI getAttributeValueUTF8( IF_Db * pDb, @@ -6150,7 +6129,7 @@ public: RCODE FLMAPI getAttributeValueUTF8( IF_Db * pDb, FLMUINT uiAttrName, - IF_DynaBuf * pDynaBuf); + F_DynaBuf * pDynaBuf); RCODE FLMAPI getAttributeValueBinary( IF_Db * pDb, @@ -6162,7 +6141,7 @@ public: RCODE FLMAPI getAttributeValueBinary( IF_Db * pDb, FLMUINT uiAttrName, - IF_DynaBuf * pDynaBuf); + F_DynaBuf * pDynaBuf); FINLINE RCODE FLMAPI setUINT( IF_Db * pDb, @@ -7417,7 +7396,7 @@ typedef struct Recov_Dict_Node typedef struct Recov_Dict_Info { RECOV_DICT_NODE * pRecovNodes; - IF_Pool * pPool; + F_Pool * pPool; } RECOV_DICT_INFO; typedef struct RSIxKeyTag @@ -8472,227 +8451,4 @@ FINLINE RCODE F_NodeCacheMgr::makeWriteCopy( return( NE_XFLM_OK); } -/**************************************************************************** -Desc: -*****************************************************************************/ -class F_DynaBuf : public IF_DynaBuf -{ -public: - - F_DynaBuf( - FLMBYTE * pucBuffer, - FLMUINT uiBufferSize) - { - m_pucBuffer = pucBuffer; - m_uiBufferSize = uiBufferSize; - m_uiOffset = 0; - m_bAllocatedBuffer = FALSE; - } - - virtual ~F_DynaBuf() - { - if( m_bAllocatedBuffer) - { - f_free( &m_pucBuffer); - } - } - - FINLINE void FLMAPI truncateData( - FLMUINT uiSize) - { - if( uiSize < m_uiOffset) - { - m_uiOffset = uiSize; - } - } - - FINLINE RCODE FLMAPI allocSpace( - FLMUINT uiSize, - void ** ppvPtr) - { - RCODE rc = NE_FLM_OK; - - if( m_uiOffset + uiSize >= m_uiBufferSize) - { - if( RC_BAD( rc = resizeBuffer( m_uiOffset + uiSize + 512))) - { - goto Exit; - } - } - - *ppvPtr = &m_pucBuffer[ m_uiOffset]; - m_uiOffset += uiSize; - - Exit: - - return( rc); - } - - FINLINE RCODE FLMAPI appendData( - const void * pvData, - FLMUINT uiSize) - { - RCODE rc = NE_FLM_OK; - void * pvTmp; - - if( RC_BAD( rc = allocSpace( uiSize, &pvTmp))) - { - goto Exit; - } - - if( uiSize == 1) - { - *((FLMBYTE *)pvTmp) = *((FLMBYTE *)pvData); - } - else - { - f_memcpy( pvTmp, pvData, uiSize); - } - - Exit: - - return( rc); - } - - FINLINE RCODE FLMAPI appendByte( - FLMBYTE ucChar) - { - RCODE rc = NE_FLM_OK; - FLMBYTE * pucTmp; - - if( RC_BAD( rc = allocSpace( 1, (void **)&pucTmp))) - { - goto Exit; - } - - *pucTmp = ucChar; - - Exit: - - return( rc); - } - - FINLINE RCODE FLMAPI appendUniChar( - FLMUNICODE uChar) - { - RCODE rc = NE_FLM_OK; - FLMUNICODE * puTmp; - - if( RC_BAD( rc = allocSpace( sizeof( FLMUNICODE), (void **)&puTmp))) - { - goto Exit; - } - - *puTmp = uChar; - - Exit: - - return( rc); - } - - FINLINE FLMBYTE * FLMAPI getBufferPtr( void) - { - return( m_pucBuffer); - } - - FINLINE FLMUNICODE * FLMAPI getUnicodePtr( void) - { - if( m_uiOffset >= sizeof( FLMUNICODE)) - { - return( (FLMUNICODE *)m_pucBuffer); - } - - return( NULL); - } - - FINLINE FLMUINT FLMAPI getUnicodeLength( void) - { - if( m_uiOffset <= sizeof( FLMUNICODE)) - { - return( 0); - } - - return( (m_uiOffset >> 1) - 1); - } - - FINLINE FLMUINT FLMAPI getDataLength( void) - { - return( m_uiOffset); - } - - FINLINE RCODE FLMAPI copyFromBuffer( - IF_DynaBuf * pSource) - { - RCODE rc = NE_FLM_OK; - - if( RC_BAD( rc = resizeBuffer( - ((F_DynaBuf *)pSource)->m_uiBufferSize))) - { - goto Exit; - } - - if( (m_uiOffset = ((F_DynaBuf *)pSource)->m_uiOffset) != 0) - { - f_memcpy( m_pucBuffer, ((F_DynaBuf *)pSource)->m_pucBuffer, - ((F_DynaBuf *)pSource)->m_uiOffset); - } - - Exit: - - return( rc); - } - -private: - - FINLINE RCODE resizeBuffer( - FLMUINT uiNewSize) - { - RCODE rc = NE_FLM_OK; - - if( !m_bAllocatedBuffer) - { - if( uiNewSize > m_uiBufferSize) - { - FLMBYTE * pucOriginalBuf = m_pucBuffer; - - if( RC_BAD( rc = f_alloc( uiNewSize, &m_pucBuffer))) - { - m_pucBuffer = pucOriginalBuf; - goto Exit; - } - - m_bAllocatedBuffer = TRUE; - - if( m_uiOffset) - { - f_memcpy( m_pucBuffer, pucOriginalBuf, m_uiOffset); - } - } - } - else - { - if( RC_BAD( rc = f_realloc( uiNewSize, &m_pucBuffer))) - { - goto Exit; - } - - if( uiNewSize < m_uiOffset) - { - m_uiOffset = uiNewSize; - } - } - - m_uiBufferSize = uiNewSize; - - Exit: - - return( rc); - } - - FLMBOOL m_bAllocatedBuffer; - FLMBYTE * m_pucBuffer; - FLMUINT m_uiBufferSize; - FLMUINT m_uiOffset; -}; - #endif // FLAIMSYS_H diff --git a/xflaim/src/flchkix.cpp b/xflaim/src/flchkix.cpp index e1a025a..3858d64 100644 --- a/xflaim/src/flchkix.cpp +++ b/xflaim/src/flchkix.cpp @@ -819,7 +819,7 @@ RCODE F_DbCheck::reportIxError( // memory for new CDL entries from the DB pool. If the pool is not // reset, it grows during the check and becomes VERY large. - pDbPoolMark = m_pDb->m_pTempPool->poolMark(); + pDbPoolMark = m_pDb->m_tempPool.poolMark(); // Set up the KRef so that flmGetRecKeys will work @@ -868,7 +868,7 @@ Exit: // Reset the index check pool - m_pDb->m_pTempPool->poolReset(pDbPoolMark); + m_pDb->m_tempPool.poolReset(pDbPoolMark); return( rc); } diff --git a/xflaim/src/flclose.cpp b/xflaim/src/flclose.cpp index d2a7ede..7905054 100644 --- a/xflaim/src/flclose.cpp +++ b/xflaim/src/flclose.cpp @@ -69,11 +69,6 @@ F_Db::~F_Db() m_uiKrefTblSize = 0; } - if( m_pKrefPool) - { - m_pKrefPool->Release(); - } - if( m_pucKrefKeyBuf) { f_free( &m_pucKrefKeyBuf); @@ -113,16 +108,9 @@ F_Db::~F_Db() { f_semDestroy( &m_hWaitSem); } - - if (m_pTmpKrefPool) - { - m_pTmpKrefPool->Release(); - } - - if( m_pTempPool) - { - m_pTempPool->Release(); - } + + m_tmpKrefPool.poolFree(); + m_tempPool.poolFree(); // Unlink the F_Db from the F_Database and F_Dict structures. // IMPORTANT NOTE: The call to unlinkFromDatabase needs to diff --git a/xflaim/src/flkeyret.cpp b/xflaim/src/flkeyret.cpp index 9c3b88c..c97a609 100644 --- a/xflaim/src/flkeyret.cpp +++ b/xflaim/src/flkeyret.cpp @@ -46,7 +46,7 @@ RCODE F_Db::keyRetrieve( LFILE * pLFile; FLMBYTE * pucSearchKey = NULL; FLMBYTE * pucFoundKey = NULL; - void * pvMark = m_pTempPool->poolMark(); + void * pvMark = m_tempPool.poolMark(); FLMUINT uiSearchKeyLen = 0; FLMUINT uiFoundKeyLen; FLMUINT uiOriginalFlags; @@ -91,14 +91,14 @@ RCODE F_Db::keyRetrieve( if (pSearchKey) { - if (RC_BAD( rc = m_pTempPool->poolAlloc( XFLM_MAX_KEY_SIZE, + if (RC_BAD( rc = m_tempPool.poolAlloc( XFLM_MAX_KEY_SIZE, (void **)&pucSearchKey))) { goto Exit; } } - if (RC_BAD( rc = m_pTempPool->poolAlloc( XFLM_MAX_KEY_SIZE, (void **)&pucFoundKey))) + if (RC_BAD( rc = m_tempPool.poolAlloc( XFLM_MAX_KEY_SIZE, (void **)&pucFoundKey))) { goto Exit; } @@ -288,7 +288,7 @@ RCODE F_Db::keyRetrieve( else { uiDataBufSize = uiDataLen; - if (RC_BAD( rc = m_pTempPool->poolAlloc( uiDataBufSize, + if (RC_BAD( rc = m_tempPool.poolAlloc( uiDataBufSize, (void **)&pucData))) { goto Exit; @@ -315,7 +315,7 @@ RCODE F_Db::keyRetrieve( Exit: - m_pTempPool->poolReset( pvMark); + m_tempPool.poolReset( pvMark); if (pbtree) { diff --git a/xflaim/src/flopen.cpp b/xflaim/src/flopen.cpp index c86ca26..fdfe12e 100644 --- a/xflaim/src/flopen.cpp +++ b/xflaim/src/flopen.cpp @@ -129,34 +129,8 @@ F_Db::F_Db( m_bKrefCompoundKey = FALSE; m_pKrefReset = NULL; - m_pTmpKrefPool = NULL; - m_pTempPool = NULL; -} - -/*************************************************************************** -Desc: -****************************************************************************/ -RCODE F_Db::setup( void) -{ - RCODE rc = NE_XFLM_OK; - - if( RC_BAD( rc = FlmAllocPool( &m_pTmpKrefPool))) - { - goto Exit; - } - - m_pTmpKrefPool->poolInit( 8192); - - if( RC_BAD( rc = FlmAllocPool( &m_pTempPool))) - { - goto Exit; - } - - m_pTempPool->poolInit( XFLM_MAX_KEY_SIZE * 4); - -Exit: - - return( rc); + m_tmpKrefPool.poolInit( DEFAULT_KREF_POOL_BLOCK_SIZE); + m_tempPool.poolInit( XFLM_MAX_KEY_SIZE * 4); } /*************************************************************************** @@ -180,11 +154,6 @@ RCODE F_DbSystem::allocDb( goto Exit; } - if( RC_BAD( rc = pDb->setup())) - { - goto Exit; - } - if( RC_BAD( rc = f_semCreate( &pDb->m_hWaitSem))) { goto Exit; @@ -1033,6 +1002,7 @@ Desc: Constructor for F_Database object. F_Database::F_Database( FLMBOOL bTempDb) { + m_krefPool.poolInit( DEFAULT_KREF_POOL_BLOCK_SIZE * 8); m_pNext = NULL; m_pPrev = NULL; m_pFirstQuery = NULL; @@ -1319,10 +1289,7 @@ F_Database::~F_Database() m_uiUpdBufferSize = 0; } - if( m_pKrefPool) - { - m_pKrefPool->Release(); - } + m_krefPool.poolFree(); if (m_ppBlocksDone) { @@ -1455,13 +1422,6 @@ RCODE F_Database::setupDatabase( goto Exit; } - if( RC_BAD( rc = FlmAllocPool( &m_pKrefPool))) - { - goto Exit; - } - - m_pKrefPool->poolInit( DEFAULT_KREF_POOL_BLOCK_SIZE * 8); - // Allocate a buffer for writing the DB header // If we are a temporary database, there is no need // for this allocation. diff --git a/xflaim/src/fntable.cpp b/xflaim/src/fntable.cpp index d631c28..51e78e9 100644 --- a/xflaim/src/fntable.cpp +++ b/xflaim/src/fntable.cpp @@ -149,7 +149,7 @@ Desc: Constructor ****************************************************************************/ F_NameTable::F_NameTable() { - m_pPool = NULL; + m_pool.poolInit( 1024); m_uiMemoryAllocated = 0; m_ppSortedByTagTypeAndName = NULL; m_ppSortedByTagTypeAndNum = NULL; @@ -176,31 +176,6 @@ Desc: Destructor F_NameTable::~F_NameTable() { clearTable( 0); - - if( m_pPool) - { - m_pPool->Release(); - } -} - -/**************************************************************************** -Desc: Setup name table. This routine should be called immediately after - the object is allocated. -****************************************************************************/ -RCODE F_NameTable::setupNameTable( void) -{ - RCODE rc = NE_XFLM_OK; - - if( RC_BAD( rc = FlmAllocPool( &m_pPool))) - { - goto Exit; - } - - m_pPool->poolInit( 1024); - -Exit: - - return( rc); } /**************************************************************************** @@ -209,14 +184,11 @@ Desc: Free everything in the table void F_NameTable::clearTable( FLMUINT uiPoolBlkSize) { - if( m_pPool) - { - m_pPool->poolFree(); - } + m_pool.poolFree(); if (uiPoolBlkSize) { - m_pPool->poolInit( uiPoolBlkSize); + m_pool.poolInit( uiPoolBlkSize); } m_uiMemoryAllocated = 0; @@ -1122,9 +1094,9 @@ RCODE F_NameTable::allocTag( // Create a new tag info structure. - pvMark = m_pPool->poolMark(); + pvMark = m_pool.poolMark(); uiSaveMemoryAllocated = m_uiMemoryAllocated; - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FLM_TAG_INFO), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FLM_TAG_INFO), (void **)&pTagInfo))) { goto Exit; @@ -1136,7 +1108,7 @@ RCODE F_NameTable::allocTag( if (puzTagName) { uiNameSize = (f_unilen( puzTagName) + 1) * sizeof( FLMUNICODE); - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameSize, (void **)&pTagInfo->puzTagName))) { goto Exit; @@ -1147,7 +1119,7 @@ RCODE F_NameTable::allocTag( else { uiNameSize = (f_strlen( pszTagName) + 1) * sizeof( FLMUNICODE); - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameSize, (void **)&pTagInfo->puzTagName))) { goto Exit; @@ -1181,7 +1153,7 @@ RCODE F_NameTable::allocTag( &uiNamespaceInsertPos)) == NULL) { uiNameSize = (f_unilen( puzNamespace) + 1) * sizeof( FLMUNICODE); - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameSize, (void **)&puzTblNamespace))) { goto Exit; @@ -1199,7 +1171,7 @@ RCODE F_NameTable::allocTag( // allocated if the pool is reset at Exit due to a later // error. - pvMark = m_pPool->poolMark(); + pvMark = m_pool.poolMark(); uiSaveMemoryAllocated = m_uiMemoryAllocated; } pTagInfo->puzNamespace = puzTblNamespace; @@ -1210,7 +1182,7 @@ Exit: if (RC_BAD( rc)) { - m_pPool->poolReset( pvMark); + m_pool.poolReset( pvMark); m_uiMemoryAllocated = uiSaveMemoryAllocated; pTagInfo = NULL; } diff --git a/xflaim/src/fqsort.cpp b/xflaim/src/fqsort.cpp index 5a96eae..85df51e 100644 --- a/xflaim/src/fqsort.cpp +++ b/xflaim/src/fqsort.cpp @@ -77,7 +77,7 @@ RCODE FLMAPI F_Query::addSortKey( if (!m_pSortIxd) { - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( IXD), (void **)&m_pSortIxd))) + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( IXD), (void **)&m_pSortIxd))) { goto Exit; } @@ -90,7 +90,7 @@ RCODE FLMAPI F_Query::addSortKey( // Allocate an ICD structure. - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( ICD), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( ICD), (void **)&pSortIcd))) { goto Exit; diff --git a/xflaim/src/fquery.cpp b/xflaim/src/fquery.cpp index 6afcc8d..9788416 100644 --- a/xflaim/src/fquery.cpp +++ b/xflaim/src/fquery.cpp @@ -192,7 +192,7 @@ Desc: Constructor ***************************************************************************/ F_Query::F_Query() { - m_pPool = NULL; + m_pool.poolInit( 1024); m_uiLanguage = FLM_US_LANG; m_uiCollection = XFLM_DATA_COLLECTION; initVars(); @@ -204,30 +204,7 @@ Desc: Destructor F_Query::~F_Query() { clearQuery(); - - if( m_pPool) - { - m_pPool->Release(); - } -} - -/*************************************************************************** -Desc: -***************************************************************************/ -RCODE F_Query::setup( void) -{ - RCODE rc = NE_XFLM_OK; - - if( RC_BAD( rc = FlmAllocPool( &m_pPool))) - { - goto Exit; - } - - m_pPool->poolInit( 1024); - -Exit: - - return( rc); + m_pool.poolFree(); } /*************************************************************************** @@ -439,11 +416,7 @@ void F_Query::initVars( void) m_bIndexSet = FALSE; m_uiTimeLimit = 0; m_uiStartTime = 0; - - if( m_pPool) - { - m_pPool->poolReset( NULL); - } + m_pool.poolReset( NULL); } /*************************************************************************** @@ -456,7 +429,7 @@ RCODE F_Query::allocExprState( void) if (!m_pCurExprState || !m_pCurExprState->pNext) { - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( EXPR_STATE), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( EXPR_STATE), (void **)&pExprState))) { goto Exit; @@ -651,7 +624,7 @@ RCODE F_Query::allocValueNode( goto Exit; } - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQNODE), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQNODE), (void **)ppQNode))) { goto Exit; @@ -667,7 +640,7 @@ RCODE F_Query::allocValueNode( if (uiValLen && (eValType == XFLM_UTF8_VAL || eValType == XFLM_BINARY_VAL)) { - if (RC_BAD( rc = m_pPool->poolAlloc( uiValLen, + if (RC_BAD( rc = m_pool.poolAlloc( uiValLen, (void **)&pQNode->currVal.val.pucBuf))) { goto Exit; @@ -1102,7 +1075,7 @@ RCODE FLMAPI F_Query::addXPathComponent( // Allocate an XPATH component - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( XPATH_COMPONENT), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( XPATH_COMPONENT), (void **)&pXPathComponent))) { goto Exit; @@ -1133,12 +1106,12 @@ RCODE FLMAPI F_Query::addXPathComponent( // Need to allocate a node and an XPATH - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQNODE), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQNODE), (void **)&pQNode))) { goto Exit; } - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FXPATH), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FXPATH), (void **)&pXPath))) { goto Exit; @@ -1379,7 +1352,7 @@ RCODE FLMAPI F_Query::addOperator( // Allocate an expression node and link it to the // function. - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQEXPR), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQEXPR), (void **)&pQExpr))) { goto Exit; @@ -1469,7 +1442,7 @@ RCODE FLMAPI F_Query::addOperator( // Allocate an expression node and link it to the - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQEXPR), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQEXPR), (void **)&pQExpr))) { goto Exit; @@ -1616,7 +1589,7 @@ RCODE FLMAPI F_Query::addOperator( // Create an AND node and link the existing expression with // this new expression as children of this new AND node. - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQNODE), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQNODE), (void **)&pQNode))) { goto Exit; @@ -1708,7 +1681,7 @@ RCODE FLMAPI F_Query::addOperator( // Make a QNODE and find a place for it in the query tree - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQNODE), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQNODE), (void **)&pQNode))) { goto Exit; @@ -1871,12 +1844,12 @@ RCODE FLMAPI F_Query::addFunction( // Allocate a function node - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQNODE), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQNODE), (void **)&pQNode))) { goto Exit; } - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQFUNCTION), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQFUNCTION), (void **)&pQFunction))) { goto Exit; @@ -2354,7 +2327,7 @@ RCODE F_Query::intersectPredicates( // Add a new predicate to the context path - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( PATH_PRED), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( PATH_PRED), (void **)&pPred))) { goto Exit; @@ -2441,7 +2414,7 @@ Exit: { PATH_PRED_NODE * pPathPredNode; - if (RC_OK( rc = m_pPool->poolCalloc( sizeof( PATH_PRED_NODE), + if (RC_OK( rc = m_pool.poolCalloc( sizeof( PATH_PRED_NODE), (void **)&pPathPredNode))) { pPathPredNode->pXPathNode = pXPathNode; @@ -2843,7 +2816,7 @@ RCODE F_Query::unionPredicates( // Add a new predicate to the context path - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( PATH_PRED), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( PATH_PRED), (void **)&pPred))) { goto Exit; @@ -2930,7 +2903,7 @@ Exit: { PATH_PRED_NODE * pPathPredNode; - if (RC_OK( rc = m_pPool->poolCalloc( sizeof( PATH_PRED_NODE), + if (RC_OK( rc = m_pool.poolCalloc( sizeof( PATH_PRED_NODE), (void **)&pPathPredNode))) { pPathPredNode->pXPathNode = pXPathNode; @@ -3083,7 +3056,7 @@ RCODE F_Query::addPredicateToContext( if (!pContextPath) { - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( CONTEXT_PATH), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( CONTEXT_PATH), (void **)&pContextPath))) { goto Exit; @@ -3310,7 +3283,7 @@ RCODE F_Query::createOpContext( // Allocate a new context and link it in as a child // to the current context. - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( OP_CONTEXT), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( OP_CONTEXT), (void **)&pContext))) { goto Exit; @@ -9203,7 +9176,7 @@ RCODE F_Query::getNextFunctionValue( IF_DOMNode * pContextNode, FLMBOOL bForward, FQNODE * pCurrNode, - IF_DynaBuf * pDynaBuf) + F_DynaBuf * pDynaBuf) { RCODE rc = NE_XFLM_OK; ValIterator eIterator; @@ -9247,7 +9220,7 @@ RCODE F_Query::getNextFunctionValue( pDynaBuf->truncateData( 0); if (RC_BAD( rc = pCurrNode->nd.pQFunction->pFuncObj->getValue( (IF_Db *)m_pDb, pNode, eIterator, &pCurrNode->currVal.eValType, - &pCurrNode->bLastValue, ucValBuf, (IF_DynaBuf *)pDynaBuf))) + &pCurrNode->bLastValue, ucValBuf, pDynaBuf))) { goto Exit; } @@ -9593,7 +9566,7 @@ RCODE F_Query::getFuncValue( FLMBOOL bForward, FQNODE ** ppCurrNode, FLMBOOL * pbGetNodeValue, - IF_DynaBuf * pDynaBuf) + F_DynaBuf * pDynaBuf) { RCODE rc = NE_XFLM_OK; FQNODE * pCurrNode = *ppCurrNode; @@ -13595,11 +13568,6 @@ RCODE FLMAPI F_DbSystem::createIFQuery( goto Exit; } - if( RC_BAD( rc = pQuery->setup())) - { - goto Exit; - } - *ppQuery = pQuery; pQuery = NULL; @@ -14005,7 +13973,7 @@ RCODE F_Query::copyValue( case XFLM_UTF8_VAL: if (pDestValue->uiDataLen) { - if (RC_BAD( rc = m_pPool->poolAlloc( pDestValue->uiDataLen, + if (RC_BAD( rc = m_pool.poolAlloc( pDestValue->uiDataLen, (void **)&pDestValue->val.pucBuf))) { goto Exit; @@ -14038,7 +14006,7 @@ RCODE F_Query::copyXPath( XPATH_COMPONENT * pXPathComponent; XPATH_COMPONENT * pTmpXPathComponent; - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FXPATH), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FXPATH), (void **)&pDestXPath))) { goto Exit; @@ -14047,7 +14015,7 @@ RCODE F_Query::copyXPath( pXPathComponent = pSrcXPath->pFirstComponent; while (pXPathComponent) { - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( XPATH_COMPONENT), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( XPATH_COMPONENT), (void **)&pTmpXPathComponent))) { goto Exit; @@ -14126,7 +14094,7 @@ RCODE F_Query::copyFunction( FQEXPR * pExpr; FQEXPR * pTmpExpr; - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQFUNCTION), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQFUNCTION), (void **)&pDestFunc))) { goto Exit; @@ -14157,7 +14125,7 @@ RCODE F_Query::copyFunction( pExpr = pSrcFunc->pFirstArg; while (pExpr) { - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQEXPR), + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQEXPR), (void **)&pTmpExpr))) { goto Exit; @@ -14196,7 +14164,7 @@ RCODE F_Query::copyNode( RCODE rc = NE_XFLM_OK; FQNODE * pDestNode; - if (RC_BAD( rc = m_pPool->poolCalloc( sizeof( FQNODE), (void **)&pDestNode))) + if (RC_BAD( rc = m_pool.poolCalloc( sizeof( FQNODE), (void **)&pDestNode))) { goto Exit; } diff --git a/xflaim/src/fslfileu.cpp b/xflaim/src/fslfileu.cpp index a1cb2d2..39cde4a 100644 --- a/xflaim/src/fslfileu.cpp +++ b/xflaim/src/fslfileu.cpp @@ -819,11 +819,6 @@ RCODE F_Db::dictClone( void) goto Exit; } - if( RC_BAD( rc = pNewDict->setup())) - { - goto Exit; - } - // Nothing to do is not a legal state. if (!m_pDict) @@ -1139,7 +1134,7 @@ RCODE F_Db::indexDocument( IX_CONTEXT * pIxContext; F_DOMNode * pTmpNode = NULL; F_TRAV * pTrav = NULL; - void * pvMark = m_pTempPool->poolMark(); + void * pvMark = m_tempPool.poolMark(); CDL_HDR * pCdlHdr; FLMUINT64 ui64DocId; @@ -1195,7 +1190,7 @@ RCODE F_Db::indexDocument( // Do an in-order traversal of the document. - if (RC_BAD( rc = m_pTempPool->poolCalloc( sizeof( F_TRAV), (void **)&pTrav))) + if (RC_BAD( rc = m_tempPool.poolCalloc( sizeof( F_TRAV), (void **)&pTrav))) { goto Exit; } @@ -1328,8 +1323,9 @@ RCODE F_Db::indexDocument( } pIxContextList = pIxContext; - if( RC_BAD( rc = FlmAllocPool( &pIxContext->pPool))) + if ((pIxContext->pPool = f_new F_Pool) == NULL) { + rc = RC_SET( NE_XFLM_MEM); goto Exit; } @@ -1505,7 +1501,7 @@ Setup_Child: { F_TRAV * pNewTrav; - if (RC_BAD( rc = m_pTempPool->poolCalloc( sizeof( F_TRAV), + if (RC_BAD( rc = m_tempPool.poolCalloc( sizeof( F_TRAV), (void **)&pNewTrav))) { goto Exit; @@ -1730,7 +1726,7 @@ Exit: kyFreeIxContext( pIxd, pIxContextList, &pIxContextList); } - m_pTempPool->poolReset( pvMark); + m_tempPool.poolReset( pvMark); return( rc); } @@ -1765,7 +1761,7 @@ RCODE F_Db::indexSetOfDocuments( FLMBOOL bRelinquish = FALSE; FLMBYTE ucKey[ FLM_MAX_NUM_BUF_SIZE]; FLMUINT uiKeyLen; - void * pvTmpPoolMark = m_pTempPool->poolMark(); + void * pvTmpPoolMark = m_tempPool.poolMark(); F_Btree * pbtree = NULL; FLMBOOL bNeg; FLMUINT uiBytesProcessed; @@ -2076,7 +2072,7 @@ Exit: } krefCntrlFree(); - m_pTempPool->poolReset( pvTmpPoolMark); + m_tempPool.poolReset( pvTmpPoolMark); if (pbtree) { diff --git a/xflaim/src/fstructs.h b/xflaim/src/fstructs.h index 6495582..520ae59 100644 --- a/xflaim/src/fstructs.h +++ b/xflaim/src/fstructs.h @@ -631,7 +631,7 @@ Desc: This is a temporary structure that is used when building compound ****************************************************************************/ typedef struct IxContextTag { - IF_Pool * pPool; + F_Pool * pPool; CDL_HDR * pCdlTbl; CDL * pCdlList; IxContextTag * pNext; @@ -1207,7 +1207,7 @@ private: // because of a critical error. RCODE m_rcMustClose; // Return code that caused bMustClose to // be set. - IF_Pool * m_pKrefPool; // Kref pool to be used during update + F_Pool m_krefPool; // Kref pool to be used during update // transactions. FLMUINT m_uiSigBitsInBlkSize;// Significant bits in the database's // block size. @@ -1601,7 +1601,7 @@ typedef struct FlmSystemData // unused structures in memory before // freeing them. FEVENT_HDR EventHdrs [XFLM_MAX_EVENT_CATEGORIES]; - IF_Pool * pKRefPool; // Memory Pool that is only used by + F_Pool * pKRefPool; // Memory Pool that is only used by // record updaters for key building FLMUINT uiMaxFileSize; diff --git a/xflaim/src/funicode.cpp b/xflaim/src/funicode.cpp index eec7125..987e2b4 100644 --- a/xflaim/src/funicode.cpp +++ b/xflaim/src/funicode.cpp @@ -741,7 +741,7 @@ RCODE flmStorage2Unicode( FLMUINT uiType, FLMUINT uiStorageLength, const FLMBYTE * pucStorageBuffer, - IF_DynaBuf * pBuffer) + F_DynaBuf * pBuffer) { RCODE rc = NE_XFLM_OK; FLMBYTE ucTempBuf[ 80]; diff --git a/xflaim/src/fxml.cpp b/xflaim/src/fxml.cpp index 78f2078..47ada27 100644 --- a/xflaim/src/fxml.cpp +++ b/xflaim/src/fxml.cpp @@ -118,8 +118,8 @@ F_XMLImport::F_XMLImport() m_bSetup = FALSE; m_fnStatus = NULL; m_pvCallbackData = NULL; - m_pTmpPool = NULL; - m_pAttrPool = NULL; + m_tmpPool.poolInit( 4096); + m_attrPool.poolInit( 4096); m_puzCurrLineBuf = NULL; m_uiCurrLineBufMaxChars = 0; reset(); @@ -142,15 +142,8 @@ F_XMLImport::~F_XMLImport() f_free( &m_puzCurrLineBuf); } - if( m_pTmpPool) - { - m_pTmpPool->Release(); - } - - if( m_pAttrPool) - { - m_pAttrPool->Release(); - } + m_tmpPool.poolFree(); + m_attrPool.poolFree(); } /**************************************************************************** @@ -172,10 +165,7 @@ void F_XMLImport::reset( void) f_memset( &m_importStats, 0, sizeof( XFLM_IMPORT_STATS)); popNamespaces( getNamespaceCount()); - if( m_pTmpPool) - { - m_pTmpPool->poolReset( NULL); - } + m_tmpPool.poolReset( NULL); resetAttrList(); } @@ -193,20 +183,6 @@ RCODE F_XMLImport::setup( void) { goto Exit; } - - if( RC_BAD( rc = FlmAllocPool( &m_pTmpPool))) - { - goto Exit; - } - - m_pTmpPool->poolInit( 4096); - - if( RC_BAD( rc = FlmAllocPool( &m_pAttrPool))) - { - goto Exit; - } - - m_pAttrPool->poolInit( 4096); m_bSetup = TRUE; Exit: @@ -953,7 +929,7 @@ RCODE F_XMLImport::processSTag( FLMUNICODE * puzLocal = NULL; FLMUINT uiNameId; FLMUINT uiAllocSize; - void * pvMark = m_pTmpPool->poolMark(); + void * pvMark = m_tmpPool.poolMark(); RCODE rc = NE_XFLM_OK; FLMBOOL bNamespaceDecl; FLMUINT uiSavedLineNum; @@ -998,7 +974,7 @@ RCODE F_XMLImport::processSTag( } uiAllocSize = (f_unilen( puzTmpLocal) + 1) * sizeof( FLMUNICODE); - if( RC_BAD( rc = m_pTmpPool->poolAlloc( uiAllocSize, (void **)&puzLocal))) + if( RC_BAD( rc = m_tmpPool.poolAlloc( uiAllocSize, (void **)&puzLocal))) { goto Exit; } @@ -1011,7 +987,7 @@ RCODE F_XMLImport::processSTag( // continues, the scratch buffer will be overwritten uiAllocSize = (f_unilen( puzTmpPrefix) + 1) * sizeof( FLMUNICODE); - if( RC_BAD( rc = m_pTmpPool->poolAlloc( uiAllocSize, (void **)&puzPrefix))) + if( RC_BAD( rc = m_tmpPool.poolAlloc( uiAllocSize, (void **)&puzPrefix))) { goto Exit; } @@ -1184,7 +1160,7 @@ Exit: pNamespace->Release(); } - m_pTmpPool->poolReset( pvMark); + m_tmpPool.poolReset( pvMark); return( rc); } diff --git a/xflaim/src/fxml.h b/xflaim/src/fxml.h index 6302e54..3cc1890 100644 --- a/xflaim/src/fxml.h +++ b/xflaim/src/fxml.h @@ -393,10 +393,7 @@ private: m_pFirstAttr = NULL; m_pLastAttr = NULL; - if( m_pAttrPool) - { - m_pAttrPool->poolReset( NULL); - } + m_attrPool.poolReset( NULL); } RCODE allocAttribute( @@ -405,7 +402,7 @@ private: XML_ATTR * pAttr = NULL; RCODE rc = NE_XFLM_OK; - if( RC_BAD( rc = m_pAttrPool->poolCalloc( + if( RC_BAD( rc = m_attrPool.poolCalloc( sizeof( XML_ATTR), (void **)&pAttr))) { goto Exit; @@ -443,7 +440,7 @@ private: uiStrLen = f_unilen( puzPrefix); - if( RC_BAD( rc = m_pAttrPool->poolAlloc( + if( RC_BAD( rc = m_attrPool.poolAlloc( sizeof( FLMUNICODE) * (uiStrLen + 1), (void **)&pAttr->puzPrefix))) { goto Exit; @@ -472,7 +469,7 @@ private: uiStrLen = f_unilen( puzLocalName); - if( RC_BAD( rc = m_pAttrPool->poolAlloc( + if( RC_BAD( rc = m_attrPool.poolAlloc( sizeof( FLMUNICODE) * (uiStrLen + 1), (void **)&pAttr->puzLocalName))) { @@ -502,7 +499,7 @@ private: uiStrLen = f_unilen( puzUnicode); - if( RC_BAD( rc = m_pAttrPool->poolAlloc( + if( RC_BAD( rc = m_attrPool.poolAlloc( sizeof( FLMUNICODE) * (uiStrLen + 1), (void **)&pAttr->puzVal))) { @@ -558,13 +555,13 @@ private: XML_STATUS_HOOK m_fnStatus; void * m_pvCallbackData; XFLM_IMPORT_STATS m_importStats; - IF_Pool * m_pTmpPool; + F_Pool m_tmpPool; // Attribute management XML_ATTR * m_pFirstAttr; XML_ATTR * m_pLastAttr; - IF_Pool * m_pAttrPool; + F_Pool m_attrPool; }; #define FLM_XML_EXTEND_DICT_FLAG 0x00000001 diff --git a/xflaim/src/fxpath.cpp b/xflaim/src/fxpath.cpp index 1ef3155..8594d2d 100644 --- a/xflaim/src/fxpath.cpp +++ b/xflaim/src/fxpath.cpp @@ -1645,7 +1645,7 @@ public: eValTypes * peValType, FLMBOOL * pbLastValue, void * pvVal, - IF_DynaBuf * pDynaBuf = NULL); + F_DynaBuf * pDynaBuf = NULL); RCODE FLMAPI cloneSelf( IF_QueryValFunc ** ppNewObj); @@ -1663,7 +1663,7 @@ RCODE FLMAPI XFLAIM_QueryValFunc::getValue( eValTypes * peValType, FLMBOOL * pbLastValue, void * pvVal, - IF_DynaBuf * pDynaBuf) + F_DynaBuf * pDynaBuf) { RCODE rc = NE_XFLM_OK; diff --git a/xflaim/src/kybuild.cpp b/xflaim/src/kybuild.cpp index e4b4fd9..0212127 100644 --- a/xflaim/src/kybuild.cpp +++ b/xflaim/src/kybuild.cpp @@ -71,7 +71,7 @@ FSTATIC RCODE kySeeIfRepeatingSibs( FSTATIC RCODE kyFindChildNode( F_Db * pDb, - IF_Pool * pPool, + F_Pool * pPool, NODE_TRAV ** ppTrav, FLMBOOL * pbGotChild, FLMBOOL * pbHadRepeatingSib); @@ -247,30 +247,7 @@ F_OldNodeList::~F_OldNodeList() { f_free( &m_pNodeList); } - - if( m_pPool) - { - m_pPool->Release(); - } -} - -/***************************************************************************** -Desc: -*****************************************************************************/ -RCODE F_OldNodeList::setup( void) -{ - RCODE rc = NE_XFLM_OK; - - if( RC_BAD( rc = FlmAllocPool( &m_pPool))) - { - goto Exit; - } - - m_pPool->poolInit( 512); - -Exit: - - return( rc); + m_pool.poolFree(); } /***************************************************************************** @@ -478,7 +455,7 @@ RCODE F_OldNodeList::addNodeToList( // Allocate the space needed. - if (RC_BAD( rc = m_pPool->poolAlloc( uiBufSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiBufSize, (void **)&m_pNodeList [uiInsertPos].pucData))) { goto Exit; @@ -508,7 +485,7 @@ RCODE F_OldNodeList::addNodeToList( // Allocate the space needed. uiBufSize = (uiChars + 1) * sizeof( FLMUNICODE); - if (RC_BAD( rc = m_pPool->poolAlloc( uiBufSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiBufSize, (void **)&m_pNodeList [uiInsertPos].pucData))) { goto Exit; @@ -537,11 +514,7 @@ Desc: Release all of the nodes in the list. *****************************************************************************/ void F_OldNodeList::resetList( void) { - if( m_pPool) - { - m_pPool->poolReset( NULL); - } - + m_pool.poolReset( NULL); m_uiNodeCount = 0; } @@ -1230,9 +1203,9 @@ No_Strings: { if (*ppucTmpBuf == NULL) { - *ppvMark = m_pTempPool->poolMark(); + *ppvMark = m_tempPool.poolMark(); *puiTmpBufSize = (FLMUINT)XFLM_MAX_KEY_SIZE + 8; - if (RC_BAD( rc = m_pTempPool->poolAlloc( *puiTmpBufSize, + if (RC_BAD( rc = m_tempPool.poolAlloc( *puiTmpBufSize, (void **)ppucTmpBuf))) { goto Exit; @@ -1340,9 +1313,9 @@ No_Strings: flmAssert( bSubstring); if (*ppucTmpBuf == NULL) { - *ppvMark = m_pTempPool->poolMark(); + *ppvMark = m_tempPool.poolMark(); *puiTmpBufSize = (FLMUINT)XFLM_MAX_KEY_SIZE + 8; - if (RC_BAD( rc = m_pTempPool->poolAlloc( *puiTmpBufSize, + if (RC_BAD( rc = m_tempPool.poolAlloc( *puiTmpBufSize, (void **)ppucTmpBuf))) { goto Exit; @@ -1427,11 +1400,6 @@ No_Strings: rc = RC_SET( NE_XFLM_MEM); goto Exit; } - - if( RC_BAD( rc = m_pOldNodeList->setup())) - { - goto Exit; - } } if (RC_BAD( rc = m_pOldNodeList->addNodeToList( this, pNode))) { @@ -1578,11 +1546,6 @@ No_Data: rc = RC_SET( NE_XFLM_MEM); goto Exit; } - - if( RC_BAD( rc = m_pOldNodeList->setup())) - { - goto Exit; - } } if (RC_BAD( rc = m_pOldNodeList->addNodeToList( this, pNode))) @@ -1727,7 +1690,7 @@ Exit: if (pvMark) { - m_pTempPool->poolReset( pvMark); + m_tempPool.poolReset( pvMark); } // Restore the CDL table entry to point to the @@ -1940,7 +1903,7 @@ Desc: Get a child node for current traversal node. ****************************************************************************/ FSTATIC RCODE kyFindChildNode( F_Db * pDb, - IF_Pool * pPool, + F_Pool * pPool, NODE_TRAV ** ppTrav, FLMBOOL * pbGotChild, FLMBOOL * pbHadRepeatingSib) @@ -2543,7 +2506,7 @@ RCODE F_Db::genIndexKeys( // match what we have in the index definition, then this node // is irrelevant to generating keys in this index. - if (RC_BAD( rc = m_pTempPool->poolCalloc( sizeof( ANCHOR_NODE), + if (RC_BAD( rc = m_tempPool.poolCalloc( sizeof( ANCHOR_NODE), (void **)&pAnchorNode))) { goto Exit; @@ -2611,7 +2574,7 @@ RCODE F_Db::genIndexKeys( } } - if (RC_BAD( rc = m_pTempPool->poolCalloc( sizeof( ANCHOR_NODE), + if (RC_BAD( rc = m_tempPool.poolCalloc( sizeof( ANCHOR_NODE), (void **)&pAnchorNode))) { goto Exit; @@ -2627,7 +2590,7 @@ RCODE F_Db::genIndexKeys( // Allocate a CDL table for the index. - if (RC_BAD( rc = m_pTempPool->poolCalloc( sizeof( CDL_HDR) * + if (RC_BAD( rc = m_tempPool.poolCalloc( sizeof( CDL_HDR) * pIxd->uiNumIcds, (void **)&pCdlTbl))) { goto Exit; @@ -2635,7 +2598,7 @@ RCODE F_Db::genIndexKeys( // Create a traversal node for the root node we arrived at. - if (RC_BAD( rc = m_pTempPool->poolCalloc( sizeof( NODE_TRAV), + if (RC_BAD( rc = m_tempPool.poolCalloc( sizeof( NODE_TRAV), (void **)&pTrav))) { goto Exit; @@ -2834,7 +2797,7 @@ Get_First_Attribute: } else { - if (RC_BAD( rc = m_pTempPool->poolAlloc( sizeof( CDL), + if (RC_BAD( rc = m_tempPool.poolAlloc( sizeof( CDL), (void **)&pCdl))) { goto Exit; @@ -2853,7 +2816,7 @@ Get_First_Attribute: pChildIcd = pTrav->pIcd->pFirstChild; while (pChildIcd) { - if (RC_BAD( rc = m_pTempPool->poolAlloc( + if (RC_BAD( rc = m_tempPool.poolAlloc( sizeof( CDL), (void **)&pCdl))) { goto Exit; @@ -2872,7 +2835,7 @@ Next_Node: if (pTrav->bTraverseChildren) { bInNodeSubtree = pTrav->bInNodeSubtree; - if (RC_BAD( rc = kyFindChildNode( this, m_pTempPool, + if (RC_BAD( rc = kyFindChildNode( this, &m_tempPool, &pTrav, &bGotNode, &bHadRepeatingSib))) { goto Exit; @@ -3210,7 +3173,7 @@ RCODE F_Db::updateIndexKeys( // The node may be indexed so we need to process the ICD list - pvMark = m_pTempPool->poolMark(); + pvMark = m_tempPool.poolMark(); bIsIndexed = TRUE; ui64DocumentID = pNode->getDocumentId(); @@ -3293,7 +3256,7 @@ RCODE F_Db::updateIndexKeys( Next_Index: - m_pTempPool->poolReset( pvMark); + m_tempPool.poolReset( pvMark); if ((pIcd = pIcd->pNextInChain) == NULL) { if (!bIsRoot || uiIcdDictNum == ELM_ROOT_TAG) @@ -3315,7 +3278,7 @@ Exit: if( pvMark) { - m_pTempPool->poolReset( pvMark); + m_tempPool.poolReset( pvMark); } if (pNode) diff --git a/xflaim/src/kyqsort.cpp b/xflaim/src/kyqsort.cpp index 83d7088..24485af 100644 --- a/xflaim/src/kyqsort.cpp +++ b/xflaim/src/kyqsort.cpp @@ -244,11 +244,11 @@ FSTATIC RCODE ixKeyGetUnicode( FLMBYTE * pucData; FLMUINT uiDataLen; FLMUINT uiDummy; - void * pvBuffer; if( pOldNodeList->findNodeInList( eNodeType, uiCollection, ui64NodeId, pIcd->uiDictNum, &pucData, &uiDataLen, &uiDummy)) { + void * pvBuffer = NULL; // Allocate the space needed. @@ -341,11 +341,11 @@ FSTATIC RCODE ixKeyGetBinary( FLMBYTE * pucData; FLMUINT uiDataLen; FLMUINT uiDummy; - void * pvBuffer; if( pOldNodeList->findNodeInList( eNodeType, uiCollection, ui64NodeId, pIcd->uiDictNum, &pucData, &uiDataLen, &uiDummy)) { + void * pvBuffer = NULL; // Allocate the space needed. diff --git a/xflaim/src/kyunlock.cpp b/xflaim/src/kyunlock.cpp index e7cbe08..8b378df 100644 --- a/xflaim/src/kyunlock.cpp +++ b/xflaim/src/kyunlock.cpp @@ -59,19 +59,17 @@ RCODE F_Db::krefCntrlCheck( void) if (m_eTransType == XFLM_UPDATE_TRANS) { - m_pKrefPool = m_pDatabase->m_pKrefPool; - m_pKrefPool->AddRef(); + m_pKrefPool = &m_pDatabase->m_krefPool; m_bReuseKrefPool = TRUE; m_pKrefPool->poolReset( NULL, TRUE); } else { - m_pKrefPool = m_pTmpKrefPool; - m_pKrefPool->AddRef(); - + m_tmpKrefPool.poolFree(); + m_tmpKrefPool.poolInit( DEFAULT_KREF_POOL_BLOCK_SIZE); + m_pKrefPool = &m_tmpKrefPool; m_bReuseKrefPool = FALSE; - m_pKrefPool->poolInit( DEFAULT_KREF_POOL_BLOCK_SIZE); } if( !m_pKrefTbl) @@ -121,9 +119,8 @@ void F_Db::krefCntrlFree( void) else { m_pKrefPool->poolFree(); + m_pKrefPool->poolInit( DEFAULT_KREF_POOL_BLOCK_SIZE); } - - m_pKrefPool->Release(); m_pKrefPool = NULL; if( m_pKrefTbl && m_uiKrefTblSize != DEFAULT_KREF_TBL_SIZE) diff --git a/xflaim/src/xflaim.h b/xflaim/src/xflaim.h index 07aa593..f3a4bf3 100644 --- a/xflaim/src/xflaim.h +++ b/xflaim/src/xflaim.h @@ -44,8 +44,6 @@ flminterface IF_ResultSet; flminterface IF_Query; flminterface IF_ThreadInfo; - flminterface IF_Pool; - flminterface IF_DynaBuf; flminterface IF_NodeInfo; flminterface IF_BTreeInfo; @@ -2336,12 +2334,6 @@ FLMUINT * puiMetaphone, FLMUINT * puiAltMetaphone = NULL) = 0; - /** - * @brief Return an IF_Pool object for memory allocations - */ - virtual RCODE FLMAPI createMemoryPool( - IF_Pool ** ppPool) = 0; - /** * @brief Compares two UTF-8 strings */ @@ -3053,7 +3045,7 @@ virtual RCODE FLMAPI getUnicode( IF_Db * pDb, - IF_DynaBuf * pDynaBuf) = 0; + F_DynaBuf * pDynaBuf) = 0; virtual RCODE FLMAPI getUTF8( IF_Db * pDb, @@ -3070,7 +3062,7 @@ virtual RCODE FLMAPI getUTF8( IF_Db * pDb, - IF_DynaBuf * pDynaBuf) = 0; + F_DynaBuf * pDynaBuf) = 0; virtual RCODE FLMAPI getBinary( IF_Db * pDb, @@ -3081,7 +3073,7 @@ virtual RCODE FLMAPI getBinary( IF_Db * pDb, - IF_DynaBuf * pBuffer) = 0; + F_DynaBuf * pBuffer) = 0; virtual RCODE FLMAPI getAttributeValueUINT32( IF_Db * pDb, @@ -3154,7 +3146,7 @@ virtual RCODE FLMAPI getAttributeValueUnicode( IF_Db * pDb, FLMUINT uiAttrNameId, - IF_DynaBuf * pDynaBuf) = 0; + F_DynaBuf * pDynaBuf) = 0; virtual RCODE FLMAPI getAttributeValueUTF8( IF_Db * pDb, @@ -3172,7 +3164,7 @@ virtual RCODE FLMAPI getAttributeValueUTF8( IF_Db * pDb, FLMUINT uiAttrNameId, - IF_DynaBuf * pDynaBuf) = 0; + F_DynaBuf * pDynaBuf) = 0; virtual RCODE FLMAPI getAttributeValueBinary( IF_Db * pDb, @@ -3184,7 +3176,7 @@ virtual RCODE FLMAPI getAttributeValueBinary( IF_Db * pDb, FLMUINT uiAttrNameId, - IF_DynaBuf * pDynaBuf) = 0; + F_DynaBuf * pDynaBuf) = 0; virtual RCODE FLMAPI setUINT( IF_Db * pDb, @@ -3568,7 +3560,7 @@ virtual RCODE FLMAPI getUnicode( FLMUINT uiElementNumber, - IF_DynaBuf * pBuffer) = 0; + F_DynaBuf * pBuffer) = 0; virtual RCODE FLMAPI getUTF8( FLMUINT uiElementNumber, @@ -4074,7 +4066,7 @@ eValTypes * peValType, FLMBOOL * pbLastValue, void * pvVal, - IF_DynaBuf * pDynaBuf = NULL) = 0; + F_DynaBuf * pDynaBuf = NULL) = 0; virtual RCODE FLMAPI cloneSelf( IF_QueryValFunc ** ppNewObj) = 0; diff --git a/xflaim/util/checkdb.cpp b/xflaim/util/checkdb.cpp index e3f7f19..0a67966 100644 --- a/xflaim/util/checkdb.cpp +++ b/xflaim/util/checkdb.cpp @@ -246,9 +246,10 @@ extern "C" int main( int iArgC, char ** ppszArgV) { - int iResCode = 0; - IF_Pool * pLogPool = NULL; + int iResCode = 0; + F_Pool logPool; + logPool.poolInit( 1024); gv_bBatchMode = FALSE; gv_bShutdown = FALSE; gv_bRunning = TRUE; @@ -277,15 +278,7 @@ extern "C" int main( WpsScrClr( 0, 0); WpsScrSize( NULL, &gv_uiMaxRow); - if( RC_BAD( FlmAllocPool( &pLogPool))) - { - WpsStrOut( "\nCould not create pool.\n"); - goto Exit; - } - - pLogPool->poolInit( 1024); - - if (RC_BAD( pLogPool->poolAlloc( MAX_LOG_BUFF, (void **)&gv_pszLogBuffer))) + if (RC_BAD( logPool.poolAlloc( MAX_LOG_BUFF, (void **)&gv_pszLogBuffer))) { WpsStrOut( "\nFailed to allocatae memory pool\n"); goto Exit; @@ -299,8 +292,7 @@ extern "C" int main( } } - pLogPool->Release(); - pLogPool = NULL; + logPool.poolReset( NULL); if( (gv_bPauseBeforeExiting) && (!gv_bShutdown)) { @@ -334,11 +326,8 @@ Exit: { gv_pDbInfo->Release(); } - - if( pLogPool) - { - pLogPool->Release(); - } + + logPool.poolFree(); WpsExit(); diff --git a/xflaim/util/fshell.cpp b/xflaim/util/fshell.cpp index df0542d..528ffbd 100644 --- a/xflaim/util/fshell.cpp +++ b/xflaim/util/fshell.cpp @@ -228,7 +228,7 @@ public: FLMUINT m_uiAttrListSize; FLMUINT m_uiNumAttrs; F_NodeInfo m_nodeInfo; - IF_Pool * m_pPool; + F_Pool m_pool; }; // Local prototypes @@ -684,15 +684,9 @@ Desc: *****************************************************************************/ FlmShell::FlmShell( void) : FlmThreadContext() { - m_pHistPool = NULL; - m_pArgPool = NULL; + m_histPool.poolInit( 512); + m_argPool.poolInit( 512); - FlmAllocPool( &m_pHistPool); - FlmAllocPool( &m_pArgPool); - - m_pHistPool->poolInit( 512); - m_pArgPool->poolInit( 512); - f_memset( m_DbList, 0, MAX_SHELL_OPEN_DB * sizeof( IF_Db *)); m_pTitleWin = NULL; m_iCurrArgC = 0; @@ -711,15 +705,8 @@ FlmShell::~FlmShell( void) { FLMUINT uiLoop; - if( m_pHistPool) - { - m_pHistPool->Release(); - } - - if( m_pArgPool) - { - m_pArgPool->Release(); - } + m_histPool.poolFree(); + m_argPool.poolFree(); // Free the command objects. @@ -1144,7 +1131,7 @@ RCODE FlmShell::parseCmdLine( FlmParse Parser; RCODE rc = NE_XFLM_OK; - m_pArgPool->poolReset( NULL); + m_argPool.poolReset( NULL); m_iCurrArgC = 0; m_ppCurrArgV = NULL; m_pszOutputFile = NULL; @@ -1155,7 +1142,7 @@ RCODE FlmShell::parseCmdLine( uiArgCount++; } - if (RC_BAD( rc = m_pArgPool->poolCalloc( uiArgCount * sizeof( char *), + if (RC_BAD( rc = m_argPool.poolCalloc( uiArgCount * sizeof( char *), (void **)&m_ppCurrArgV))) { goto Exit; @@ -1176,7 +1163,7 @@ RCODE FlmShell::parseCmdLine( uiTokenLen = f_strlen( pszCurrToken); if (!bQuoted && uiTokenLen >= 2 && *pszCurrToken == '>' && !m_pszOutputFile) { - if (RC_BAD( rc = m_pArgPool->poolCalloc( uiTokenLen, + if (RC_BAD( rc = m_argPool.poolCalloc( uiTokenLen, (void **)&m_pszOutputFile))) { goto Exit; @@ -1185,7 +1172,7 @@ RCODE FlmShell::parseCmdLine( } else { - if (RC_BAD( rc = m_pArgPool->poolCalloc( uiTokenLen + 1, + if (RC_BAD( rc = m_argPool.poolCalloc( uiTokenLen + 1, (void **)&m_ppCurrArgV [uiCurrToken]))) { goto Exit; @@ -1346,7 +1333,6 @@ RCODE FlmShell::executeCmdLine( void) { FLMUINT uiMeta; FLMUINT uiAltMeta; - RCODE tmpRc; bValidCommand = TRUE; if( m_iCurrArgC != 2) @@ -1366,29 +1352,23 @@ RCODE FlmShell::executeCmdLine( void) pBufIStream->open( m_ppCurrArgV[ 1], f_strlen( m_ppCurrArgV[ 1])); for( ;;) { + RCODE tmpRc; + if( RC_BAD( tmpRc = f_getNextMetaphone( pBufIStream, &uiMeta, &uiAltMeta))) { - if( tmpRc == NE_XFLM_EOF_HIT) + if( tmpRc != NE_XFLM_EOF_HIT) { - tmpRc = NE_XFLM_OK; - break; + con_printf( "Error: 0x%04X\n", tmpRc); } - - goto MetaExit; + break; } - con_printf( "Meta = 0x%04X, AltMeta = 0x%04X\n", uiMeta, uiAltMeta); } MetaExit: - if( RC_BAD( tmpRc)) - { - con_printf( "Error: 0x%04X\n", tmpRc); - } - if( pBufIStream) { pBufIStream->close(); @@ -5183,17 +5163,14 @@ RCODE importXmlFiles( FLMBOOL bTransActive = FALSE; IF_DOMNode * pRoot = NULL; IF_DOMNode * pSource = NULL; - IF_Pool * pPool = NULL; + F_Pool pool; IF_PosIStream * pFileIStream = NULL; FLMBOOL bUseSafeMode = FALSE; char szErrorString[ MAX_IMPORT_ERROR_STRING + 1]; FLMUINT uiIndentCount = 0; FLMUINT uiNewErrLineOffset = 0; - if( RC_BAD( rc = FlmAllocPool( &pPool, 256))) - { - goto Exit; - } + pool.poolInit( 256); RetryLoad: @@ -5205,7 +5182,7 @@ RetryLoad: } flmAssert( !bTransActive); - pPool->poolReset( NULL); + pool.poolReset( NULL); if( f_getFileSysPtr()->isDir( pszPath)) { @@ -5222,7 +5199,7 @@ RetryLoad: for( ;;) { - pPool->poolReset( NULL); + pool.poolReset( NULL); if( pWin && RC_OK( FTXWinTestKB( pWin))) { FLMUINT uiChar; @@ -5450,10 +5427,7 @@ Exit: pDb->transAbort(); } - if( pPool) - { - pPool->Release(); - } + pool.poolFree(); return( rc); } @@ -6515,8 +6489,7 @@ Entry_Info::Entry_Info() m_uiAttrListSize = 0; m_uiNumAttrs = 0; - m_pPool = NULL; - FlmAllocPool( &m_pPool, 512); + m_pool.poolInit( 512); } /**************************************************************************** @@ -6528,11 +6501,7 @@ Entry_Info::~Entry_Info() { f_free( &m_pAttrList); } - - if( m_pPool) - { - m_pPool->Release(); - } + m_pool.poolFree(); } /**************************************************************************** @@ -6882,7 +6851,7 @@ RCODE Entry_Info::getDirAttrInfo( goto Exit; } uiNameSize++; - if (RC_BAD( rc = m_pPool->poolAlloc( uiNameSize, + if (RC_BAD( rc = m_pool.poolAlloc( uiNameSize, (void **)&pAttrNodeInfo->pszAttrName))) { goto Exit; diff --git a/xflaim/util/fshell.h b/xflaim/util/fshell.h index f9c4acb..2df44eb 100644 --- a/xflaim/util/fshell.h +++ b/xflaim/util/fshell.h @@ -239,8 +239,8 @@ private: FlmSharedContext * m_pSharedContext; FTX_WINDOW * m_pTitleWin; IF_Db * m_DbList[ MAX_SHELL_OPEN_DB]; - IF_Pool * m_pHistPool; - IF_Pool * m_pArgPool; + F_Pool m_histPool; + F_Pool m_argPool; FLMINT m_iCurrArgC; char ** m_ppCurrArgV; char * m_pszOutputFile; diff --git a/xflaim/util/rebuild.cpp b/xflaim/util/rebuild.cpp index e3cef82..798a495 100644 --- a/xflaim/util/rebuild.cpp +++ b/xflaim/util/rebuild.cpp @@ -179,8 +179,9 @@ extern "C" int main( char ** ppszArgV) { int iRetCode = 0; - IF_Pool * pLogPool = NULL; + F_Pool logPool; + logPool.poolInit( 1024); gv_bBatchMode = FALSE; gv_bRunning = TRUE; @@ -200,14 +201,7 @@ extern "C" int main( WpsInit( 0xFFFF, 0xFFFF, "XFLAIM Database Rebuild"); WpsOptimize(); - if( RC_BAD( FlmAllocPool( &pLogPool))) - { - goto Exit; - } - - pLogPool->poolInit( 1024); - - if (RC_BAD( pLogPool->poolAlloc( MAX_LOG_BUFF, (void **)&gv_pszLogBuffer))) + if (RC_BAD( logPool.poolAlloc( MAX_LOG_BUFF, (void **)&gv_pszLogBuffer))) { WpsStrOut( "\nCould not allocate log buffer\n"); @@ -221,8 +215,6 @@ extern "C" int main( } } - pLogPool->poolFree(); - Exit: if (gv_bPauseBeforeExiting && !gv_bShutdown) @@ -243,10 +235,7 @@ Exit: } } - if( pLogPool) - { - pLogPool->Release(); - } + logPool.poolFree(); WpsExit(); diff --git a/xflaim/util/view.cpp b/xflaim/util/view.cpp index 8bcadca..fcaedc3 100644 --- a/xflaim/util/view.cpp +++ b/xflaim/util/view.cpp @@ -270,8 +270,9 @@ int __cdecl main( uiArg++; } - if( RC_BAD( rc = FlmAllocPool( &gv_pViewPool))) + if( (gv_pViewPool = f_new F_Pool) == NULL) { + rc = RC_SET( NE_XFLM_MEM); goto Exit; } diff --git a/xflaim/util/view.h b/xflaim/util/view.h index 0aec1d3..4007d63 100644 --- a/xflaim/util/view.h +++ b/xflaim/util/view.h @@ -464,7 +464,7 @@ EXTERN FLMUINT gv_uiViewSearchLfNum; EXTERN FLMUINT gv_uiViewSearchLfType; EXTERN FLMBYTE gv_ucViewSearchKey[ XFLM_MAX_KEY_SIZE]; EXTERN FLMUINT gv_uiViewSearchKeyLen; -EXTERN IF_Pool * gv_pViewPool; +EXTERN F_Pool * gv_pViewPool; EXTERN FLMUINT gv_uiViewTopRow; EXTERN FLMUINT gv_uiViewBottomRow; EXTERN F_TMSTAMP gv_ViewLastTime;