aboutsummaryrefslogblamecommitdiff
path: root/frontend/genericsupport.dcl
blob: e1ec5adcb4095ba8d409f7fc9b8f2eefb1af785f (plain) (tree)
1
2
3
4
5
6
7
8
                                
             


                                        
                                           


                                   
                                 
 







                                                        








                                                        









                                                        

                                                                                          
                                                                   


                                                                   
                                            










                                                     
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