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

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

#ifndef CT_PARTIAL_MAP_KERNEL_4A
#define CT_PARTIAL_MAP_KERNEL_4A 1

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

#include "CT/Partial_Map/Kernel_4.h"
#include "CT/Partial_Map/Kernel_2.h"
#include "CT/Static_Array/Kernel_1.h"
/*!
    #include "AT/General/Is_Equal_To.h"
!*/

///---------------------------------------------------------------------
/// Local Context ------------------------------------------------------
///---------------------------------------------------------------------

concrete_template <
	concrete_instance class D_Item,
	/*!
	    implements
		abstract_instance General_Is_Equal_To <D_Item, D_Item>
	!*/
	concrete_instance class R_Item,
        concrete_instance utility_class D_Item_Hash,
	/*!
            implements
                abstract_instance General_Hash <D_Item>
        !*/           
	Integer_constant local_hash_table_size
	/*!
	    satisfies restriction
	        local_hash_table_size > 0
	!*/
    >
class Partial_Map_Kernel_4a_D_R_Partial_Map :
    specializes
	Partial_Map_Kernel_2 <
		D_Item,
		R_Item,
		D_Item_Hash,
		local_hash_table_size
	    >
{};

//----------------------------------------------------------------------

concrete_template <
	concrete_instance class D_Item,
	/*!
	    implements
		abstract_instance General_Is_Equal_To <D_Item, D_Item>
	!*/
	concrete_instance class R_Item,
        concrete_instance utility_class D_Item_Hash,
	/*!
            implements
                abstract_instance General_Hash <D_Item>
        !*/           
	Integer_constant global_hash_table_size,
	/*!
	    satisfies restriction
	        global_hash_table_size > 0
	!*/
	Integer_constant local_hash_table_size
	/*!
	    satisfies restriction
	        local_hash_table_size > 0
	!*/
    >
class Partial_Map_Kernel_4a_Static_Array_Of_Partial_Map :
    specializes
	Static_Array_Kernel_1 <
		    Partial_Map_Kernel_4a_D_R_Partial_Map <
			    D_Item,
			    R_Item,
			    D_Item_Hash,
			    local_hash_table_size,
			>,
		    0,
		    global_hash_table_size - 1
            >
{};

//----------------------------------------------------------------------

concrete_template <
	concrete_instance class D_Item,
	/*!
	    implements
		abstract_instance General_Is_Equal_To <D_Item, D_Item>
	!*/
	concrete_instance class R_Item,
	concrete_instance utility_class D_Item_Hash,
	/*!
            implements
                abstract_instance General_Hash <D_Item>
        !*/           
	Integer_constant global_hash_table_size,
	/*!
	    satisfies restriction
	        global_hash_table_size > 0
	!*/
	Integer_constant local_hash_table_size
	/*!
	    satisfies restriction
	        local_hash_table_size > 0
	!*/
    >
class Partial_Map_Kernel_4a_Rep :
    specializes
	Representation <
                Partial_Map_Kernel_4a_Static_Array_Of_Partial_Map <
			D_Item,
			R_Item,
			D_Item_Hash,
			global_hash_table_size,
			local_hash_table_size
		    >,
		Integer
            >
{};

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

concrete_template <
	concrete_instance class D_Item,
	/*!
	    implements
		abstract_instance General_Is_Equal_To <D_Item, D_Item>
	!*/
	concrete_instance class R_Item,
	concrete_instance utility_class D_Item_Hash,
	/*!
	    implements
		abstract_instance General_Hash <D_Item>
	!*/	    
	Integer_constant global_hash_table_size,
	/*!
	    satisfies restriction
	        global_hash_table_size > 0
	!*/
	Integer_constant local_hash_table_size
	/*!
	    satisfies restriction
	        local_hash_table_size > 0
	!*/
    >
class Partial_Map_Kernel_4a :
    specializes
	Partial_Map_Kernel_4 <
		D_Item,
                R_Item,
		D_Item_Hash,
		global_hash_table_size,
                Partial_Map_Kernel_4a_D_R_Partial_Map <
			D_Item,
			R_Item,
			D_Item_Hash,
			local_hash_table_size
		    >,
                Partial_Map_Kernel_4a_Static_Array_Of_Partial_Map <
			D_Item,
			R_Item,
			D_Item_Hash,
			global_hash_table_size,
			local_hash_table_size
		    >,
		Partial_Map_Kernel_4a_Rep <
			D_Item,
			R_Item,
			D_Item_Hash,
			local_hash_table_size,
			global_hash_table_size
		    >
	    >
{};

//----------------------------------------------------------------------

#endif // CT_PARTIAL_MAP_KERNEL_4A

Last modified: Thu Dec 17 15:41:29 EST 2009