1.1 --- a/epoc32/include/stdapis/stlport/stl/_ptrs_specialize.h Tue Nov 24 13:55:44 2009 +0000
1.2 +++ b/epoc32/include/stdapis/stlport/stl/_ptrs_specialize.h Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -1,1 +1,72 @@
1.4 -_ptrs_specialize.h
1.5 +#ifndef _STLP_PTRS_SPECIALIZE_H
1.6 +# define _STLP_PTRS_SPECIALIZE_H
1.7 +
1.8 +// the following is a workaround for arrow operator problems
1.9 +# if defined ( _STLP_NO_ARROW_OPERATOR )
1.10 +// User wants to disable proxy -> operators
1.11 +# define _STLP_DEFINE_ARROW_OPERATOR
1.12 +# define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp)
1.13 +# else
1.14 +// Compiler can handle generic -> operator.
1.15 +# define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp)
1.16 +# ifdef __BORLANDC__
1.17 +# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(*(*this)); }
1.18 +# elif defined ( _STLP_WINCE ) || defined(__WATCOMC__)
1.19 +# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { reference x = operator*(); return &x; }
1.20 +# else
1.21 +# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(operator*()); }
1.22 +# endif
1.23 +# endif /* _STLP_NO_ARROW_OPERATOR */
1.24 +
1.25 +// Important pointers specializations
1.26 +
1.27 +# ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
1.28 +# define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type)
1.29 +# define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type)
1.30 +# else
1.31 +# define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) _STLP_TEMPLATE_NULL struct __type_traits<_Type> : __type_traits_aux<true> {};
1.32 +# define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) \
1.33 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type*) \
1.34 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type*) \
1.35 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type**) \
1.36 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type* const *) \
1.37 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type**) \
1.38 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type***) \
1.39 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type***)
1.40 +# endif
1.41 +
1.42 +# define _STLP_POINTERS_SPECIALIZE(_Type) _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Type)
1.43 +
1.44 +# if !defined ( _STLP_NO_BOOL )
1.45 +_STLP_POINTERS_SPECIALIZE( bool )
1.46 +# endif
1.47 +_STLP_TYPE_TRAITS_POD_SPECIALIZE_V(void)
1.48 +# ifndef _STLP_NO_SIGNED_BUILTINS
1.49 + _STLP_POINTERS_SPECIALIZE( signed char )
1.50 +# endif
1.51 + _STLP_POINTERS_SPECIALIZE( char )
1.52 + _STLP_POINTERS_SPECIALIZE( unsigned char )
1.53 + _STLP_POINTERS_SPECIALIZE( short )
1.54 + _STLP_POINTERS_SPECIALIZE( unsigned short )
1.55 + _STLP_POINTERS_SPECIALIZE( int )
1.56 + _STLP_POINTERS_SPECIALIZE( unsigned int )
1.57 + _STLP_POINTERS_SPECIALIZE( long )
1.58 + _STLP_POINTERS_SPECIALIZE( unsigned long )
1.59 + _STLP_POINTERS_SPECIALIZE( float )
1.60 + _STLP_POINTERS_SPECIALIZE( double )
1.61 +# if !defined ( _STLP_NO_LONG_DOUBLE )
1.62 + _STLP_POINTERS_SPECIALIZE( long double )
1.63 +# endif
1.64 +# if defined ( _STLP_LONG_LONG)
1.65 + _STLP_POINTERS_SPECIALIZE( _STLP_LONG_LONG )
1.66 + _STLP_POINTERS_SPECIALIZE( unsigned _STLP_LONG_LONG )
1.67 +# endif
1.68 +#if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT)
1.69 + _STLP_POINTERS_SPECIALIZE( wchar_t )
1.70 +# endif
1.71 +
1.72 +# undef _STLP_ARROW_SPECIALIZE
1.73 +# undef _STLP_ARROW_SPECIALIZE_WITH_PTRS
1.74 +# undef _STLP_TYPE_TRAITS_POD_SPECIALIZE_V
1.75 +
1.76 +#endif