#pragma once #include #include class ScopeImpl : public CScope { public: ScopeImpl( int level, int addr, SCOPE_TYPE TypeOfStatement ) : CScope( level, addr, TypeOfStatement ) { } ~ScopeImpl(); virtual void Break(); virtual void RunScheduleOfBreak(); }; class LexicalScopesImpl : public CLexicalScopes { virtual CScope *CreateScope( int level, int addr, SCOPE_TYPE TypeOfStatement ) { return new ScopeImpl( level, addr, TypeOfStatement ); } public: //スコープ終了時のデストラクタ呼び出し virtual void CallDestructorsOfScopeEnd(); //Returnステートメント用のデストラクタ呼び出し virtual void CallDestructorsOfReturn( int BaseLevel = 0 ); }; LexicalScopesImpl &GetLexicalScopes();