diff options
author | clean | 2000-07-12 14:59:46 +0000 |
---|---|---|
committer | clean | 2000-07-12 14:59:46 +0000 |
commit | 90461e5831717920426c9c1d7c861a3724f89715 (patch) | |
tree | 59d48b852f0adce522157ff7c27e24b759561b0d /backendC/CleanCompilerSources/overloading.h | |
parent | changes to avoid bug in module refmark when compiling compiler with itself (diff) |
clean 1.3.3 backend again again
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@189 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'backendC/CleanCompilerSources/overloading.h')
-rw-r--r-- | backendC/CleanCompilerSources/overloading.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/backendC/CleanCompilerSources/overloading.h b/backendC/CleanCompilerSources/overloading.h new file mode 100644 index 0000000..c8113d5 --- /dev/null +++ b/backendC/CleanCompilerSources/overloading.h @@ -0,0 +1,103 @@ +/* + + Version 1.0 08/25/1994 + + Author: Sjaak Smetsers + +*/ + +/* + +typedef struct member_descriptor +{ + SymbDef md_class; + Symbol md_rule; + +} * MemberDescriptor; + +typedef struct member_item +{ + Bool mi_is_class; + union + { Overloaded mi_u_rule; + SymbDef mi_u_class; + } mi_union; + + struct member_item * mi_next; + +} * MemberItems; + +#define mi_rule mi_union.mi_u_rule +#define mi_class mi_union.mi_u_class + +*/ + +/* + Global variables +*/ + +extern unsigned NrOfOverloadedTypeVars, NrOfOverloadedRules, NrOfUntypedImpRules, + NrOfTypeClasses; + + +/* + Global functions +*/ + +extern int LengthOfPolyList (PolyList list); + +extern PolyList NewPolyListElem (void *elem, PolyList next, HeapDescr hd); + +extern Bool IsSubClass (SymbolList sub_tree, SymbolList whole_list); + +extern void DetermineClassesOfOverloadedTypeVariables (struct type_cell * type_inst); + +extern Bool TryToBindOverloadedTypeVariables (Node appl_node, SymbolList class_symbols, struct type_cell * type_inst); + +extern void CheckInstancesOfTypeClasses (Symbol symbs); + +extern void ConvertTypeClasses (void); + +extern void ConvertTypeContexts (TypeContext type_cont, struct type_cell * typeargs []); + +extern void SetOverloadedTypeVars (int over_arity, TypeContext type_cont, struct type_cell * over_vars []); + +extern void DetermineClassNumber (SymbDef class_symb); + +extern ClassInstance RetrieveSpecificInstance (ClassDefinition class, struct type_cell * inst_type); + +extern SymbDef CopySymbDef (SymbDef old); + +extern SymbDef NewEmptyRule (Symbol rule_symb, int arity, unsigned line); + +extern Bool EqualTypeClasses (int var_nr1, int var_nr2); + +extern void InitOverloading (void); + +extern void AddToInstanceList (ClassInstance class_instance, ClassDefinition class_def); + +extern FieldList RetrieveClassSelector (SymbolList class_symbols, SymbDef class_symbol); + +extern Types DetermineClassRecord (int nr_of_fields); + +extern Bool InstanceIsExported (struct type_cell * inst_types [], struct type_cell * over_vars [], TypeContext type_cont); + +extern struct type_cell * DetermineDefaultInstance (struct type_cell * over_var, Node over_appl_node); + +extern Bool EqualSymbolList (SymbolList class_symbols1, SymbolList class_symbols2); + +extern Bool ClassesHaveAGenericInstance (SymbolList classes); + +extern struct type_cell * DetermineGenericInstance (struct type_cell * over_var); + +extern SymbolList RebuildClassSymbolList (SymbolList class_symbs, void *alloc (SizeT size)); + +#define cTakeIclDef True +#define cDontTakeIclDef False + +extern void InsertSymbolInSymbolList (SymbolList *symbols, SymbDef new_symbol, Bool take_icl_def, void *alloc (SizeT size)); + +extern void ConvertClassSymbolTreeToList (SymbolList symbols, SymbolList * result_list, void *alloc (SizeT size)); + +extern void CreateRuleType (SymbDef icl_def, TypeAlts imp_type); + |