Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

kern_types.h

Go to the documentation of this file.
00001 // AUTOMATICALLY GENERATED -- DO NOT EDIT!         -*- c++ -*-
00002 
00003 #ifndef kern_types_h
00004 #define kern_types_h
00005 
00006 #include "types.h"
00007 
00008 //
00009 // INTERFACE definition follows 
00010 //
00011 
00012 
00013 template< typename _Ty >
00014 struct P_ptr 
00015 {
00016 
00017 public:
00018 
00019   typedef _Ty *Raw_type;
00020   typedef Address Unsigned_type;
00021 
00022   P_ptr< _Ty > &operator ++ () // prefix
00023   {
00024     ++__ptr;
00025     return *this;
00026   }
00027 
00028   P_ptr< _Ty > &operator -- () // prefix
00029   {
00030     --__ptr;
00031     return *this;
00032   }
00033 
00034   P_ptr< _Ty > operator ++ (int) // postfix
00035   {
00036     return P_ptr(__ptr++);
00037   }
00038 
00039   P_ptr< _Ty > operator -- (int) // postfix
00040   {
00041     return P_ptr(__ptr--);
00042   }
00043 
00044   P_ptr< _Ty > operator + ( Smword pd ) const
00045   {
00046     return P_ptr(__ptr + pd);
00047   }
00048 
00049   P_ptr< _Ty > operator - ( Smword pd ) const
00050   {
00051     return P_ptr(__ptr - pd);
00052   }
00053 
00054   P_ptr< _Ty > &operator += ( Smword pd )
00055   {
00056     __ptr += pd;
00057     return *this;
00058   }
00059 
00060   P_ptr< _Ty > &operator -= ( Smword pd )
00061   {
00062     __ptr -= pd;
00063     return *this;
00064   }
00065 
00066   P_ptr< _Ty > operator & ( Mword o )
00067   {
00068     return (_Ty*)((Mword)__ptr & o);
00069   }
00070 
00071   bool operator == ( P_ptr const &o ) const
00072   {
00073     return (void*)__ptr == (void*)o.__ptr;
00074   }
00075 
00076   bool operator != ( P_ptr const &o ) const
00077   {
00078     return (void*)__ptr != (void*)o.__ptr;
00079   }
00080 
00081   bool is_null() const
00082   {
00083     return __ptr == (void*)(-1);
00084   }
00085 
00086   bool is_invalid() const
00087   {
00088     return __ptr == (void*)(-1);
00089   }
00090 
00091   _Ty* get_raw() const 
00092   {
00093     return __ptr;
00094   }
00095 
00096   Unsigned_type get_unsigned() const
00097   {
00098     return (Unsigned_type)__ptr;
00099   }
00100 
00101   P_ptr<void> to_void() const 
00102   {
00103     return P_ptr<void>((void*)__ptr);
00104   }
00105 
00106   P_ptr< _Ty > operator = (_Ty *o)
00107   {
00108     return P_ptr(__ptr= o);
00109   }
00110 
00111   P_ptr< _Ty > operator = (P_ptr<_Ty> const &o)
00112   {
00113     return P_ptr(__ptr= o.__ptr);
00114   }
00115 
00116   template< typename _To >
00117   static P_ptr cast( P_ptr< _To > const &o)
00118   {
00119     return P_ptr<_Ty>(static_cast<_Ty*>(o.get_raw()));
00120   }
00121 
00122   explicit P_ptr( Mword addr ) 
00123     : __ptr((_Ty*)addr)
00124   {}
00125 
00126   P_ptr( _Ty *p = (_Ty*)(-1) ) 
00127     : __ptr(p)
00128   {}
00129 
00130 #if 0
00131   // avoid this copy constructor so the gcc does more optimization
00132   P_ptr( P_ptr<_Ty> const &o )
00133     : __ptr(o.get_raw())
00134   {}
00135 #endif
00136 
00137   template< typename _To >
00138   P_ptr( P_ptr<_To> const &o )
00139     : __ptr(o.get_raw())
00140   {}
00141 
00142 private:
00143 
00144   _Ty *__ptr;
00145 
00146 };
00147 
00148 #endif // kern_types_h

Generated on Mon Sep 26 14:20:11 2005 for Fiasco by  doxygen 1.4.2