diff options
author | johnvg | 2013-04-08 09:16:09 +0000 |
---|---|---|
committer | johnvg | 2013-04-08 09:16:09 +0000 |
commit | 9894d082bd5a0f3c74a2874f9c9a78fd89a089a5 (patch) | |
tree | 9d851f5631f8981893af610d96371b4afd2d1009 /frontend/genericsupport.icl | |
parent | update derive class for deriving generic functions in class context (from iTa... (diff) |
add generic function dependencies for generic function definitions,
add generic case definitions in definition modules for the types used to make the generic representation,
in generic case definitions in definition modules specify what generic info and dependencies are used
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@2227 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/genericsupport.icl')
-rw-r--r-- | frontend/genericsupport.icl | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/frontend/genericsupport.icl b/frontend/genericsupport.icl index 993149d..6ac079b 100644 --- a/frontend/genericsupport.icl +++ b/frontend/genericsupport.icl @@ -1,6 +1,6 @@ implementation module genericsupport -import syntax, checksupport +import syntax getGenericClassInfo :: !(Global Index) @@ -87,7 +87,7 @@ genericIdentToClassIdent id_name kind kind_to_short_string :: !TypeKind -> {#Char} kind_to_short_string KindConst = "s" -kind_to_short_string (KindArrow kinds) = kinds_to_str kinds +++ "s" +kind_to_short_string (KindArrow kinds) = kinds_to_str kinds +++ "s" where kinds_to_str [] = "" kinds_to_str [KindConst:ks] = "s" +++ kinds_to_str ks @@ -105,4 +105,63 @@ where type_cons_to_str (TypeConsBasic bt) = toString bt type_cons_to_str TypeConsArrow = "ARROW" type_cons_to_str (TypeConsVar tv) = tv.tv_ident.id_name -
\ No newline at end of file + +field_n_of_GenericTypeDefDescriptor :: !String -> Int +field_n_of_GenericTypeDefDescriptor "gtd_name" = 0 +field_n_of_GenericTypeDefDescriptor "gtd_arity" = 1 +field_n_of_GenericTypeDefDescriptor "gtd_num_conses" = 2 +field_n_of_GenericTypeDefDescriptor "gtd_conses" = 3 +field_n_of_GenericTypeDefDescriptor _ = -1 + +field_n_of_GenericConsDescriptor :: !String -> Int +field_n_of_GenericConsDescriptor "gcd_name" = 0 +field_n_of_GenericConsDescriptor "gcd_arity" = 1 +field_n_of_GenericConsDescriptor "gcd_prio" = 2 +field_n_of_GenericConsDescriptor "gcd_type_def" = 3 +field_n_of_GenericConsDescriptor "gcd_type" = 4 +field_n_of_GenericConsDescriptor "gcd_index" = 5 +field_n_of_GenericConsDescriptor _ = -1 + +field_n_of_GenericFieldDescriptor :: !String -> Int +field_n_of_GenericFieldDescriptor "gfd_name" = 0 +field_n_of_GenericFieldDescriptor "gfd_index" = 1 +field_n_of_GenericFieldDescriptor "gfd_cons" = 2 +field_n_of_GenericFieldDescriptor _ = -1 + +field_n_of_GenericRecordDescriptor :: !String -> Int +field_n_of_GenericRecordDescriptor "grd_name" = 0 +field_n_of_GenericRecordDescriptor "grd_arity" = 1 +field_n_of_GenericRecordDescriptor "grd_type_arity" = 2 +field_n_of_GenericRecordDescriptor "grd_type" = 3 +field_n_of_GenericRecordDescriptor "grd_fields" = 4 +field_n_of_GenericRecordDescriptor _ = -1 + +field_0_name_of_generic_info :: !Int -> String +field_0_name_of_generic_info 0 = "gtd_name" +field_0_name_of_generic_info 1 = "gcd_name" +field_0_name_of_generic_info 2 = "grd_name" +field_0_name_of_generic_info 3 = "gfd_name" + +field_1_name_of_generic_info :: !Int -> String +field_1_name_of_generic_info 0 = "gtd_arity" +field_1_name_of_generic_info 1 = "gcd_arity" +field_1_name_of_generic_info 2 = "grd_arity" +field_1_name_of_generic_info 3 = "gfd_index" + +field_2_name_of_generic_info :: !Int -> String +field_2_name_of_generic_info 0 = "gtd_num_conses" +field_2_name_of_generic_info 1 = "gcd_prio" +field_2_name_of_generic_info 2 = "grd_type_arity" +field_2_name_of_generic_info 3 = "gfd_cons" + +field_3_name_of_generic_info :: !Int -> String +field_3_name_of_generic_info 0 = "gtd_conses" +field_3_name_of_generic_info 1 = "gcd_type_def" +field_3_name_of_generic_info 2 = "grd_type" + +field_4_name_of_generic_info :: !Int -> String +field_4_name_of_generic_info 1 = "gcd_type" +field_4_name_of_generic_info 2 = "grd_fields" + +field_5_name_of_generic_info :: !Int -> String +field_5_name_of_generic_info 1 = "gcd_index" |