// /*-------------------------------------------------------------------*\
// | Concrete Template : Stack_Kernel_C
// \*-------------------------------------------------------------------*/
#ifndef CT_STACK_KERNEL_C
#define CT_STACK_KERNEL_C 1
///---------------------------------------------------------------------
/// Global Context -----------------------------------------------------
///---------------------------------------------------------------------
/*!
#include "AT/Stack/Kernel.h"
!*/
///---------------------------------------------------------------------
/// Interface ----------------------------------------------------------
///---------------------------------------------------------------------
concrete_template <
concrete_instance class Item,
concrete_instance class Stack_Base
/*!
implements
abstract_instance Stack_Kernel <Item>
!*/
>
class Stack_Kernel_C :
checks
concrete_instance Stack_Base
{
public:
procedure_body Pop (
produces Item& x
)
{
assert (self.Length () > 0,
"self /= empty_string");
self.Stack_Base::Pop (x);
}
function_body Item& operator [] (
preserves Accessor_Position& current
)
{
assert (self.Length () > 0,
"self /= empty_string");
return self.Stack_Base::operator [] (current);
}
};
#endif // CT_STACK_KERNEL_C
Last modified: Thu Jan 11 17:05:57 EST 2007