Rename interpretor to interpreter.
[Faustine.git] / interpretor / preprocessor / faust-0.9.47mr3 / compiler / tlib / symbol.hh
diff --git a/interpretor/preprocessor/faust-0.9.47mr3/compiler/tlib/symbol.hh b/interpretor/preprocessor/faust-0.9.47mr3/compiler/tlib/symbol.hh
deleted file mode 100644 (file)
index 5a24a74..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/************************************************************************
- ************************************************************************
-    FAUST compiler
-       Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale
-    ---------------------------------------------------------------------
-    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 2 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, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- ************************************************************************
- ************************************************************************/
-/** \file symbol.hh
- * A library to create and manipulate symbols with a unique name. 
- * A library of functions to create and manipulate symbols with a unique name.
- * 
- *  <b>API:</b>
- *
- *   - Sym q = symbol("abcd");     <i>returns the symbol of name "abcd"</i>
- *   - const char* s = name(q);    <i>returns the name of symbol q</i>
- *   - Sym q = unique("TOTO");    <i>returns a new unique symbol of name "TOTOnnn"</i>  
- *
- *  <b>Properties:</b>
- *
- *     If p and q are two symbols then : 
- *        p != q  <=>  name(p) != name(q)
- *
- */ 
-
-#ifndef     __SYMBOL__
-#define     __SYMBOL__
-
-#include <string>
-#include <map>
-
-using namespace std;
-
-//--------------------------------SYMBOL-------------------------------------
-
-/**
- * Symbols are unique objects with a name stored in a hash table.
- */
-class Symbol
-{
-       
- private:
-                
-       static const int        kHashTableSize = 511;                                   ///< Size of the hash table (a prime number is recommended)
-    static Symbol*             gSymbolTable[kHashTableSize];                   ///< Hash table used to store the symbols
-       
-       
- // Fields
-    char*                      fName;                                                                          ///< Name of the symbol
-    unsigned int                       fHash;                                                                          ///< Hash key computed from the name and used to determine the hash table entry
-    Symbol*                    fNext;                                                                          ///< Next symbol in the hash table entry
-       void*                   fData;                                                                          ///< Field to user disposal to store additional data
-       
- // Constructors & destructors
-    Symbol (const char* str, unsigned int hsh, Symbol* nxt);   ///< Constructs a new symbol ready to be placed in the hash table
-   ~Symbol ();                                                                                                 ///< The Destructor is never used
-       
- // Others
-       bool                    equiv (unsigned int hash, const char* str) const ;      ///< Check if the name of the symbol is equal to string \p str
-       static unsigned int     calcHashKey (const char* str);                          ///< Compute the 32-bits hash key of string \p str
-
- // Static methods
-       static Symbol*          get (const string& str);                                ///< Get the symbol of name \p str
-       static Symbol*          get (const char* str);                                  ///< Get the symbol of name \p str
-       static Symbol*          prefix (const char* str);                               ///< Creates a new symbol of name prefixed by \p str
-       static bool             isnew (const char* str);                                ///< Returns \b true if no symbol of name \p str exists
-       
- public:
-       ostream&                                print (ostream& fout) const;                                                            ///< print a symbol on a stream
-
-       friend Symbol*                  symbol (const char* str);
-       friend Symbol*                  symbol (const string& str);
-       friend Symbol*                  unique (const char* str);
-       friend const char*      name (Symbol* sym);
-       
-       friend void*                    getUserData (Symbol* sym);
-       friend void                     setUserData (Symbol* sym, void* d);
-               
-};
-
-inline Symbol*                 symbol (const char* str)        { return Symbol::get(str); }    ///< Returns (and creates if new) the symbol of name \p str
-inline Symbol*                 symbol (const string& str)      { return Symbol::get(str); }    ///< Returns (and creates if new) the symbol of name \p str
-inline Symbol*                 unique (const char* str)        { return Symbol::prefix(str);}  ///< Returns a new unique symbol of name strxxx
-inline const char*     name (Symbol* sym)                      { return sym->fName; }                  ///< Returns the name of a symbol
-       
-inline void*                   getUserData (Symbol* sym)                       { return sym->fData; }          ///< Returns user data
-inline void                    setUserData (Symbol* sym, void* d)      { sym->fData=d; }                       ///< Set user data
-
-inline ostream& operator << (ostream& s, const Symbol& n) { return n.print(s); }
-
-
-typedef Symbol* Sym;
-
-#endif