definition module StdDynamicTypes import StdMaybe import DefaultElem import EnDecode //1.3 import StdString //3.1 :: DummyModuleID = DummyModuleID // Type :: LibraryInstanceTypeReference = LIT_TypeReference !LibRef !TIO_TypeReference // fst Int is index in cs_library_instances :: LibRef = LibRef !Int // library instance in main dynamic | LibRefViaLazyDynamic !Int !Int !Int // library_instance (w.r.t) dynamic_index type table index type_table_i (follows from previous fields) | LazyLibRef !Int !Int !Int // type redirection table index (w.r.t. dynamic) dynamic_index type table index type_table_i (follows from previous fields) :: TIO_TypeReference = { tio_type_without_definition :: !Maybe String , tio_tr_module_n :: !Int , tio_tr_type_def_n :: !Int } instance DefaultElem TIO_TypeReference instance DefaultElem LibRef instance DefaultElem LibraryInstanceTypeReference COLLECT_AND_RENUMBER_EXTERNAL_TYPE_REFERENCES yes no :== yes; // also change graph_to_string.c; recompile DynamicLinker and dumpDynamic IS_COLLECT_AND_RENUMBER_EXTERNAL_TYPE_REFERENCES :== COLLECT_AND_RENUMBER_EXTERNAL_TYPE_REFERENCES True False; FILE_IDENTIFICATION md5 normal :== md5; IS_NORMAL_FILE_IDENTIFICATION :== FILE_IDENTIFICATION False True; NAME_PREFIXES yes no :== no; SHARING_ACROSS_CONVERSIONS yes no :== no; IS_SHARING_ACROSS_CONVERSIONS :== SHARING_ACROSS_CONVERSIONS True False; // Clean Object Type file (COT) COT_SUPPORT yes no :== no; COMPILE_FOR_COT_SUPPORT :== COT_SUPPORT True False; :: TypeDef` // TIO_TypeDef = { td_id :: !Int //TypeConstructorID , name :: !String , arity :: !Int , args :: ![Int] , rhs :: TypeRhs` }; instance DefaultElem TypeDef` instance EnDecode TypeDef` :: TypeConstructorID // TIO_TypeSymbIdent :== Int :: TypeRhs` = AlgType` [Constructors`] | RecordType` [Field`] StrictnessList` [Int] | Empty` :: Constructors` = Constructor` !String [Type`] StrictnessList` [Int] :: Type` = TypeApp` TypeConstructorID [Type`] StrictnessList` | FuncApp` Type` Type` | TypeVar` !Int | EmptyType` :: StrictnessList` = NotStrict` | Strict` !Int | StrictList` !Int StrictnessList` :: Field` = Field` !String !Type` | EmptyField` :: PredefType = PT_Empty | PT_Int | PT_Char | PT_Real | PT_Bool | PT_Dynamic | PT_File | PT_World | PT__Arrow | PT__List | PT__StrictList | PT__UnboxedList | PT__TailStrictList | PT__StrictTailStrictList | PT__UnboxedTailStrictList | PT__Tuple !Int | PT__LazyArray | PT__StrictArray | PT__UnboxedArray INT_INDEX :== 0 CHAR_INDEX :== 1 REAL_INDEX :== 2 BOOL_INDEX :== 3 DYNAMIC_INDEX :== 4 FILE_INDEX :== 5 WORLD_INDEX :== 6 ARROW_INDEX :== 7 LIST_INDEX :== 8 STRICTLIST_INDEX :== 9 UNBOXEDLIST_INDEX :== 10 TAILSTRICTLIST_INDEX :== 11 STRICTTAILSTRICTLIST_INDEX :== 12 UNBOXEDTAILSTRICTLIST_INDEX :== 13 TUPLE2_INDEX :== 14 TUPLE3_INDEX :== 15 TUPLE4_INDEX :== 16 TUPLE5_INDEX :== 17 TUPLE6_INDEX :== 18 TUPLE7_INDEX :== 19 TUPLE8_INDEX :== 20 TUPLE9_INDEX :== 21 TUPLE10_INDEX :== 22 TUPLE11_INDEX :== 23 TUPLE12_INDEX :== 24 TUPLE13_INDEX :== 25 TUPLE14_INDEX :== 26 TUPLE15_INDEX :== 27 TUPLE16_INDEX :== 28 TUPLE17_INDEX :== 29 TUPLE18_INDEX :== 30 TUPLE19_INDEX :== 31 TUPLE20_INDEX :== 32 TUPLE21_INDEX :== 33 TUPLE22_INDEX :== 34 TUPLE23_INDEX :== 35 TUPLE24_INDEX :== 36 TUPLE25_INDEX :== 37 TUPLE26_INDEX :== 38 TUPLE27_INDEX :== 39 TUPLE28_INDEX :== 40 TUPLE29_INDEX :== 41 TUPLE30_INDEX :== 42 TUPLE31_INDEX :== 43 TUPLE32_INDEX :== 44 LAZYARRAY_INDEX :== 45 STRICTARRAY_INDEX :== 46 UNBOXED_ARRAY_INDEX :== 47 N_PREDEFINED_INDICES :== UNBOXED_ARRAY_INDEX + 1 INDEX_TO_PREDEFINED_TYPE_STRING :== create_string_indices where create_string_indices :: {(String,PredefType)} create_string_indices # string = createArray N_PREDEFINED_INDICES ("",PT_Empty) # string = { string & [INT_INDEX] = ("Int",PT_Int) , [CHAR_INDEX] = ("Char",PT_Char) , [REAL_INDEX] = ("Real",PT_Real) , [BOOL_INDEX] = ("Bool",PT_Bool) , [DYNAMIC_INDEX] = ("Dynamic",PT_Dynamic) , [FILE_INDEX] = ("File",PT_File) , [WORLD_INDEX] = ("World",PT_World) , [ARROW_INDEX] = ("->",PT__Arrow) , [LIST_INDEX] = ("_List",PT__List) , [STRICTLIST_INDEX] = ("_!List",PT__StrictList) , [UNBOXEDLIST_INDEX] = ("_#List",PT__UnboxedList) , [TAILSTRICTLIST_INDEX] = ("_List!",PT__TailStrictList) , [STRICTTAILSTRICTLIST_INDEX] = ("_!List!",PT__StrictTailStrictList) , [UNBOXEDTAILSTRICTLIST_INDEX] = ("_#List!",PT__UnboxedTailStrictList) , [LAZYARRAY_INDEX] = ("_Array",PT__LazyArray) , [STRICTARRAY_INDEX] = ("_!Array",PT__StrictArray) , [UNBOXED_ARRAY_INDEX] = ("_#Array",PT__UnboxedArray) } # string = {string & [tuple_index] = ("_Tuple" +++ toString (tuple_index - TUPLE2_INDEX + 2),PT__Tuple (tuple_index - TUPLE2_INDEX + 2)) \\ tuple_index <- [TUPLE2_INDEX..TUPLE32_INDEX] } = string