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

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

#ifndef CT_STATIC_ARRAY_EXCHANGE_AT_C
#define CT_STATIC_ARRAY_EXCHANGE_AT_C 1

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

/*!
    #include "AT/Static_Array/Exchange_At.h"
    #include "AT/Static_Array/Kernel.h"
!*/

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

concrete_template <
	concrete_instance class Item,
	Integer_constant lower,
        Integer_constant upper,
	/*!
	    satisfies restriction
	        lower <= upper
	!*/
	concrete_instance class Static_Array_Exchange_At_Base
	/*!
	    implements
		abstract_instance Static_Array_Exchange_At <Item,
		        lower, upper>,
	    checks
	        abstract_instance Static_Array_Kernel <Item,
		        lower, upper>
	!*/
    >
class Static_Array_Exchange_At_C :
    checks
        concrete_instance Static_Array_Exchange_At_Base
{
public:
    
    procedure_body Exchange_At (
	    preserves Integer i,
	    preserves Integer j
	)
    {
	assert (lower <= i,
		"lower <= i");
	assert (i <= upper,
		"i <= upper");
	assert (lower <= j,
		"lower <= j");
	assert (j <= upper,
		"j <= upper");

	self.Static_Array_Exchange_At_Base::Exchange_At (i, j);
    }

};

#endif // CT_STATIC_ARRAY_EXCHANGE_AT_C

Last modified: Wed Nov 04 15:10:09 EST 2009