00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _null_h
00018 #define _null_h
00019
00020 #include <spl/types.h>
00021 #include <spl/Debug.h>
00022
00029 #define NULL_MAJIC 0 //< Majic number for ASSERT's in Compare and Convert
00030
00034 class Null : public IComparable
00035 {
00036 protected:
00037 static Null m_instance;
00038
00039 public:
00040 Null();
00041 virtual ~Null();
00042
00043 virtual bool Equals( const IComparable *a ) const;
00044 virtual int Compare( const IComparable *a ) const;
00045 virtual bool Equals( const IComparable& a ) const;
00046 virtual int Compare( const IComparable& a ) const;
00047
00050 virtual int32 MajicNumber() const;
00051
00052 virtual int32 HashCode() const;
00053
00054 inline operator void *() const { return NULL; }
00055
00056 inline static Null& Instance() { return m_instance; }
00057 };
00058
00059 inline void ValidateType( const Null& u ) {}
00060 inline void ValidateType( const Null *u ) {}
00061
00062 REGISTER_TYPEOF( 571, Null );
00063
00066 #endif