New directory tree, with preprocessor/ inside interpretor/.
[Faustine.git] / interpretor / faust-0.9.47mr3 / compiler / headers / smartpointer.hh
diff --git a/interpretor/faust-0.9.47mr3/compiler/headers/smartpointer.hh b/interpretor/faust-0.9.47mr3/compiler/headers/smartpointer.hh
deleted file mode 100644 (file)
index 825bd9a..0000000
+++ /dev/null
@@ -1,74 +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.
- ************************************************************************
- ************************************************************************/
-#ifndef _SMARTPOINTER_H
-#define _SMARTPOINTER_H
-
-//#include <iostream>
-#include <cstdlib>
-#include <cstdio>
-
-
-
-template<class T>
-class P {
-       private:
-               T* p;
-       public:
-               P()     : p(0)                                                  { }
-               P(T* rawptr) : p(rawptr)                        { }
-               P(const P& ptr) : p((T*)ptr)            { }
-
-               template<class T2> 
-               P(const P<T2>& ptr) : p((T*)ptr)        { }
-               
-               ~P()                                                            { }
-               
-               operator T*() const                                     { return p;     }
-               T& operator*() const {
-                       if (p == 0) {
-                               //throw std::runtime_error("Null dereference in P<?>::operator*() const ");
-                               fprintf(stderr, "Null dereference in P<?>::operator*() const \n ");
-                               exit(1);
-                       }
-                       return *p;
-               }
-               T* operator->() const   { 
-                       if (p == 0) {
-                               fprintf(stderr, "Null dereference in P<?>::operator->() const \n ");
-                               //throw std::runtime_error("Null dereference in P<?>::operator->() const ");
-                               //std::cerr << "Null dereference in P<?>::operator->() const " << std::endl;
-                               exit(1);
-                       }
-                       return p;
-               }
-               T* pointee() const      { return p;}
-               P& operator=(T* p_)     { p = p_;  return *this;}
-               
-               P& operator=(const P<T>& p_)            { return operator=((T *) p_); }
-               template<class T2> P& cast(T2* p_)      { return operator=(dynamic_cast<T*>(p_)); }
-               template<class T2> P& cast(const P<T2>& p_) { return operator=(dynamic_cast<T*>(p_)); }
-};
-
-
-#endif