ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
unification_ann.h
Go to the documentation of this file.
1 #ifndef UNIFICATION_ANN_H
2 #define UNIFICATION_ANN_H
3 
4 #include "c_breeze.h"
5 #include "unification.h"
6 #include "broadway.h"
7 
8 class UnificationBasedPtr_Ann : public UnificationBasedPtr {
9 private:
11 
12  map<annVariable*,Unify_ECR*> global_var_ecr;
13  map<annVariable*,typeNode*> global_var_type;
14 
15  set<declNode*> fields_from_annotation;
16 
17  UnificationBasedPtr_Ann(Linker &l, Annotations *ann);
18 
19  virtual bool annotation_returns_object(procNode *proc) const;
20  virtual void annotation_call_arg(procNode *, int arg, typeNode*, Unify_ECR *);
21  virtual void annotation_call_arg(procNode *, int arg, typeNode*, Alpha *);
22  virtual void annotation_ret_val(procNode *, Unify_ECR *taoR, unitNode *unit);
23  virtual void annotation_init_global(declNode *global);
24  virtual void annotation_init_globals();
25 
26  void process_struct_rule(annVariable *, declNode *, typeNode *dtype,
27  const structure_list & struct_rules,
28  Unify_ECR *);
29 
30 public:
31 
32  virtual bool isField(declNode *f, bool &from_annotation) const;
33 
34  virtual void mark_alloc(stmtNode *stmt, declNode *source_decl,
35  declNode *target_decl);
36 
37  static UnificationBasedPtr *analyze_all(Linker &, Annotations *ann);
38 };
39 
40 #endif