definition module genericsupport

import syntax

lookupGenericClassInfo :: 
		!TypeKind 
		!GenericClassInfos	
	-> 	(Optional GenericClassInfo)

addGenericClassInfo :: 
		!GenericClassInfo 
		!GenericClassInfos 
	->	GenericClassInfos

getGenericClassInfo ::
	!(Global Index)
	!TypeKind
	!{#CommonDefs}		
	!*GenericHeap
	-> 		
	( Optional GenericClassInfo
	, !*GenericHeap					
	)
getGenericMember :: 
	!(Global Index) 	// generic
	!TypeKind 			// kind argument
	!{#CommonDefs} 		// modules
	!*GenericHeap
	-> 		
	( Optional (Global Index)
	, !*GenericHeap					
	)

getGenericClass :: 
	!(Global Index) 	// generic
	!TypeKind 			// kind argument
	!{#CommonDefs} 		// modules
	!*GenericHeap
	-> 		
	( Optional (Global Index)
	, !*GenericHeap					
	)


//****************************************************************************************
//	Ident Helpers
//****************************************************************************************
makeIdent 					:: !String -> Ident
postfixIdent 				:: !String !String -> Ident
genericIdentToClassIdent 	:: !String !TypeKind -> Ident
genericIdentToMemberIdent 	:: !String !TypeKind -> Ident
genericIdentToFunIdent 		:: !String !TypeCons -> Ident
kind_to_short_string :: !TypeKind -> {#Char}

field_n_of_GenericTypeDefDescriptor :: !String -> Int
field_n_of_GenericConsDescriptor :: !String -> Int
field_n_of_GenericFieldDescriptor :: !String -> Int
field_n_of_GenericRecordDescriptor :: !String -> Int

field_0_name_of_generic_info :: !Int -> String
field_1_name_of_generic_info :: !Int -> String
field_2_name_of_generic_info :: !Int -> String
field_3_name_of_generic_info :: !Int -> String
field_4_name_of_generic_info :: !Int -> String
field_5_name_of_generic_info :: !Int -> String