Author: vitek Date: Tue Jun 24 11:23:32 2008 New Revision: 671285 URL: http://svn.apache.org/viewvc?rev=671285&view=rev Log: 2008-06-24 Travis Vitek <[EMAIL PROTECTED]>
STDCXX-916 * include/rw/_meta_arr.h (_RWSTD_REMOVE_EXTENT) (_RWSTD_REMOVE_ALL_EXTENTS): Add macros for type traits. * include/rw/_meta_cat.h (_RWSTD_IS_VOID, _RWSTD_IS_INTEGRAL) (_RWSTD_IS_FLOATING_POINT, _RWSTD_IS_ARRAY, _RWSTD_IS_UNION) (_RWSTD_IS_LVALUE_REFERENCE, _RWSTD_IS_RVALUE_REFERENCE) (_RWSTD_IS_CLASS, _RWSTD_IS_FUNCTION, _RWSTD_IS_MEMBER_OBJECT_PTR) (_RWSTD_IS_MEMBER_OBJECT_PTR): Ditto. * include/rw/_meta_comp.h (_RWSTD_IS_REFERENCE, _RWSTD_IS_OBJECT) (_RWSTD_IS_ARITHMETIC, _RWSTD_IS_FUNDAMENTAL, _RWSTD_IS_SCALAR) (_RWSTD_IS_MEMBER_POINTER, _RWSTD_IS_COMPOUND): Ditto. * include/rw/_meta_cv.h (_RWSTD_REMOVE_CONST, _RWSTD_REMOVE_CV) (_RWSTD_REMOVE_VOLATILE, _RWSTD_ADD_CONST, _RWSTD_ADD_VOLATILE) (_RWSTD_ADD_CV): Ditto. * include/rw/_meta_prop.h (_RWSTD_IS_CONST, _RWSTD_IS_VOLATILE) (_RWSTD_IS_STANDARD_LAYOUT, _RWSTD_IS_POD, _RWSTD_IS_ABSTRACT) (_RWSTD_IS_POLYMORPHIC, _RWSTD_IS_EMPTY, _RWSTD_HAS_TRIVIAL_CTOR) (_RWSTD_HAS_TRIVIAL_COPY, _RWSTD_HAS_TRIVIAL_ASSIGN) (_RWSTD_HAS_TRIVIAL_DTOR, _RWSTD_IS_TRIVIAL, _RWSTD_RANK) (_RWSTD_HAS_NOTHROW_CTOR, _RWSTD_HAS_NOTHROW_COPY) (_RWSTD_HAS_NOTHROW_ASSIGN, _RWSTD_HAS_VIRTUAL_DTOR) (_RWSTD_IS_SIGNED, _RWSTD_IS_UNSIGNED, _RWSTD_EXTENT_1) (_RWSTD_EXTENT_2): Ditto. * include/rw/_meta_ptr.h (_RWSTD_REMOVE_POINTER) (_RWSTD_ADD_POINTER): Ditto. * include/rw/_meta_ref.h (_RWSTD_ADD_RVALUE_REFERENCE) (_RWSTD_ADD_LVALUE_REFERENCE, _RWSTD_REMOVE_REFERENCE): Ditto. * include/rw/_meta_rel.h (_RWSTD_IS_SAME, _RWSTD_IS_BASE_OF) (_RWSTD_IS_CONVERTIBLE): Ditto. * include/rw/_meta_sign.h (_RWSTD_MAKE_SIGNED) (_RWSTD_MAKE_UNSIGNED): Ditto. Modified: stdcxx/branches/4.3.x/include/rw/_meta_arr.h stdcxx/branches/4.3.x/include/rw/_meta_cat.h stdcxx/branches/4.3.x/include/rw/_meta_comp.h stdcxx/branches/4.3.x/include/rw/_meta_cv.h stdcxx/branches/4.3.x/include/rw/_meta_prop.h stdcxx/branches/4.3.x/include/rw/_meta_ptr.h stdcxx/branches/4.3.x/include/rw/_meta_ref.h stdcxx/branches/4.3.x/include/rw/_meta_rel.h stdcxx/branches/4.3.x/include/rw/_meta_sign.h Modified: stdcxx/branches/4.3.x/include/rw/_meta_arr.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_arr.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_arr.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_arr.h Tue Jun 24 11:23:32 2008 @@ -66,7 +66,7 @@ typedef _TypeT type; }; -//#define _RWSTD_REMOVE_EXTENT(T) _RW::__rw_remove_extent<T>::type +#define _RWSTD_REMOVE_EXTENT(T) _RW::__rw_remove_extent<T>::type /** * TransformationTrait strips one dimension from an array type, leaving @@ -101,7 +101,7 @@ typedef typename __rw_remove_all_extents<_TypeT>::type type; }; -//#define _RWSTD_REMOVE_ALL_EXTENTS(T) _RW::__rw_remove_all_extents<T>::type +#define _RWSTD_REMOVE_ALL_EXTENTS(T) _RW::__rw_remove_all_extents<T>::type } // namespace __rw Modified: stdcxx/branches/4.3.x/include/rw/_meta_cat.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_cat.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_cat.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_cat.h Tue Jun 24 11:23:32 2008 @@ -77,8 +77,7 @@ _RWSTD_TRAIT_SPEC_0_CV(__rw_is_void, void, true); -#define _RWSTD_IS_VOID(T) \ - _RW::__rw_is_void<T>::value +#define _RWSTD_IS_VOID(T) _RW::__rw_is_void<T>::value /** @@ -117,8 +116,7 @@ _RWSTD_TRAIT_SPEC_0_CV(__rw_is_integral, unsigned long long, true); #endif // _RWSTD_NO_LONG_LONG -#define _RWSTD_IS_INTEGRAL(T) \ - _RW::__rw_is_integral<T>::value +#define _RWSTD_IS_INTEGRAL(T) _RW::__rw_is_integral<T>::value /** * UnaryTypeTrait to determine if _TypeT is a (potentially cv-qualified) @@ -137,8 +135,7 @@ _RWSTD_TRAIT_SPEC_0_CV(__rw_is_floating_point, long double, true); #endif // _RWSTD_NO_LONG_DOUBLE -#define _RWSTD_IS_FLOATING_POINT(T) \ - _RW::__rw_is_floating_point<T>::value +#define _RWSTD_IS_FLOATING_POINT(T) _RW::__rw_is_floating_point<T>::value /** @@ -159,8 +156,7 @@ { }; -#define _RWSTD_IS_ARRAY(T) \ - _RW::__rw_is_array<T>::value +#define _RWSTD_IS_ARRAY(T) _RW::__rw_is_array<T>::value /** * UnaryTypeTrait to determine if _TypeT is a (potentially cv-qualified) @@ -190,8 +186,9 @@ { }; -#define _RWSTD_IS_LVAL_REF(T) \ - _RW::__rw_is_lval_ref<T>::value +#define _RWSTD_IS_LVALUE_REFERENCE(T) \ + _RW::__rw_is_lvalue_reference<T>::value + /** * UnaryTypeTrait to determine if _TypeT is a rval reference type. @@ -211,8 +208,9 @@ #endif // _RWSTD_NO_RVALUE_REFERENCES -#define _RWSTD_IS_RVAL_REF(T) \ - _RW::__rw_is_rval_ref<T>::value +#define _RWSTD_IS_RVALUE_REFERENCE(T) \ + _RW::__rw_is_rvalue_reference<T>::value + /** * Class template can be used to determine if _TypeT is an enumeration. @@ -235,8 +233,7 @@ { }; -#define _RWSTD_IS_UNION(T) \ - _RW::__rw_is_union<T>::value +#define _RWSTD_IS_UNION(T) _RW::__rw_is_union<T>::value /** @@ -248,8 +245,7 @@ { }; -#define _RWSTD_IS_CLASS(T) \ - _RW::__rw_is_class<T>::value +#define _RWSTD_IS_CLASS(T) _RW::__rw_is_class<T>::value /** @@ -307,8 +303,7 @@ { }; -#define _RWSTD_IS_FUNCTION(T) \ - _RW::__rw_is_function<T>::value +#define _RWSTD_IS_FUNCTION(T) _RW::__rw_is_function<T>::value /** * UnaryTypeTrait to determine if _TypeT is a pointer to member @@ -323,9 +318,10 @@ _TypeT _ClassT::*, !__rw_is_function<_TypeT>::value); -#define _RWSTD_IS_MEMOBJ_PTR(T) \ +#define _RWSTD_IS_MEMBER_OBJECT_PTR(T) \ _RW::__rw_is_member_object_pointer<T>::value + /** * UnaryTypeTrait to determine if _TypeT is a pointer to member * function type. @@ -339,7 +335,7 @@ _TypeT _ClassT::*, __rw_is_function<_TypeT>::value); -#define _RWSTD_IS_MEMFUN_PTR(T) \ +#define _RWSTD_IS_MEMBER_FUNCTION_PTR(T) \ _RW::__rw_is_member_function_pointer<T>::value #undef _RWSTD_TRAIT_SPEC_2_CV Modified: stdcxx/branches/4.3.x/include/rw/_meta_comp.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_comp.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_comp.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_comp.h Tue Jun 24 11:23:32 2008 @@ -46,6 +46,8 @@ { }; +#define _RWSTD_IS_REFERENCE(T) _RW::__rw_is_reference<T>::value + /** * UnaryTypeTrait indicates that _TypeT is an arithmethic type. * @@ -59,6 +61,8 @@ { }; +#define _RWSTD_IS_ARITHMETIC(T) _RW::__rw_is_arithmetic<T>::value + /** * UnaryTypeTrait indicates that _TypeT is an fundamental type. * @@ -72,6 +76,8 @@ { }; +#define _RWSTD_IS_FUNDAMENTAL(T) _RW::__rw_is_fundamental<T>::value + /** * UnaryTypeTrait indicates that _TypeT is an object type. @@ -87,6 +93,9 @@ { }; +#define _RWSTD_IS_OBJECT(T) _RW::__rw_is_object<T>::value + + /** * UnaryTypeTrait indicates that _TypeT is a member pointer type. * @@ -101,6 +110,8 @@ { }; +#define _RWSTD_IS_MEMBER_POINTER(T) _RW::__rw_is_member_pointer<T>::value + /** * UnaryTypeTrait indicates that _TypeT is a scalar type. * @@ -122,6 +133,9 @@ */ }; +#define _RWSTD_IS_SCALAR(T) _RW::__rw_is_scalar<T>::value + + /** * UnaryTypeTrait indicates that _TypeT is a compound type. * @@ -141,6 +155,9 @@ { }; +#define _RWSTD_IS_COMPOUND(T) _RW::__rw_is_compound<T>::value + + } // namespace __rw Modified: stdcxx/branches/4.3.x/include/rw/_meta_cv.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_cv.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_cv.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_cv.h Tue Jun 24 11:23:32 2008 @@ -58,6 +58,8 @@ typedef _TypeT type; }; +#define _RWSTD_REMOVE_CONST(T) _RW::__rw_remove_const<T>::type + /** * TransformationTrait strips any top level volatile-qualifier from _TypeT. @@ -81,6 +83,8 @@ typedef _TypeT type; }; +#define _RWSTD_REMOVE_VOLATILE(T) _RW::__rw_remove_volatile<T>::type + /** * TransformationTrait strips top level cv-qualifiers from _TypeT. */ @@ -92,6 +96,9 @@ >::type type; }; +#define _RWSTD_REMOVE_CV(T) _RW::__rw_remove_cv<T>::type + + template <class _TypeT, bool = __rw_is_function<_TypeT>::value || __rw_is_reference<_TypeT>::value> struct __rw_add_const_impl @@ -118,6 +125,8 @@ typedef typename __rw_add_const_impl<_TypeT>::_C_type type; }; +#define _RWSTD_ADD_CONST(T) _RW::__rw_add_const<T>::type + template <class _TypeT, bool = __rw_is_function<_TypeT>::value || __rw_is_reference<_TypeT>::value> @@ -145,6 +154,9 @@ typedef typename __rw_add_volatile_impl<_TypeT>::_C_type type; }; +#define _RWSTD_ADD_VOLATILE(T) _RW::__rw_add_volatile<T>::type + + /** * Trait adds top level cv-qualifiers to _TypeT. */ @@ -157,6 +169,8 @@ >::type type; }; +#define _RWSTD_ADD_CV(T) _RW::__rw_add_cv<T>::type + } // namespace __rw Modified: stdcxx/branches/4.3.x/include/rw/_meta_prop.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_prop.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_prop.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_prop.h Tue Jun 24 11:23:32 2008 @@ -57,6 +57,9 @@ { }; +#define _RWSTD_IS_CONST(T) _RW::__rw_is_const<T>::value + + /** * UnaryTypeTrait indicates that _TypeT is volatile-qualified. */ @@ -70,6 +73,8 @@ { }; +#define _RWSTD_IS_VOLATILE(T) _RW::__rw_is_volatile<T>::value + template <class _TypeT> struct __rw_is_standard_layout_impl @@ -130,6 +135,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_IS_STANDARD_LAYOUT(T) _RW::__rw_is_standard_layout<T>::value + + /** * UnaryTypeTrait indicates that _TypeT is a pod type. * @@ -145,6 +153,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_IS_POD(T) _RW::__rw_is_pod<T>::value + + /** * UnaryTypeTrait indicates that _TypeT is an empty type. * @@ -160,6 +171,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_IS_EMPTY(T) _RW::__rw_is_empty<T>::value + + /** * UnaryTypeTrait indicates that _TypeT is a polymorphic type. * @@ -175,6 +189,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_IS_POLYMORPHIC(T) _RW::__rw_is_polymorphic<T>::value + + /** * UnaryTypeTrait indicates that _TypeT is an abstract type. * @@ -190,6 +207,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_IS_ABSTRACT(T) _RW::__rw_is_abstract<T>::value + + /** * UnaryTypeTrait indicates that _TypeT has a trivial default constructor. * @@ -205,6 +225,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_HAS_TRIVIAL_CTOR(T) _RW::__rw_has_trivial_ctor<T>::value + + /** * UnaryTypeTrait indicates that _TypeT has a trivial copy constructor. * @@ -220,6 +243,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_HAS_TRIVIAL_COPY(T) _RW::__rw_has_trivial_copy<T>::value + + /** * UnaryTypeTrait indicates that _TypeT has a trivial assignment operator. * @@ -235,6 +261,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_HAS_TRIVIAL_ASSIGN(T) _RW::__rw_has_trivial_assign<T>::value + + /** * UnaryTypeTrait indicates that _TypeT has a trivial destructor. * @@ -250,6 +279,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_HAS_TRIVIAL_DTOR(T) _RW::__rw_has_trivial_dtor<T>::value + + /** * UnaryTypeTrait indicates that _TypeT is a trivial type or * an array of trivial type. @@ -287,6 +319,8 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_IS_TRIVIAL(T) _RW::__rw_is_trivial<T>::value + /** * UnaryTypeTrait to determine if _TypeT has a nothrow default constructor. * @@ -302,6 +336,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_HAS_NOTHROW_CTOR(T) _RW::__rw_has_nothrow_ctor<T>::value + + /** * UnaryTypeTrait indicates that _TypeT has a nothrow copy constructor. * @@ -317,6 +354,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_HAS_NOTHROW_COPY(T) _RW::__rw_has_nothrow_copy<T>::value + + /** * UnaryTypeTrait indicates that _TypeT has a nothrow assignment operator. * @@ -332,6 +372,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_HAS_NOTHROW_ASSIGN(T) _RW::__rw_has_nothrow_assign<T>::value + + /** * UnaryTypeTrait indicates that _TypeT has a virtual destructor. * @@ -347,6 +390,9 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_HAS_VIRTUAL_DTOR(T) _RW::__rw_has_virtual_dtor<T>::value + + /** * UnaryTypeTrait that indicates that _TypeT is an unsigned type. */ @@ -401,6 +447,10 @@ _RWSTD_TRAIT_SPEC_0_CV(__rw_is_signed, long double); #endif // _RWSTD_NO_LONG_DOUBLE +#define _RWSTD_IS_SIGNED(T) _RW::__rw_is_signed<T>::value +#define _RWSTD_IS_UNSIGNED(T) _RW::__rw_is_unsigned<T>::value + + /** * UnaryTypeTrait that gets the alignment of _TypeT. */ @@ -413,6 +463,8 @@ // || _RWSTD_IS_VOID (_TypeT)); }; +#define _RWSTD_ALIGNMENT_OF(T) _RW::__rw_alignment_of<T>::value + /** * UnaryTypeTrait gives the number of dimensions of the type _TypeT, if * _TypeT is an array, otherwise 0. The primary template is for non-array @@ -446,6 +498,8 @@ { }; +#define _RWSTD_RANK(T) _RW::__rw_rank<T>::value + /** * UnaryTypeTrait gives the size of the _Depth dimension of _TypeT. @@ -480,6 +534,9 @@ { }; +#define _RWSTD_EXTENT_1(T) _RW::__rw_extent<T>::value +#define _RWSTD_EXTENT_2(T,D) _RW::__rw_extent<T,D>::value + } // namespace __rw Modified: stdcxx/branches/4.3.x/include/rw/_meta_ptr.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_ptr.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_ptr.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_ptr.h Tue Jun 24 11:23:32 2008 @@ -55,7 +55,7 @@ typedef _TypeT type; }; -//#define _RWSTD_REMOVE_POINTER(T) typename _RW::__rw_remove_pointer<T>::type +#define _RWSTD_REMOVE_POINTER(T) _RW::__rw_remove_pointer<T>::type /** * TransformationTrait adds a single level of pointer indirection to @@ -68,7 +68,7 @@ __rw_remove_reference<_TypeT>::type* type; }; -//#define _RWSTD_ADD_POINTER(T) typename _RW::__rw_add_pointer<T>::type +#define _RWSTD_ADD_POINTER(T) _RW::__rw_add_pointer<T>::type } // namespace __rw Modified: stdcxx/branches/4.3.x/include/rw/_meta_ref.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_ref.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_ref.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_ref.h Tue Jun 24 11:23:32 2008 @@ -76,6 +76,9 @@ #endif // _RWSTD_NO_RVALUE_REFERENCES +#define _RWSTD_REMOVE_REFERENCE(T) _RW::__rw_remove_reference<T>::type + + template <class _TypeT, bool = !__rw_is_void<_TypeT>::value && !__rw_is_reference<_TypeT>::value, bool = __rw_is_rvalue_reference<_TypeT>::value> @@ -111,6 +114,8 @@ __rw_add_lvalue_reference_impl<_TypeT>::_C_type type; }; +#define _RWSTD_ADD_LVALUE_REFERENCE(T) _RW::__rw_add_lvalue_reference<T>::type + template <class _TypeT, bool = __rw_is_object<_TypeT>::value || __rw_is_function<_TypeT>::_C_type> @@ -141,6 +146,7 @@ __rw_add_rvalue_reference_impl<_TypeT>::_C_type type; }; +#define _RWSTD_ADD_RVALUE_REFERENCE(T) _RW::__rw_add_rvalue_reference<T>::type } // namespace __rw Modified: stdcxx/branches/4.3.x/include/rw/_meta_rel.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_rel.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_rel.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_rel.h Tue Jun 24 11:23:32 2008 @@ -64,8 +64,7 @@ { }; -#define _RWSTD_IS_SAME(T,U) \ - __rw_is_same<T,U>::value +#define _RWSTD_IS_SAME(T,U) _RW::__rw_is_same<T,U>::value /** * BinaryTypeTrait indicates that _TypeT is a base class of _TypeU @@ -85,8 +84,7 @@ // || }; -#define _RWSTD_IS_BASE_OF(T,U) \ - __rw_is_base_of<T,U>::value +#define _RWSTD_IS_BASE_OF(T,U) _RW::__rw_is_base_of<T,U>::value /** @@ -200,8 +198,7 @@ // || _RWSTD_IS_VOID (_TypeT)); }; -#define _RWSTD_IS_CONVERTIBLE(T,U) \ - __rw_is_convertible<T,U>::value +#define _RWSTD_IS_CONVERTIBLE(T,U) _RW::__rw_is_convertible<T,U>::value } // namespace __rw Modified: stdcxx/branches/4.3.x/include/rw/_meta_sign.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_sign.h?rev=671285&r1=671284&r2=671285&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_sign.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_sign.h Tue Jun 24 11:23:32 2008 @@ -276,7 +276,7 @@ typedef _TypeU type; }; -//#define _RWSTD_MAKE_SIGNED(T) typename _RW::__rw_make_signed<T>::type +#define _RWSTD_MAKE_SIGNED(T) _RW::__rw_make_signed<T>::type /** * If _TypeT names a (possibly cv-qualified) unsigned integral type then the @@ -321,7 +321,7 @@ typedef _TypeU type; }; -//#define _RWSTD_MAKE_UNSIGNED(T) typename _RW::__rw_make_unsigned<T>::type +#define _RWSTD_MAKE_UNSIGNED(T) _RW::__rw_make_unsigned<T>::type } // namespace __rw