#if !defined(_INLINE)
static char cvsid[] = "@(#)$Id: IndexPosition.cpp,v 1.4 1999/05/22 13:00:33 philogelos Exp $";
static char debugFileId[] = __FILE__;
#endif
#include "containers/IndexPosition.hpp"
#include "containers/IndexableContainer.hpp"
#include "String.hpp"
#include "Debug.hpp"
#include "OGuard.hpp"
IndexPosition::IndexPosition( const Index anIndex,
IndexableContainer *aHost ) :
MutablePositionAdapter( aHost ),
index_( anIndex )
{}
IndexPosition::~IndexPosition()
{}
Index IndexPosition::getIndex() const
{
return index_;
}
boolean IndexPosition::isValid () const
{
Container *hostContainer;
hostContainer = getContainer();
return DCAST( hostContainer, IndexableContainer ) ->
isValidIndex( getIndex() );
}
Top *IndexPosition::getValue() const
{
Container *hostContainer;
hostContainer = getContainer();
return DCAST( hostContainer, IndexableContainer ) ->
getAt( getIndex() );
}
Top *IndexPosition::setValue( Top *aNewValue )
{
Container *hostContainer;
hostContainer = getContainer();
return DCAST( hostContainer, IndexableContainer ) ->
setAt( getIndex(), aNewValue );
}
boolean IndexPosition::equals( const Top *anOther ) const
{
OGuard _( anOther, this );
if( DCAST( anOther, IndexPosition ) == null )
{
return false;
}
IndexPosition *other =
DCAST( anOther, IndexPosition );
return ( ( getContainer() == other -> getContainer() ) &&
( getIndex() == other -> getIndex() ) );
}
Top *IndexPosition::clone() const
{
Container *hostContainer;
hostContainer = getContainer();
return new
IndexPosition( getIndex(),
DCAST( hostContainer, IndexableContainer ) );
}
String IndexPosition::getString() const
{
return PositionAdapter::getString() +
" index: " + String( getIndex(), 10 );
}
String IndexPosition::getClassName() const
{
return "IndexPosition";
}
#if defined(_INLINE)
#include "../src/Debug.ipp"
#endif
#if defined(_INLINE)
#include "../src/String.ipp"
#endif