#if !defined(_INLINE)
static char cvsid[] = "@(#)$Id: DictKeyPosition.cpp,v 1.3 1999/05/22 13:00:54 philogelos Exp $";
static char debugFileId[] = __FILE__;
#endif
#include "containers/dicts/DictKeyPosition.hpp"
#include "containers/dicts/Dictionary.hpp"
#include "String.hpp"
#include "LinkManager.hpp"
#include "Debug.hpp"
DictKeyPosition::DictKeyPosition( Dictionary *aDict ) :
MutablePositionAdapter( aDict )
{
key = ( DictKey * ) nil;
}
DictKeyPosition::~DictKeyPosition()
{
if( key != ( DictKey * ) nil )
{
LinkManager::free( this, key );
}
}
void DictKeyPosition::setKey( DictKey *aKey )
{
LinkManager::move( this, key, aKey );
key = aKey;
}
DictKey *DictKeyPosition::getKey() const
{
return key;
}
Dictionary *DictKeyPosition::getDictionary() const
{
Dictionary *result;
result = DCAST( getContainer(), Dictionary );
test_( result != ( Dictionary * ) NIL );
return result;
}
Top *DictKeyPosition::setValue( Top *aNewValue )
{
preC_( isValid() );
return( getDictionary() -> setValueAtKey( getKey(), aNewValue ) );
}
boolean DictKeyPosition::isValid() const
{
return( getDictionary() -> isSuchKey( getKey() ) );
}
Top *DictKeyPosition::getValue() const
{
preC_( isValid() );
return( getDictionary() -> getValueAtKey( getKey() ) );
}
boolean DictKeyPosition::equals( const Top *anOther ) const
{
if( DCAST( anOther, DictKeyPosition ) == ( DictKeyPosition * ) NIL )
{
return false;
}
return( MutablePositionAdapter::equals( anOther ) &&
( getKey() -> equals
( DCAST( anOther, DictKeyPosition ) -> getKey() ) ) );
}
Top *DictKeyPosition::clone() const
{
DictKeyPosition *result;
result = new DictKeyPosition( getDictionary() );
result -> setKey( getKey() );
return result;
}
String DictKeyPosition::getClassName() const
{
return "DictKeyPosition";
}
#if defined(_INLINE)
#include "../src/Debug.ipp"
#endif