#include #include void CacheBlock::insert(Block &parseSymbols) { for(int itemIndex=0;itemIndex parseSymbolNodePtr; if(!searchItem(parseSymbolCount,parseSymbolNodePtr))return; parseSymbolNodePtr->refCount(parseSymbolNodePtr->refCount()-1); if(parseSymbolNodePtr->refCount()<0)parseSymbolNodePtr->refCount(0); } BOOL CacheBlock::symbolIn(Scan::ScanSymbols scanSymbol) { ParseSymbol parseSymbol(scanSymbol); ParseSymbolCount parseSymbolCount(parseSymbol); SmartPointer parseSymbolNodePtr; if(!searchItem(parseSymbolCount,parseSymbolNodePtr))return FALSE; return parseSymbolNodePtr->refCount(); } void CacheBlock::insert(const ParseSymbol &parseSymbol) { ParseSymbolCount parseSymbolCount(parseSymbol); SmartPointer parseSymbolNodePtr; if(!searchItem(parseSymbolCount,parseSymbolNodePtr)) { parseSymbolCount.refCount(1); BTree::insert(parseSymbolCount); } else parseSymbolNodePtr->refCount(parseSymbolNodePtr->refCount()+1); } void CacheBlock::remove(Block &parseSymbols) { for(int itemIndex=0;itemIndex