44 lines
1.4 KiB
C++
44 lines
1.4 KiB
C++
#include <as68hc11/cacheblk.hpp>
|
|
#include <as68hc11/psymbolc.hpp>
|
|
|
|
void CacheBlock::insert(Block<ParseSymbol> &parseSymbols)
|
|
{
|
|
for(int itemIndex=0;itemIndex<parseSymbols.size();itemIndex++)insert(parseSymbols[itemIndex]);
|
|
}
|
|
|
|
void CacheBlock::remove(const ParseSymbol &parseSymbol)
|
|
{
|
|
ParseSymbolCount parseSymbolCount(parseSymbol);
|
|
SmartPointer<ParseSymbolCount> 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<ParseSymbolCount> parseSymbolNodePtr;
|
|
if(!searchItem(parseSymbolCount,parseSymbolNodePtr))return FALSE;
|
|
return parseSymbolNodePtr->refCount();
|
|
}
|
|
|
|
void CacheBlock::insert(const ParseSymbol &parseSymbol)
|
|
{
|
|
ParseSymbolCount parseSymbolCount(parseSymbol);
|
|
SmartPointer<ParseSymbolCount> parseSymbolNodePtr;
|
|
if(!searchItem(parseSymbolCount,parseSymbolNodePtr))
|
|
{
|
|
parseSymbolCount.refCount(1);
|
|
BTree<ParseSymbolCount>::insert(parseSymbolCount);
|
|
}
|
|
else parseSymbolNodePtr->refCount(parseSymbolNodePtr->refCount()+1);
|
|
}
|
|
|
|
void CacheBlock::remove(Block<ParseSymbol> &parseSymbols)
|
|
{
|
|
for(int itemIndex=0;itemIndex<parseSymbols.size();itemIndex++)remove(parseSymbols[itemIndex]);
|
|
}
|
|
|