2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these librararies and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 // $XConsortium: VariableTable.cc /main/3 1996/06/11 17:09:55 cde-hal $
26 #include "VariableTable.h"
28 static unsigned shash(const Symbol& key)
33 VariableTable::VariableTable()
34 : hashTable<Symbol,Expression>(shash)
38 VariableTable::~VariableTable()
44 VariableTable::exists(const Symbol &name) const
46 return contains(&name);
49 VariableTable::enter(const Symbol &name, Expression *value)
51 Expression *exp = findValue(&name);
54 Symbol *sym = remove(&name);
58 insertKeyAndValue(new Symbol(name), value);
62 VariableTable::lookup(const Symbol &name) const
64 return *findValue(&name);
68 VariableTable::print(ostream &o) const
70 hashTableIterator<Symbol,Expression>
71 next(*(hashTable<Symbol,Expression>*)this); // cast to
75 o << *next.key() << "\t" << *next.value() << endl;
80 ostream &operator <<(ostream &o, const VariableTable &v)