LRDE Tiger Compiler  1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
deref.hh
Go to the documentation of this file.
1 
6 #ifndef MISC_DEREF_HH
7 # define MISC_DEREF_HH
8 
9 # include <iosfwd>
10 # include <misc/ref.hh>
11 
12 namespace misc
13 {
14  enum deref_e { deref };
15 
16  class Deref
17  {
18  protected:
19  Deref(std::ostream&);
20 
21  public:
22  template <typename T> std::ostream& operator<<(const T* t) const;
23  template <typename T> std::ostream& operator<<(T* t) const;
24  template <typename T> std::ostream& operator<<(const ref<T>& t) const;
25  template <typename T> std::ostream& operator<<(const T& t) const;
26  template <typename T> std::ostream& operator<<(T& t) const;
27 
28  protected:
29  friend Deref operator<<(std::ostream&, deref_e);
30 
31  std::ostream& ostr_;
32  };
33 
34  Deref operator<<(std::ostream& ostr, deref_e);
35 
36 }
37 
38 # include <misc/deref.hxx>
39 
40 #endif // !MISC_DEREF_HH