aboutsummaryrefslogtreecommitdiff
path: root/backendC/CleanCompilerSources/statesgen.h
diff options
context:
space:
mode:
Diffstat (limited to 'backendC/CleanCompilerSources/statesgen.h')
-rw-r--r--backendC/CleanCompilerSources/statesgen.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/backendC/CleanCompilerSources/statesgen.h b/backendC/CleanCompilerSources/statesgen.h
new file mode 100644
index 0000000..63c6bdd
--- /dev/null
+++ b/backendC/CleanCompilerSources/statesgen.h
@@ -0,0 +1,32 @@
+
+#define DESTRUCTIVE_RECORD_UPDATES 1
+#define ADD_ARGUMENTS_TO_HIGHER_ORDER_FUNCTIONS
+
+#define IsLazyState(state) ((state).state_type==SimpleState && (state).state_kind>StrictOnA)
+#define IsLazyStateKind(statekind) ((statekind)>StrictOnA)
+
+extern StateS BasicSymbolStates[],LazyState,StrictState;
+extern int FirstStateIsStricter (StateS offered_state,StateS demanded_state);
+extern int FieldArgumentNodeStatesAreStricter (ArgS *offered_args,ArgS *field_args,States record_states);
+extern void ConvertAnnotationToState (Annotation annot, States state);
+extern void SetUnaryState (States state, StateKind kind, ObjectKind object);
+extern Bool HasExternalAnnot (Node node);
+extern void GenerateStatesForRecords (Symbol symbs);
+extern void InitStatesGen (void);
+extern void GenerateStates (ImpRules rules);
+extern void DetermineSharedAndAnnotatedNodes (ImpRules rules,SymbolP *im_symbols_h);
+extern void DetermineStateOfArrayElem (Symbol elemtype, States state);
+extern void ExamineTypesAndLhsOfSymbols (Symbol symbs);
+extern void ImportSymbols (Symbol symbols);
+extern void DetermineStatesOfRootNodeAndDefs (Node root_node,NodeDefs *rootdef,StateS demstate,int local_scope);
+
+extern unsigned next_def_number;
+
+extern void ExamineTypesAndLhsOfSymbolDefinition (SymbDef def);
+extern void ExamineTypesAndLhsOfImpRuleSymbolDefinitionAgain (SymbDef def);
+extern void GenerateStatesForRule (ImpRuleS *rule);
+extern void reset_states_and_ref_count_copies (ImpRuleS *rule);
+extern void DetermineNodeState (Node node);
+extern void ConvertTypeToState (TypeNode type,States state,StateKind kind);
+
+extern int optimise_strict_tuple_result_functions;