// // aegis - project change supervisor // Copyright (C) 2004-2008, 2012 Peter Miller // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // . // #ifndef LIBAEGIS_SUB_DIVERSION_H #define LIBAEGIS_SUB_DIVERSION_H #include #include /** * The sub_diversion class is used to represent the state of a * substitution diversion. */ class sub_diversion { public: /** * The destructor. */ virtual ~sub_diversion(); /** * The default constructor. */ sub_diversion(); /** * The constructor. * * \param arg1 * The text of this diversion. * \param arg2 * Wether or not to rescan the text of this diversion for more * substitutions. */ sub_diversion(const wstring &arg1, bool arg2 = false); /** * The copy constructor. */ sub_diversion(const sub_diversion &); /** * The assignment operator. */ sub_diversion &operator=(const sub_diversion &); bool resub_both() const { return resubstitute; } /** * The getch method is used to get the next character from the diversion. * * \returns * wchar_t; the next characters of the diversion text, or a * wide NUL character if there is not more text to read from * this diversion. */ wchar_t getch(); /** * The ungetch method is used to return a chaaracter to the * diversion, fo re-reading at a later time. * * \note * Only call ungetch with characters returned by getch, or the * behaviour is undefinbed. */ void ungetch(wchar_t wc); private: /** * The pos instance variable is used to remember where in the * "text" the read point is up to. */ size_t pos; /** * The text instance variable is used to remember text of this * diversion. */ wstring text; /** * The resubstitute instance variable is used to remember whether * or not this diversion is to be reinterpreted by the scanner. */ bool resubstitute; }; #endif // LIBAEGIS_SUB_DIVERSION_H // vim: set ts=8 sw=4 et :