00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #define sw_cbl_codetree_defrecord_h
00012
00013 #include
00014
00015 namespace cbl {
00016 namespace codetree {
00017
00018 namespace scopes {
00019 class TScope;
00020 }
00021
00022 namespace symbols {
00023 class TSymbol;
00024 class TDataSym;
00025 }
00026
00027 namespace def {
00028
00029
00030 class TRecordDef : public TScopedDef {
00031 private:
00032 unsigned FSize;
00033
00034 void calcSize();
00035
00036 virtual void add(symbols::TSymbol *ASymbol);
00037
00038 protected:
00039 TRecordDef(symbols::TModuleSym *AOwner, scopes::TScope *AParentScope);
00040
00041 friend class symbols::TModuleSym;
00042
00043 public:
00044 TRecordDef(const TRecordDef&);
00045
00046
00047 virtual unsigned size() const;
00048
00049
00050 void add(symbols::TDataSym *ASymbol);
00051
00052
00053 virtual void accept(TDefVisitor&);
00054
00055
00056 virtual TRecordDef *clone() const;
00057 };
00058
00059 }
00060 }
00061 }
00062
00063 #endif