Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygen_ptrs_specialize.h
Go to the documentation of this file.
00001 #ifndef _STLP_PTRS_SPECIALIZE_H 00002 #define _STLP_PTRS_SPECIALIZE_H 00003 00004 #if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) || \ 00005 (defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && !defined (_STLP_NO_ARROW_OPERATOR)) 00006 # define _STLP_POINTERS_SPECIALIZE( _TpP ) 00007 # define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(operator*()); } 00008 #else 00009 # ifndef _STLP_TYPE_TRAITS_H 00010 # include <stl/type_traits.h> 00011 # endif 00012 00013 // the following is a workaround for arrow operator problems 00014 # if defined ( _STLP_NO_ARROW_OPERATOR ) 00015 // User wants to disable proxy -> operators 00016 # define _STLP_DEFINE_ARROW_OPERATOR 00017 # else 00018 // Compiler can handle generic -> operator. 00019 # if defined (__BORLANDC__) 00020 # define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(*(*this)); } 00021 # elif defined(__WATCOMC__) 00022 # define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { reference x = operator*(); return &x; } 00023 # else 00024 # define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(operator*()); } 00025 # endif 00026 # endif /* _STLP_NO_ARROW_OPERATOR */ 00027 00028 // Important pointers specializations 00029 00030 # ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS 00031 # define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) 00032 # define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) 00033 # else 00034 # define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) _STLP_TEMPLATE_NULL struct __type_traits<_Type> : __type_traits_aux<__true_type> {}; 00035 # define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) \ 00036 _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type*) \ 00037 _STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type*) \ 00038 _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type**) \ 00039 _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type* const *) \ 00040 _STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type**) \ 00041 _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type***) \ 00042 _STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type***) 00043 # endif 00044 00045 # define _STLP_POINTERS_SPECIALIZE(_Type) _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) 00046 00047 _STLP_BEGIN_NAMESPACE 00048 00049 # if !defined ( _STLP_NO_BOOL ) 00050 _STLP_POINTERS_SPECIALIZE( bool ) 00051 # endif 00052 _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(void) 00053 # ifndef _STLP_NO_SIGNED_BUILTINS 00054 _STLP_POINTERS_SPECIALIZE( signed char ) 00055 # endif 00056 _STLP_POINTERS_SPECIALIZE( char ) 00057 _STLP_POINTERS_SPECIALIZE( unsigned char ) 00058 _STLP_POINTERS_SPECIALIZE( short ) 00059 _STLP_POINTERS_SPECIALIZE( unsigned short ) 00060 _STLP_POINTERS_SPECIALIZE( int ) 00061 _STLP_POINTERS_SPECIALIZE( unsigned int ) 00062 _STLP_POINTERS_SPECIALIZE( long ) 00063 _STLP_POINTERS_SPECIALIZE( unsigned long ) 00064 _STLP_POINTERS_SPECIALIZE( float ) 00065 _STLP_POINTERS_SPECIALIZE( double ) 00066 # if !defined ( _STLP_NO_LONG_DOUBLE ) 00067 _STLP_POINTERS_SPECIALIZE( long double ) 00068 # endif 00069 # if defined ( _STLP_LONG_LONG) 00070 _STLP_POINTERS_SPECIALIZE( _STLP_LONG_LONG ) 00071 _STLP_POINTERS_SPECIALIZE( unsigned _STLP_LONG_LONG ) 00072 # endif 00073 # if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT) 00074 _STLP_POINTERS_SPECIALIZE( wchar_t ) 00075 # endif 00076 00077 _STLP_END_NAMESPACE 00078 00079 # undef _STLP_ARROW_SPECIALIZE 00080 # undef _STLP_TYPE_TRAITS_POD_SPECIALIZE_V 00081 00082 #endif 00083 #endif Generated on Fri May 25 2012 04:27:53 for ReactOS by
1.7.6.1
|