CrossFramework Library
|
00001 00006 #if defined(XBASE_INCLUDED_BOOL_HPP) 00007 #else 00008 #define XBASE_INCLUDED_BOOL_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <XBase/BuiltInTypes.hpp> 00012 00013 //------------------------------------------------------------ 00014 namespace XBase { 00016 00017 00020 template< typename DATA_TYPE > 00021 struct BoolPODTmpl 00022 { 00023 //============================================================ 00024 // private 00025 DATA_TYPE val_; 00026 00027 //============================================================ 00028 // public 00030 00031 typedef DATA_TYPE DataType; 00033 00035 00036 00045 BoolPODTmpl< DataType >& operator=( const bool aVal ) 00046 { 00047 val_ = DataType( aVal ? 1 : 0 ); 00048 return *this; 00049 } 00050 00062 operator bool()const 00063 { 00064 return val_ != 0; 00065 } 00067 }; 00068 00077 template< typename DATA_TYPE > 00078 class BoolTmpl : public BoolPODTmpl< DATA_TYPE > 00079 { 00080 public: 00082 00083 00084 BoolTmpl() 00085 { 00086 BoolPODTmpl< DATA_TYPE >::val_ = false; 00087 } 00088 00090 BoolTmpl( const bool aVal ) 00091 { 00092 BoolPODTmpl< DATA_TYPE >::val_ = aVal; 00093 } 00095 }; 00096 00098 00099 typedef BoolPODTmpl< u8 > BoolPOD8; 00100 typedef BoolPODTmpl< u16 > BoolPOD16; 00101 typedef BoolPODTmpl< u32 > BoolPOD32; 00102 typedef BoolPODTmpl< u64 > BoolPOD64; 00103 typedef BoolTmpl< u8 > Bool8; 00104 typedef BoolTmpl< u16 > Bool16; 00105 typedef BoolTmpl< u32 > Bool32; 00106 typedef BoolTmpl< u64 > Bool64; 00107 typedef Bool8 Bool; 00108 typedef BoolPOD8 BoolPOD; 00109 00110 00112 } 00113 //------------------------------------------------------------ 00114 #endif 00115 // EOF