#if !defined(_INLINE)
static char cvsid[] = "@(#)$Id: MutableLayeredContainer.cpp,v 1.3 1999/05/22 13:00:34 philogelos Exp $";
static char debugFileId[] = __FILE__;
#endif
#include "containers/MutableLayeredContainer.hpp"
#include "containers/MutableLayeredPosition.hpp"
#include "containers/MutablePosition.hpp"
#include "LinkManager.hpp"
#include "Debug.hpp"
MutablePositionEnumeration *MutableLayeredContainer::getMutableEnumeration() const
{
return new MutableLayeredEnumeration( ( MutableLayeredContainer * ) this );
}
Container *MutableLayeredContainer::getBaseContainer() const
{
return getBaseMutableContainer();
}
Top *MutableLayeredContainer::setValue( MutablePosition *aPosition,
Top *aValue )
{
preC_( aPosition != ( MutablePosition * ) NULL );
return( aPosition -> setValue( aValue ) );
}
MutablePosition *MutableLayeredContainer::createMutableFromBase
( MutablePosition *aBasePosition )
{
preC_( aBasePosition != ( MutablePosition * ) NULL );
preC_( getBaseContainer() -> isValid( aBasePosition ) );
return new MutableLayeredPosition( this, aBasePosition );
}
boolean MutableLayeredContainer::isEmpty() const
{
return LayeredContainer::isEmpty();
}
PositionEnumeration *MutableLayeredContainer::getEnumeration() const
{
return LayeredContainer::getEnumeration();
}
Index MutableLayeredContainer::getCardinality() const
{
return LayeredContainer::getCardinality();
}
MutableLayeredEnumeration::MutableLayeredEnumeration
( MutableLayeredContainer *aContainer )
{
preC_( aContainer != ( Container * ) NIL );
baseContainer = aContainer;
LinkManager::reg( this, baseContainer );
baseEnum = aContainer ->
getBaseMutableContainer() ->
getMutableEnumeration();
LinkManager::reg( this, baseEnum );
test_( baseEnum != ( MutablePositionEnumeration * ) NIL );
}
MutableLayeredEnumeration::~MutableLayeredEnumeration()
{
LinkManager::free( this, baseEnum );
LinkManager::free( this, baseContainer );
}
MutablePosition *MutableLayeredEnumeration::getNextMutablePosition()
{
return( baseContainer -> createMutableFromBase
( baseEnum -> getNextMutablePosition() ) );
}
boolean MutableLayeredEnumeration::hasMoreElements()
{
return( baseEnum -> hasMoreElements() );
}
#if defined(_INLINE)
#include "../src/Debug.ipp"
#endif