diff options
Diffstat (limited to 'libbanshee/points-to/andersen_terms.h')
-rw-r--r-- | libbanshee/points-to/andersen_terms.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/libbanshee/points-to/andersen_terms.h b/libbanshee/points-to/andersen_terms.h new file mode 100644 index 00000000000..b893c573496 --- /dev/null +++ b/libbanshee/points-to/andersen_terms.h @@ -0,0 +1,100 @@ +/* + +DO NOT edit this file + +*/ +#ifndef ANDERSEN_TERMS_H +#define ANDERSEN_TERMS_H +#include <engine/list.h> +#include <stdio.h> +#include <engine/bool.h> + + +typedef struct label_term_* label_term; +typedef struct argterm_* argterm; +typedef struct argterm_field_* argterm_field; +typedef struct aterm_* aterm; + +extern bool flag_merge_projections; +extern bool flag_eliminate_cycles; +DECLARE_LIST(label_term_list,label_term) +label_term label_term_zero(void); +label_term label_term_one(void); +label_term label_term_fresh(const char *name); +label_term label_term_union(label_term_list exprs) ; +label_term label_term_inter(label_term_list exprs) ; +label_term label_term_constant(const char *name) ; +bool label_term_is_constant(label_term e,const char *name); +void label_term_inclusion(label_term e1,label_term e2) ; +void label_term_unify(label_term e1,label_term e2) ; +label_term_list label_term_tlb(label_term e) ; + +void label_term_print(FILE* arg1,label_term arg2) ; +DECLARE_LIST(argterm_map,argterm_field) +argterm_field argterm_make_field(const char *label,aterm expr); +argterm argterm_zero(void); +argterm argterm_one(void); +argterm argterm_abs(void); +argterm argterm_wild(void); +argterm argterm_fresh(const char *name); +argterm argterm_row(argterm_map fields,argterm rest) ; +aterm argterm_extract_field(const char *field_name,argterm row); +argterm argterm_extract_rest(argterm row); +argterm_map argterm_extract_fields(argterm row); +void argterm_inclusion(argterm row1,argterm row2) ; +void argterm_unify(argterm row1,argterm row2) ; +void argterm_print(FILE *f,argterm row) ; + +DECLARE_LIST(aterm_list,aterm) +aterm aterm_zero(void); +aterm aterm_one(void); +aterm aterm_fresh(const char *name); +aterm aterm_union(aterm_list exprs) ; +aterm aterm_inter(aterm_list exprs) ; +aterm aterm_constant(const char *name) ; +bool aterm_is_constant(aterm e,const char *name); +void aterm_inclusion(aterm e1,aterm e2) ; +void aterm_unify(aterm e1,aterm e2) ; +aterm_list aterm_tlb(aterm e) ; + +bool aterm_is_ref(aterm e); +aterm ref(label_term arg1,aterm arg2,aterm arg3) ; +struct ref_decon ref_decon(aterm arg1); +struct ref_decon +{ +label_term f0; +aterm f1; +aterm f2; +}; +label_term ref_proj0(aterm arg1) ; +aterm ref_pat0(label_term arg1) ; +aterm ref_proj1(aterm arg1) ; +aterm ref_pat1(aterm arg1) ; +aterm ref_proj2(aterm arg1) ; +aterm ref_pat2(aterm arg1) ; +bool aterm_is_lam(aterm e); +aterm lam(label_term arg1,argterm arg2,aterm arg3) ; +struct lam_decon lam_decon(aterm arg1); +struct lam_decon +{ +label_term f0; +argterm f1; +aterm f2; +}; +label_term lam_proj0(aterm arg1) ; +aterm lam_pat0(label_term arg1) ; +argterm lam_proj1(aterm arg1) ; +aterm lam_pat1(argterm arg1) ; +aterm lam_proj2(aterm arg1) ; +aterm lam_pat2(aterm arg1) ; +void aterm_print(FILE* arg1,aterm arg2) ; +/* + +Init/reset engine, print constraint graphs + +*/ +void andersen_terms_init(void); +void andersen_terms_reset(void) ; +void andersen_terms_stats(FILE * arg1); +void andersen_terms_print_graph(FILE * arg1); +#endif |