#if !defined(_INLINE)
static char cvsid[] = "@(#)$Id$";
static char debugFileId[] = __FILE__;
#endif
#include "algorithms/string/StringFilterAdapter.hpp"
#include "StringBuffer.hpp"
#include "LinkManager.hpp"
#include "OGuard.hpp"
#include "UCSChar.hpp"
#include "Debug.hpp"
StringFilterAdapter::StringFilterAdapter() :
base( ( StringFilter * ) NIL ), counter( 0 ), position( -1 )
{}
StringFilterAdapter::StringFilterAdapter( StringFilter *aBase ) :
base( aBase ), counter( 0 ), position( -1 )
{
if( aBase != ( StringFilter * ) NIL )
{
LinkManager::reg( this, aBase );
}
}
StringFilterAdapter::~StringFilterAdapter()
{
if( base != ( StringFilter * ) NIL )
{
LinkManager::free( this, base );
}
}
void StringFilterAdapter::setBase( StringFilter *aBase )
{
LinkManager::move( this, base, aBase );
base = aBase;
}
StringFilter *StringFilterAdapter::getBase()
{
return base;
}
void StringFilterAdapter::reset()
{
counter = 0;
position = -1;
if( getBase() != ( StringFilter * ) NIL )
{
getBase() -> reset();
}
}
Index StringFilterAdapter::getCounter() const
{
return counter;
}
Index StringFilterAdapter::getPosition()
{
return position;
}
String StringFilterAdapter::asString()
{
reset();
return restAsString();
}
Index StringFilterAdapter::length()
{
reset();
return rest();
}
Index StringFilterAdapter::rest()
{
Index result;
for( result = 0 ; getNext() != ( unichar ) 0 ; ++result )
{}
return result;
}
String StringFilterAdapter::restAsString()
{
StringBuffer result( StringBuffer::defaultLength,
StringBuffer::defaultDelta );
unichar c;
while( ( c = getNext() ) != ( unichar ) 0 )
{
result.add( c );
}
return result.asString();
}
#if defined(_INLINE)
#include "../src/Debug.ipp"
#endif