// /*-------------------------------------------------------------------*\
// | Concrete Template : List_Retreat_C
// \*-------------------------------------------------------------------*/
#ifndef CT_LIST_RETREAT_C
#define CT_LIST_RETREAT_C 1
///---------------------------------------------------------------------
/// Global Context -----------------------------------------------------
///---------------------------------------------------------------------
/*!
#include "AT/List/Retreat.h"
!*/
///---------------------------------------------------------------------
/// Interface ----------------------------------------------------------
///---------------------------------------------------------------------
concrete_template <
concrete_instance class Item,
concrete_instance class List_Retreat_Base
/*!
implements
abstract_instance List_Retreat <Item>
!*/
>
class List_Retreat_C :
checks
concrete_instance List_Retreat_Base
{
public:
procedure_body Remove_Right (
produces Item& x
)
{
assert (self.Right_Length () > 0,
"self.right /= empty_string");
self.List_Retreat_Base::Remove_Right (x);
}
function_body Item& operator [] (
preserves Accessor_Position& current
)
{
assert (self.Right_Length () > 0,
"self.right /= empty_string");
return self.List_Retreat_Base::operator [] (current);
}
procedure_body Advance ()
{
assert (self.Right_Length () > 0,
"self.right /= empty_string");
self.List_Retreat_Base::Advance ();
}
procedure_body Retreat ()
{
assert (self.Left_Length () > 0,
"self.left /= empty_string");
self.List_Retreat_Base::Retreat ();
}
};
//----------------------------------------------------------------------
#endif // CT_LIST_RETREAT_C
Last modified: Thu Jan 11 17:05:57 EST 2007