This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] tr1/type_traits separate forward declarations


Hi,

in preparation for further work. Tested x86-linux, committed.

Paolo.

////////////////////
2004-12-22  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits_fwd.h: New, forward declarations.
	* include/tr1/type_traits: Clean-up.
	* include/Makefile.am: Add.
	* include/Makefile.in: Regenerate.
diff -prN libstdc++-v3-orig/include/Makefile.am libstdc++-v3/include/Makefile.am
*** libstdc++-v3-orig/include/Makefile.am	Sat Dec  4 10:08:38 2004
--- libstdc++-v3/include/Makefile.am	Wed Dec 22 16:46:00 2004
*************** tr1_headers = \
*** 232,238 ****
  	${tr1_srcdir}/functional \
  	${tr1_srcdir}/tuple \
  	${tr1_srcdir}/utility \
! 	${tr1_srcdir}/type_traits
  
  
  # This is the common subset of files that all three "C" header models use.
--- 232,239 ----
  	${tr1_srcdir}/functional \
  	${tr1_srcdir}/tuple \
  	${tr1_srcdir}/utility \
! 	${tr1_srcdir}/type_traits \
! 	${tr1_srcdir}/type_traits_fwd.h
  
  
  # This is the common subset of files that all three "C" header models use.
diff -prN libstdc++-v3-orig/include/Makefile.in libstdc++-v3/include/Makefile.in
*** libstdc++-v3-orig/include/Makefile.in	Sat Dec  4 10:08:38 2004
--- libstdc++-v3/include/Makefile.in	Wed Dec 22 16:46:06 2004
*************** tr1_headers = \
*** 449,455 ****
  	${tr1_srcdir}/functional \
  	${tr1_srcdir}/tuple \
  	${tr1_srcdir}/utility \
! 	${tr1_srcdir}/type_traits
  
  
  # This is the common subset of files that all three "C" header models use.
--- 449,456 ----
  	${tr1_srcdir}/functional \
  	${tr1_srcdir}/tuple \
  	${tr1_srcdir}/utility \
! 	${tr1_srcdir}/type_traits \
! 	${tr1_srcdir}/type_traits_fwd.h
  
  
  # This is the common subset of files that all three "C" header models use.
diff -prN libstdc++-v3-orig/include/tr1/type_traits libstdc++-v3/include/tr1/type_traits
*** libstdc++-v3-orig/include/tr1/type_traits	Thu Dec 16 16:00:36 2004
--- libstdc++-v3/include/tr1/type_traits	Wed Dec 22 19:13:17 2004
***************
*** 26,32 ****
  #define _TYPE_TRAITS 1
  
  #include <bits/c++config.h>
! #include <cstddef>
  
  // namespace std::tr1
  namespace std
--- 26,32 ----
  #define _TYPE_TRAITS 1
  
  #include <bits/c++config.h>
! #include <tr1/type_traits_fwd.h>
  
  // namespace std::tr1
  namespace std
*************** namespace tr1
*** 120,151 ****
      : public true_type { };
    
    template<typename _Tp>
