// // aegis - project change supervisor // Copyright (C) 1997, 2002, 2004-2008 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 AEFIND_TREE_LIST_H #define AEFIND_TREE_LIST_H #include /** * The tree_list class is used to represent a list of pointers to * expression tree nodes. */ class tree_list { public: /** * The destructor. */ ~tree_list(); /** * The default constructor. */ tree_list(); /** * The copy constructor. */ tree_list(const tree_list &arg); /** * The assignment operator. */ tree_list &operator=(const tree_list &arg); /** * The clear method may be used to discard the contents of this * list. */ void clear(); /** * The append method may be used to add another expression node to * the back of this list. */ void append(const tree::pointer &tp); /** * The append method may be used to add the contents of another * expression node list to the back of this list. */ void append(const tree_list &arg); /** * The size method may be used to obtain the number of items in * this list. */ size_t size() const { return length; } /** * The get method may be used to obtain the n-th element of this * list. * * @note * No range checking is performed. * */ tree::pointer get(size_t n) const; /** * The array index operator method may be used to obtain the n-th * element of this list. */ tree::pointer operator[](size_t n) const { return get(n); } private: /** * The item instance variable is used to remember the address of a * dynamically allocated array of pointer to expression tre nodes. */ tree::pointer *item; /** * The length instance variable is used to remember how many * elements of the "item" array have been used. */ size_t length; /** * The maximum instance variable is used to remember how many * elements were allocated to the "item" array. */ size_t maximum; }; #endif // AEFIND_TREE_LIST_H