00001 /**** 00002 Hierarchical Data Objects 00003 Copyright (C) 2005-2010 Werner Van Belle 00004 http://flow.yellowcouch.org/data/ 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 ****/ 00020 #ifndef __loaded__symbol_cpp__ 00021 #define __loaded__symbol_cpp__ 00022 using namespace std; 00023 #line 1 "symbol.c++" 00024 #include "symbol.h" 00025 #include "data-visitor.h" 00026 #include <set> 00027 using namespace std; 00028 00029 //--------------------------------------------------------------- 00030 // Symbol 00031 //--------------------------------------------------------------- 00032 struct QStringLesser 00033 { 00034 bool operator()(QString *s1, QString *s2) const {return (*s1)<(*s2);}; 00035 }; 00036 00037 static set<QString> symbol_table; 00038 00039 void Symbol::init(const QString& s) 00040 { 00041 set<QString>::iterator pos = symbol_table.find(s); 00042 if (pos==symbol_table.end()) 00043 symbol_table.insert(text=s); 00044 else 00045 text = *pos; 00046 } 00047 00048 void Symbol::visit(DataVisitor& v) 00049 { 00050 v.visit(*this); 00051 }; 00052 #endif // __loaded__symbol_cpp__