-     struct is_member_object_pointer;
-   
-   template<typename _Tp>
-     struct is_member_function_pointer;   
- 
-   template<typename _Tp>
-     struct is_enum;
-   
-   template<typename _Tp>
-     struct is_union;
-   
-   template<typename _Tp>
-     struct is_class;
- 
-   template<typename _Tp>
      struct __is_function_helper
      : public __sfinae_types
      {
      private:
        template<typename>
!         static __one
!         __test(...);
  
        template<typename _Up>
!         static __two
!         __test(_Up (*) [1]);
      
      public:
        static const bool __value = sizeof(__test<_Tp>(0)) == 1;
--- 120,134 ----
      : public true_type { };
    
    template<typename _Tp>
      struct __is_function_helper
      : public __sfinae_types
      {
      private:
        template<typename>
!         static __one __test(...);
  
        template<typename _Up>
!         static __two __test(_Up(*)[1]);
      
      public:
        static const bool __value = sizeof(__test<_Tp>(0)) == 1;
*************** namespace tr1
*** 179,202 ****
      { };
  
    template<typename _Tp>
-     struct is_member_pointer
-     : public integral_constant<bool,
- 			       (is_member_object_pointer<_Tp>::value
- 				|| is_member_function_pointer<_Tp>::value)>
-     { };
-   
-   template<typename _Tp>
      struct is_scalar
      : public integral_constant<bool, (is_arithmetic<_Tp>::value
  				      || is_enum<_Tp>::value
  				      || is_pointer<_Tp>::value
  				      || is_member_pointer<_Tp>::value)>
      { };
!   
    template<typename _Tp>
      struct is_compound
      : public integral_constant<bool, !is_fundamental<_Tp>::value> { };
!    
    /// @brief  type properties [4.5.3].
    template<typename>
      struct is_const
--- 162,185 ----
      { };
  
    template<typename _Tp>
      struct is_scalar
      : public integral_constant<bool, (is_arithmetic<_Tp>::value
  				      || is_enum<_Tp>::value
  				      || is_pointer<_Tp>::value
  				      || is_member_pointer<_Tp>::value)>
      { };
! 
    template<typename _Tp>
      struct is_compound
      : public integral_constant<bool, !is_fundamental<_Tp>::value> { };
! 
!   template<typename _Tp>
!     struct is_member_pointer
!     : public integral_constant<bool,
! 			       (is_member_object_pointer<_Tp>::value
! 				|| is_member_function_pointer<_Tp>::value)>
!     { };
!   
    /// @brief  type properties [4.5.3].
    template<typename>
      struct is_const
*************** namespace tr1
*** 214,265 ****
      struct is_volatile<_Tp volatile>
      : public true_type { };
  
!   template<typename _Tp>
!     struct is_pod;
!   
!   template<typename _Tp>
!     struct is_empty;
!   
!   template<typename _Tp>
!     struct is_polymorphic;
!   
!   template<typename _Tp>
!     struct is_abstract;
!   
!   template<typename _Tp>
!     struct has_trivial_constructor;
!   
!   template<typename _Tp>
!     struct has_trivial_copy;
! 
!   template<typename _Tp>
!     struct has_trivial_assign;
!   
!   template<typename _Tp>
!     struct has_trivial_destructor;
!   
!   template<typename _Tp>
!     struct has_nothrow_constructor;
!   
!   template<typename _Tp>
!     struct has_nothrow_copy;
! 
!   template<typename _Tp>
!     struct has_nothrow_assign;
!   
!   template<typename _Tp>
      struct has_virtual_destructor
      : public false_type { };
    
-   template<typename _Tp>
-     struct is_signed;
-   
-   template<typename _Tp>
-     struct is_unsigned;
-    
-   template<typename _Tp>
-     struct alignment_of;
-   
    template<typename>
      struct rank
      : public integral_constant<std::size_t, 0> { };
--- 197,206 ----
      struct is_volatile<_Tp volatile>
      : public true_type { };
  
!   template<typename>
      struct has_virtual_destructor
      : public false_type { };
    
    template<typename>
      struct rank
      : public integral_constant<std::size_t, 0> { };
*************** namespace tr1
*** 272,278 ****
      struct rank<_Tp[]>
      : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
     
!   template<typename, unsigned = 0>
      struct extent
      : public integral_constant<std::size_t, 0> { };
    
--- 213,219 ----
      struct rank<_Tp[]>
      : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
     
!   template<typename, unsigned>
      struct extent
      : public integral_constant<std::size_t, 0> { };
    
*************** namespace tr1
*** 299,310 ****
      struct is_same<_Tp, _Tp>
      : public true_type { };
  
-   template<typename _From, typename _To>
-     struct is_convertible;
-   
-   template<typename _Base, typename _Derived>
-     struct is_base_of;
- 
    /// @brief  const-volatile modifications [4.7.1].
    template<typename _Tp>
      struct remove_const
--- 240,245 ----
*************** namespace tr1
*** 403,410 ****
      { typedef typename remove_reference<_Tp>::type*     type; };
  
    /// @brief  other transformations [4.8].
-   template<std::size_t _Len, std::size_t _Align>
-     struct aligned_storage;
  
  #undef _DEFINE_SPEC_HELPER
  #undef _DEFINE_SPEC
--- 338,343 ----
diff -prN libstdc++-v3-orig/include/tr1/type_traits_fwd.h libstdc++-v3/include/tr1/type_traits_fwd.h
*** libstdc++-v3-orig/include/tr1/type_traits_fwd.h	Thu Jan  1 01:00:00 1970
--- libstdc++-v3/include/tr1/type_traits_fwd.h	Wed Dec 22 19:17:50 2004
***************
*** 0 ****
--- 1,212 ----
+ // TR1 type_traits -*- C++ -*-
+ 
+ // Copyright (C) 2004 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+ 
+ /** @file type_traits_fwd.h
+  *  This is an internal header file, included by other library headers.
+  *  You should not attempt to use it directly.
+  */
+ 
+ #ifndef _TYPE_TRAITS_FWD_H
+ #define _TYPE_TRAITS_FWD_H 1
+ 
+ #include <cstddef>
+ 
+ // namespace std::tr1
+ namespace std
+ {
+ namespace tr1
+ {
+   /// @brief  helper classes [4.3].
+   template<typename _Tp, _Tp __v>
+     struct integral_constant;
+   typedef integral_constant<bool, true>     true_type;
+   typedef integral_constant<bool, false>    false_type;
+ 
+   /// @brief  primary type categories [4.5.1].
+   template<typename _Tp>
+     struct is_void;
+ 
+   template<typename _Tp>
+     struct is_integral;
+ 
+   template<typename _Tp>
+     struct is_floating_point;
+ 
+   template<typename _Tp>
+     struct is_array;
+   
+   template<typename _Tp>
+     struct is_pointer;
+  
+   template<typename _Tp>
+     struct is_reference;
+ 
+   template<typename _Tp>
+     struct is_member_object_pointer;
+   
+   template<typename _Tp>
+     struct is_member_function_pointer;   
+ 
+   template<typename _Tp>
+     struct is_enum;
+   
+   template<typename _Tp>
+     struct is_union;
+   
+   template<typename _Tp>
+     struct is_class;
+ 
+   template<typename _Tp>
+     struct is_function;
+ 
+   /// @brief  composite type traits [4.5.2].
+   template<typename _Tp>
+     struct is_arithmetic;
+ 
+   template<typename _Tp>
+     struct is_fundamental;
+ 
+   template<typename _Tp>
+     struct is_object;
+ 
+   template<typename _Tp>
+     struct is_scalar;
+ 
+   template<typename _Tp>
+     struct is_compound;
+ 
+   template<typename _Tp>
+     struct is_member_pointer;
+    
+   /// @brief  type properties [4.5.3].
+   template<typename _Tp>
+     struct is_const;
+   
+   template<typename _Tp>
+     struct is_volatile;
+ 
+   template<typename _Tp>
+     struct is_pod;
+   
+   template<typename _Tp>
+     struct is_empty;
+   
+   template<typename _Tp>
+     struct is_polymorphic;
+   
+   template<typename _Tp>
+     struct is_abstract;
+   
+   template<typename _Tp>
+     struct has_trivial_constructor;
+   
+   template<typename _Tp>
+     struct has_trivial_copy;
+ 
+   template<typename _Tp>
+     struct has_trivial_assign;
+   
+   template<typename _Tp>
+     struct has_trivial_destructor;
+   
+   template<typename _Tp>
+     struct has_nothrow_constructor;
+   
+   template<typename _Tp>
+     struct has_nothrow_copy;
+ 
+   template<typename _Tp>
+     struct has_nothrow_assign;
+   
+   template<typename _Tp>
+     struct has_virtual_destructor;
+   
+   template<typename _Tp>
+     struct is_signed;
+   
+   template<typename _Tp>
+     struct is_unsigned;
+    
+   template<typename _Tp>
+     struct alignment_of;
+   
+   template<typename _Tp>
+     struct rank;
+   
+   template<typename _Tp, unsigned _Uint = 0>
+     struct extent;
+   
+   /// @brief  relationships between types [4.6].
+   template<typename _Tp, typename _Up>
+     struct is_same;
+ 
+   template<typename _From, typename _To>
+     struct is_convertible;
+ 
+   template<typename _Base, typename _Derived>
+     struct is_base_of;
+ 
+   /// @brief  const-volatile modifications [4.7.1].
+   template<typename _Tp>
+     struct remove_const;
+   
+   template<typename _Tp>
+     struct remove_volatile;
+   
+   template<typename _Tp>
+     struct remove_cv;
+   
+   template<typename _Tp>
+     struct add_const;
+    
+   template<typename _Tp>
+     struct add_volatile;
+   
+   template<typename _Tp>
+     struct add_cv;
+ 
+   /// @brief  reference modifications [4.7.2].
+   template<typename _Tp>
+     struct remove_reference;
+   
+   template<typename _Tp>
+     struct add_reference;
+ 
+   /// @brief  array modififications [4.7.3].
+   template<typename _Tp>
+     struct remove_extent;
+ 
+   template<typename _Tp>
+     struct remove_all_extents;
+ 
+   /// @brief  pointer modifications [4.7.4].
+   template<typename _Tp>
+     struct remove_pointer;
+   
+   template<typename _Tp>
+     struct add_pointer;
+ 
+   /// @brief  other transformations [4.8].
+   template<std::size_t _Len, std::size_t _Align>
+     struct aligned_storage;
+ }
+ }
+ 
+ #endif

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]