00001 00006 /* 00007 Copyright (C) 2004 Anders Hedstrom 00008 00009 This program is free software; you can redistribute it and/or 00010 modify it under the terms of the GNU General Public License 00011 as published by the Free Software Foundation; either version 2 00012 of the License, or (at your option) any later version. 00013 00014 This program is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with this program; if not, write to the Free Software 00021 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00022 */ 00023 #ifndef _SEQUENCE_H 00024 #define _SEQUENCE_H 00025 00026 00027 00028 class Scope; 00029 00030 class Sequence 00031 { 00032 public: 00033 Sequence(); 00034 Sequence(token_v &); 00035 virtual ~Sequence(); 00036 00037 void SetFile(const std::string &file) { m_file = file; } 00038 std::string GetFile() { return m_file; } 00039 void SetLine(int line) { m_line = line; } 00040 int GetLine() { return m_line; } 00041 void SetPos(int pos) { m_pos = pos; } 00042 int GetPos() { return m_pos; } 00043 void SetExtern(bool x) { m_bExtern = x; } 00044 bool IsExtern() { return m_bExtern; } 00045 00046 void SetParent(Scope *p) { m_parent = p; } 00047 Scope *GetParent() { return m_parent; } 00048 00049 virtual void Display(); 00050 void Tab(); 00051 std::string GetExpr(); 00052 void xmlsafestr(std::string &); 00053 00054 Token *GetFirstToken(); 00055 token_v::iterator Begin() { return m_tokens.begin(); } 00056 token_v::iterator End() { return m_tokens.end(); } 00057 00058 private: 00059 std::string m_file; 00060 int m_line; 00061 int m_pos; 00062 bool m_bExtern; 00063 token_v m_tokens; 00064 Scope *m_parent; 00065 }; 00066 00067 typedef std::vector<Sequence *> sequence_v; 00068 00069 00070 #endif // _SEQUENCE_H