Resolve/C++ Catalog
CT/Array/Are_In_Order_At_1.h
Copyright © 2010, Reusable Software Research Group, The Ohio State University

//  /*-------------------------------------------------------------------*\
//  |   Concrete Template : Array_Are_In_Order_At_1
//  \*-------------------------------------------------------------------*/

#ifndef CT_ARRAY_ARE_IN_ORDER_AT_1
#define CT_ARRAY_ARE_IN_ORDER_AT_1 1

///------------------------------------------------------------------------
/// Global Context --------------------------------------------------------
///------------------------------------------------------------------------

#include "AT/Array/Are_In_Order_At.h"

/*!
    #include "AT/Array/Kernel.h"
!*/

///------------------------------------------------------------------------
/// Interface -------------------------------------------------------------
///------------------------------------------------------------------------

concrete_template <
	concrete_instance class Item,
        concrete_instance utility_class Item_Are_In_Order,
	/*!
	    implements
		abstract_instance General_Are_In_Order <Item>
	!*/
	concrete_instance class Array_Base
	/*!
	    implements
		abstract_instance Array_Kernel <Item>
	!*/
    >
class Array_Are_In_Order_At_1 :
    extends
	concrete_instance Array_Base,
    implements
	abstract_instance Array_Are_In_Order_At <Item, Item_Are_In_Order>
{
public:
    
    function_body Boolean Are_In_Order_At (
	    preserves Integer i,
	    preserves Integer j
	)
    {
	object Boolean answer;
    
	if (i == j)
	{
	    answer = true;
	}
	else
	{
	    object catalyst Item temp;
	    temp &= self[i];
	    answer = Item_Are_In_Order::Are_In_Order (temp, self[j]);
	    self[i] &= temp;
	}
	return answer;
    }

};

#endif // CT_ARRAY_ARE_IN_ORDER_AT_1

Last modified: Thu Jan 11 17:05:57 EST 2007