LRDE Tiger Compiler  1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
symbol.hh
Go to the documentation of this file.
1 
6 #ifndef MISC_SYMBOL_HH
7 # define MISC_SYMBOL_HH
8 
9 # include <set>
10 # include <string>
11 # include <iosfwd>
12 # include <misc/unique.hh>
13 
14 namespace misc
15 {
16 
23  class symbol : public unique<std::string>
24  {
29  typedef string_set_type::size_type string_size_type;
30 
33  public:
36  symbol(const std::string& s);
39  symbol(const char* s = "");
41  virtual ~symbol();
46  public:
48  const std::string& name_get() const;
49 
56  public:
59  symbol& operator=(const symbol& rhs);
60 
63  bool operator==(const symbol& rhs) const;
66  bool operator!=(const symbol& rhs) const;
69  public:
73  static symbol fresh();
75  static symbol fresh(const symbol& s);
77  };
78 
83  std::ostream& operator<<(std::ostream& ostr, const symbol& the);
84 }
85 
86 # include <misc/symbol.hxx>
87 
88 #endif // !MISC_SYMBOL_HH