82
81
// does not check any argument types etc. -> semantics!
83
82
virtual PCE_Type type () const = 0;
84
// return a bit mask of join point types that could match; others can't!
85
int possible_types () const { return (int)_possible_types; }
85
87
// run a semantic analysis (e.g. check types)
86
88
virtual void semantics (ErrorStream &err, PointCutContext &context) = 0;
98
100
PointCutExpr *_arg;
100
102
PCE_SingleArg (PointCutExpr *arg) : _arg (arg) {}
101
104
virtual int args () const { return 1; }
102
105
virtual PointCutExpr *arg (int i) const { return (i == 0) ? _arg : 0; }
103
bool check_derived (CClassInfo *cls, CFunctionInfo *func,
104
PointCutContext &context, Binding &binding, Condition &cond);
105
bool check_base (CClassInfo *cls, CFunctionInfo *func,
106
PointCutContext &context, Binding &binding, Condition &cond);
107
bool check_derived_class (JPL_Class &cls,
108
PointCutContext &context, Binding &binding, Condition &cond);
109
bool check_derived_func (JPL_Class &cls, JPL_Function &func,
110
PointCutContext &context, Binding &binding, Condition &cond);
111
bool check_base_class (JPL_Class &cls, PointCutContext &context,
112
Binding &binding, Condition &cond);
113
bool check_base_func (JPL_Class &cls, JPL_Function &func,
114
PointCutContext &context, Binding &binding, Condition &cond);
115
bool check_scopes (JPL_Name *scope,
116
PointCutContext &context, Binding &binding, Condition &cond);
107
118
virtual void mangle_type_check (ostream &out) {
109
120
_arg->mangle_type_check (out);
390
401
class PCE_Match : public PointCutExpr {
391
402
MatchExpr _match_expr;
395
PCE_Match (const char *str) : _filter (str), _dstr (str) {}
405
PCE_Match (const char *str) : _str (str) {}
396
406
virtual ~PCE_Match () {}
397
407
virtual int args () const { return 0; }
398
408
virtual PointCutExpr *arg (int) const { return 0; }