ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
action.h
Go to the documentation of this file.
1 
2 #ifndef BDWY_ACTION_H
3 #define BDWY_ACTION_H
4 
5 typedef list< actionAnn * > action_list;
6 typedef action_list::iterator action_list_p;
7 typedef action_list::const_iterator action_list_cp;
8 
9 class callsiteEntry;
10 
11 typedef map< callsiteEntry *, bool > candidate_map;
12 typedef candidate_map::iterator candidate_map_p;
13 
14 
19 class actionAnn : public Ann
20 {
21 public:
22 
23  typedef enum { Inline, Replace } ActionKind;
24 
25 private:
26 
34 
40 
47  stmtNode * _replacement;
48 
62 
63 public:
64 
69 
75  actionAnn(exprAnn * condition, stmtNode * replacement, int line);
76 
79  inline exprAnn * condition() const { return _condition; }
80 
87  virtual void lookup(procedureAnn * procedure,
88  Annotations * annotations);
89 
95  void test(callsiteEntry * callsite,
96  procLocation * where,
97  propertyAnalyzer * property_analyzer);
98 
103  bool is_applicable(callsiteEntry * callsite);
104 
105 
111  stmtNode * generate_replacement(callsiteEntry * callsite,
112  propertyAnalyzer * analyzer,
113  Linker &linker,
114  Annotations * annotations);
115 };
116 
117 #endif /* BDWY_ACTION_H */