00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #define sw_cbl_codetree_emethodcall_h
00012
00013 #include
00014
00015 #include
00016
00017 namespace cbl {
00018 namespace codetree {
00019
00020 namespace symbols {
00021 class TMethodSym;
00022 }
00023
00024 namespace expr {
00025
00026
00027 class TMethodCallExpr : public TExpression {
00028 protected:
00029 typedef std::deque TExprList;
00030
00031 private:
00032 symbols::TMethodSym *FMethod;
00033 TExpression *FSelf;
00034 TExprList FArguments;
00035
00036 protected:
00037 TMethodCallExpr(symbols::TModuleSym *AOwner, symbols::TMethodSym *AMethod,
00038 const TExprList& AArguments, TExpression *ASelf = 0);
00039
00040 friend class symbols::TModuleSym;
00041
00042 public:
00043
00044 const symbols::TMethodSym *method() const;
00045
00046
00047 void self(TExpression *);
00048 const TExpression *self() const;
00049
00050
00051 const TExprList& arguments();
00052 void arguments(const TExprList&);
00053
00054
00055 virtual void accept(TExprVisitor&);
00056 };
00057
00058 }
00059 }
00060 }
00061
00062 #endif