// /*-------------------------------------------------------------------*\
// | Concrete Template : Queue_Concatenate_1
// \*-------------------------------------------------------------------*/
#ifndef CT_QUEUE_CONCATENATE_1
#define CT_QUEUE_CONCATENATE_1 1
///------------------------------------------------------------------------
/// Global Context --------------------------------------------------------
///------------------------------------------------------------------------
#include "AT/Queue/Concatenate.h"
/*!
#include "AT/Queue/Kernel.h"
!*/
///------------------------------------------------------------------------
/// Interface -------------------------------------------------------------
///------------------------------------------------------------------------
concrete_template <
concrete_instance class Item,
concrete_instance class Queue_Base
/*!
implements
abstract_instance Queue_Kernel <Item>
!*/
>
class Queue_Concatenate_1 :
extends
concrete_instance Queue_Base,
implements
abstract_instance Queue_Concatenate <Item>
{
public:
procedure_body Concatenate (
consumes Queue_Concatenate <Item>& q
)
{
while (q.Length () > 0)
/*!
alters self, q
maintains
self * q = #self * #q
decreases
|q|
!*/
{
object catalyst Item x;
q.Dequeue (x);
self.Enqueue (x);
}
}
};
#endif // CT_QUEUE_CONCATENATE_1
Last modified: Thu Jan 11 17:05:57 EST 2007