Files
Work/as68hc11/backup/CACHEBLK.CPP
2024-08-07 09:12:07 -04:00

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]);
}