diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/stdapis/stlportv5/stl/_ptrs_specialize.h --- a/epoc32/include/stdapis/stlportv5/stl/_ptrs_specialize.h Wed Mar 31 12:27:01 2010 +0100 +++ b/epoc32/include/stdapis/stlportv5/stl/_ptrs_specialize.h Wed Mar 31 12:33:34 2010 +0100 @@ -1,30 +1,34 @@ #ifndef _STLP_PTRS_SPECIALIZE_H -# define _STLP_PTRS_SPECIALIZE_H +#define _STLP_PTRS_SPECIALIZE_H + +#ifndef _STLP_TYPE_TRAITS_H +# include <stl/type_traits.h> +#endif // the following is a workaround for arrow operator problems -# if defined ( _STLP_NO_ARROW_OPERATOR ) +#if defined ( _STLP_NO_ARROW_OPERATOR ) // User wants to disable proxy -> operators -# define _STLP_DEFINE_ARROW_OPERATOR -# define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp) -# else +# define _STLP_DEFINE_ARROW_OPERATOR +# define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp) +#else // Compiler can handle generic -> operator. # define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp) -# ifdef __BORLANDC__ -# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(*(*this)); } -# elif defined ( _STLP_WINCE ) || defined(__WATCOMC__) -# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { reference x = operator*(); return &x; } +# if defined (__BORLANDC__) +# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(*(*this)); } +# elif defined(__WATCOMC__) +# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { reference x = operator*(); return &x; } # else -# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(operator*()); } +# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(operator*()); } # endif -# endif /* _STLP_NO_ARROW_OPERATOR */ +#endif /* _STLP_NO_ARROW_OPERATOR */ // Important pointers specializations -# ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS +#ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS # define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) # define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) -# else -# define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) _STLP_TEMPLATE_NULL struct __type_traits<_Type> : __type_traits_aux<true> {}; +#else +# define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) _STLP_TEMPLATE_NULL struct __type_traits<_Type> : __type_traits_aux<1> {}; # define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) \ _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type*) \ _STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type*) \ @@ -33,10 +37,12 @@ _STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type**) \ _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type***) \ _STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type***) -# endif +#endif # define _STLP_POINTERS_SPECIALIZE(_Type) _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Type) +_STLP_BEGIN_NAMESPACE + # if !defined ( _STLP_NO_BOOL ) _STLP_POINTERS_SPECIALIZE( bool ) # endif @@ -65,6 +71,8 @@ _STLP_POINTERS_SPECIALIZE( wchar_t ) # endif +_STLP_END_NAMESPACE + # undef _STLP_ARROW_SPECIALIZE # undef _STLP_ARROW_SPECIALIZE_WITH_PTRS # undef _STLP_TYPE_TRAITS_POD_SPECIALIZE_V