aboutsummaryrefslogtreecommitdiff
path: root/frontend/genericsupport.dcl
blob: e1ec5adcb4095ba8d409f7fc9b8f2eefb1af785f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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