#if !defined(_INLINE)
static char cvsid[] = "@(#)$Id$";
static char debugFileId[] = __FILE__;
#endif
#include "containers/Container.hpp"
#include "containers/LayeredPosition.hpp"
#include "LinkManager.hpp"
#include "String.hpp"
#include "OGuard.hpp"
#include "Debug.hpp"
LayeredPosition::LayeredPosition( Container *aHost, Position *aBasePosition ) :
PositionAdapter( aHost )
{
preC_( aHost != ( Container * ) NULL );
preC_( aBasePosition != ( Position * ) NULL );
position = aBasePosition;
LinkManager::reg( this, position );
}
LayeredPosition::~LayeredPosition()
{
LinkManager::free( this, position );
}
boolean LayeredPosition::isValid() const
{
return( position -> isValid() );
}
Top *LayeredPosition::getValue() const
{
return( position -> getValue() );
}
boolean LayeredPosition::equals( const Top *anOther ) const
{
if( DCAST( anOther, LayeredPosition ) == ( LayeredPosition * ) NULL )
{
return false;
}
else
{
LayeredPosition *other;
other = DCAST( anOther, LayeredPosition );
return( other -> position -> equals( position ) &&
other -> getContainer() -> equals( getContainer() ) );
}
}
Top *LayeredPosition::clone() const
{
return new LayeredPosition( getContainer(), position );
}
String LayeredPosition::toString() const
{
return PositionAdapter::toString() +
" container: " + getContainer() -> toString() +
" position: " + position -> toString();
}
String LayeredPosition::getClassName() const
{
return "LayeredPosition";
}
#if defined(_INLINE)
#include "../src/Debug.ipp"
#endif