diff options
author | sc | 2000-11-28 14:19:35 +0000 |
---|---|---|
committer | sc | 2000-11-28 14:19:35 +0000 |
commit | 325530e630c68c7c10a2f4339f5b43434fcd0329 (patch) | |
tree | 8e655f6002598176ed0e9e5e0ba3bcb0971c434d /utils/SmartPointer.h | |
parent | b8af7905fd61ce5cb2c94da78ccc9e051f9ceddc (diff) | |
download | ivy-league-325530e630c68c7c10a2f4339f5b43434fcd0329.zip ivy-league-325530e630c68c7c10a2f4339f5b43434fcd0329.tar.gz ivy-league-325530e630c68c7c10a2f4339f5b43434fcd0329.tar.bz2 ivy-league-325530e630c68c7c10a2f4339f5b43434fcd0329.tar.xz |
Incorporation into IvyLeague
Ccu -> Ivl
ccu -> ivl
Smart pointers disappear (too dangerous)
Imakefile disappears (Makefile now)
An empty cplus_bugs.h has been created locally
Diffstat (limited to 'utils/SmartPointer.h')
-rw-r--r-- | utils/SmartPointer.h | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/utils/SmartPointer.h b/utils/SmartPointer.h deleted file mode 100644 index b1b5003..0000000 --- a/utils/SmartPointer.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * CENA C++ Utilities - * - * by Stephane Chatty - * - * Copyright 1990-1995 - * Laboratoire de Recherche en Informatique (LRI) - * Centre d'Etudes de la Navigation Aerienne (CENA) - * - * smart pointers, originally by Michel Beaudouin-Lafon - * - * $Id$ - * $CurLog$ - */ - -#ifndef SmartPointer_H_ -#define SmartPointer_H_ - -#include "cplus_bugs.h" -#include <sys/types.h> - -class CcuList; - -class CcuSmartData { -public: - enum check_type { doNoCheck, doOnlyDynamic, doWarn, doAbort }; -private: -static check_type check; - - int State; -inline int IsDynamic () const { return !(State & 1); } - -protected: -#ifdef OLD -static int NextCreatedIsDynamic; -#else -static CcuList* LastDynamics; -#endif - -public: - void* operator new (size_t); -inline void operator delete (void* that) { ::delete (that); } - - CcuSmartData (); - CcuSmartData (const CcuSmartData&); -virtual ~CcuSmartData (); - -static check_type SetCheck (check_type); - - void DecrRef (); -inline void IncrRef () { State += 2; } -}; - -#ifndef CPLUS_BUG19 -template <class DATA> class CcuSmartPointerTo { -protected: - DATA* Data; -inline void DecrDataRef () const { if (Data) Data->DecrRef (); } -inline void IncrDataRef () const { if (Data) Data->IncrRef (); } - -public: -inline CcuSmartPointerTo () : Data (0) { } -inline CcuSmartPointerTo (DATA* d) : Data (d) { IncrDataRef (); } -inline CcuSmartPointerTo (const CcuSmartPointerTo<DATA>& p) : Data (p.Data) { IncrDataRef (); } -inline ~CcuSmartPointerTo () { DecrDataRef (); Data = 0; } -inline CcuSmartPointerTo<DATA>& operator = (DATA* d) { if (d != Data) { DecrDataRef (); Data = d; IncrDataRef (); } return *this;} -inline int operator == (const DATA* d) const { return Data == d;} -inline int operator != (const DATA* d) const { return Data != d;} -inline int operator == (const CcuSmartPointerTo<DATA>& p) const { return Data == p.Data;} -inline int operator != (const CcuSmartPointerTo<DATA>& p) const { return Data != p.Data;} -inline DATA* operator -> () const { return Data; } -inline DATA& operator * () const { return *Data; } -inline operator DATA* () const { return Data; } -}; - -#define PointerClass(SmartClass, DataClass) typedef CcuSmartPointerTo <DataClass> SmartClass; - -#else /* CPLUS_BUG19 */ - -#define PointerClass(SmartClass, DataClass) \ - class SmartClass { \ - protected: \ - DataClass* Data; \ - inline void DecrDataRef () const { if (Data) Data->DecrRef (); } \ - inline void IncrDataRef () const { if (Data) Data->IncrRef (); } \ - \ - public: \ - inline SmartClass () : Data (0) { } \ - inline SmartClass (DataClass* d) : Data (d) { IncrDataRef (); } \ - inline SmartClass (const SmartClass& p) : Data (p.Data) { IncrDataRef (); } \ - inline ~SmartClass () { DecrDataRef (); Data = 0; } \ - inline SmartClass& operator = (DataClass* d) { if (d != Data) { DecrDataRef (); Data = d; IncrDataRef (); } return *this;} \ - inline int operator == (const DataClass* d) const { return Data == d;} \ - inline int operator != (const DataClass* d) const { return Data != d;} \ - inline int operator == (const SmartClass& p) const { return Data == p.Data;} \ - inline int operator != (const SmartClass& p) const { return Data != p.Data;} \ - inline DataClass* operator -> () const { return Data; } \ - inline DataClass& operator * () const { return *Data; } \ - inline operator DataClass* () const { return Data; } \ - }; - -#endif /* CPLUS_BUG19 */ - -#define DerivedPointerClass(SmartClass, BaseSmartClass, DataClass) \ - class SmartClass : public BaseSmartClass { \ - public: \ - inline SmartClass () : BaseSmartClass () { } \ - inline SmartClass (const SmartClass& p) : BaseSmartClass (p) { } \ - inline SmartClass (DataClass* d) : BaseSmartClass (d) { } \ - inline SmartClass& operator = (DataClass* d) { if (d != Data) { DecrDataRef (); Data = d; IncrDataRef (); } return *this; } \ - inline DataClass* operator -> () const { return (DataClass*) Data; } \ - inline DataClass& operator * () const { return * ((DataClass*) Data); } \ - inline operator DataClass* () const { return (DataClass*) Data; } \ - }; - -#ifdef DOC -global macro PointerClass (SmartClass, DataClass); -global macro DerivedPointerClass (SmartClass, BaseSmartClass, DataClass); -#endif - -#endif /* SmartPointer_H_ */ - |