00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #define sw_cbl_codetree_defpm_h
00012
00013 #include
00014
00015 namespace cbl {
00016 namespace codetree {
00017 namespace def {
00018
00019 class TClassDef;
00020 class TMethodDef;
00021
00022 template<class T> class TMemberPointerDef : public TCompositeDef {
00023 private:
00024 typedef TCompositeDef base_class;
00025
00026 TClassDef *FBaseClass;
00027
00028 protected:
00029 TMemberPointerDef(symbols::TModuleSym *AOwner, TClassDef *ABaseClass, T *APointer);
00030
00031 friend class symbols::TModuleSym;
00032
00033 public:
00034
00035 virtual unsigned size() const;
00036
00037 const TClassDef *baseClass() const;
00038 };
00039
00040
00041 class TDataMemberPointerDef : public TMemberPointerDef {
00042 private:
00043 typedef TMemberPointerDef base_class;
00044
00045 public:
00046 TDataMemberPointerDef(symbols::TModuleSym *AOwner, TClassDef *ABaseClass, TDef *APointer);
00047
00048
00049 virtual void accept(TDefVisitor&);
00050
00051
00052 virtual TDataMemberPointerDef *clone() const;
00053 };
00054
00055
00056 class TMethodMemberPointerDef : public TMemberPointerDef {
00057 private:
00058 typedef TMemberPointerDef base_class;
00059
00060 public:
00061 TMethodMemberPointerDef(symbols::TModuleSym *AOwner, TClassDef *ABaseClass, TMethodDef *APointer);
00062
00063
00064 virtual void accept(TDefVisitor&);
00065
00066
00067 virtual TMethodMemberPointerDef *clone() const;
00068 };
00069
00070 }
00071 }
00072 }
00073
00074 #endif