// /*-------------------------------------------------------------------*\
// | Concrete Instance : Sequence_Is_Equal_To_1
// \*-------------------------------------------------------------------*/
#ifndef CT_SEQUENCE_IS_EQUAL_TO_1
#define CT_SEQUENCE_IS_EQUAL_TO_1 1
///------------------------------------------------------------------------
/// Global Context --------------------------------------------------------
///------------------------------------------------------------------------
#include "AT/General/Is_Equal_To.h"
/*!
#include "AT/Sequence/Kernel.h"
!*/
///------------------------------------------------------------------------
/// Interface -------------------------------------------------------------
///------------------------------------------------------------------------
concrete_template <
concrete_instance class Item,
/*!
implements
abstract_instance Is_Equal_To <Item>
!*/
concrete_instance class Sequence_Base
/*!
implements
abstract_instance Sequence_Kernel <Item>
!*/
>
class Sequence_Is_Equal_To_1 :
implements
abstract_instance General_Is_Equal_To <Sequence_Base>,
extends
concrete_instance Sequence_Base
{
public:
function_body Boolean Is_Equal_To (
preserves General_Is_Equal_To <Sequence_Base>& s
)
/*!
decreases
|self|
!*/
{
if (self.Length () != s.Length ())
{
return false;
}
else if (self.Length () == 0)
{
return true;
}
else if (not self[0].Is_Equal_To (s[0]))
{
return false;
}
else
{
object Item x1, x2;
self.Remove (0, x1);
s.Remove (0, x2);
object Boolean rest_are_equal = self.Is_Equal_To (s);
self.Add (0, x1);
s.Add (0, x2);
return rest_are_equal;
}
}
};
#endif // CT_SEQUENCE_IS_EQUAL_TO_1
Last modified: Thu Jan 11 17:05:57 EST 2007