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