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] Simplify some macros


Hi,

tested x86_64-linux, committed to mainline.

Paolo.

/////////////////
2007-11-18  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits (_DEFINE_SPEC_BODY): Remove.
	(_DEFINE_SPEC_0_HELPER): Rename to _DEFINE_SPEC_HELPER.
	(_DEFINE_SPEC): Simplify; adjust uses.
Index: include/tr1/type_traits
===================================================================
--- include/tr1/type_traits	(revision 130272)
+++ include/tr1/type_traits	(working copy)
@@ -60,19 +60,16 @@
 {
 namespace tr1
 {
-#define _DEFINE_SPEC_BODY(_Value)                                    \
-    : public integral_constant<bool, _Value> { };
+#define _DEFINE_SPEC_HELPER(_Spec)                 \
+  template<>                                       \
+    struct _Spec                                   \
+    : public true_type { };
 
-#define _DEFINE_SPEC_0_HELPER(_Spec, _Value)                         \
-  template<>                                                         \
-    struct _Spec                                                     \
-    _DEFINE_SPEC_BODY(_Value)
-
-#define _DEFINE_SPEC(_Order, _Trait, _Type, _Value)                  \
-  _DEFINE_SPEC_##_Order##_HELPER(_Trait<_Type>, _Value)              \
-  _DEFINE_SPEC_##_Order##_HELPER(_Trait<_Type const>, _Value)        \
-  _DEFINE_SPEC_##_Order##_HELPER(_Trait<_Type volatile>, _Value)     \
-  _DEFINE_SPEC_##_Order##_HELPER(_Trait<_Type const volatile>, _Value)
+#define _DEFINE_SPEC(_Trait, _Type)                \
+  _DEFINE_SPEC_HELPER(_Trait<_Type>)               \
+  _DEFINE_SPEC_HELPER(_Trait<_Type const>)         \
+  _DEFINE_SPEC_HELPER(_Trait<_Type volatile>)      \
+  _DEFINE_SPEC_HELPER(_Trait<_Type const volatile>)
 
   template<typename>
     struct is_reference
@@ -125,20 +122,20 @@
   template<typename>
     struct is_signed
     : public false_type { };
-  _DEFINE_SPEC(0, is_signed, signed char, true)
-  _DEFINE_SPEC(0, is_signed, short, true)
-  _DEFINE_SPEC(0, is_signed, int, true)
-  _DEFINE_SPEC(0, is_signed, long, true)
-  _DEFINE_SPEC(0, is_signed, long long, true)
+  _DEFINE_SPEC(is_signed, signed char)
+  _DEFINE_SPEC(is_signed, short)
+  _DEFINE_SPEC(is_signed, int)
+  _DEFINE_SPEC(is_signed, long)
+  _DEFINE_SPEC(is_signed, long long)
 
   template<typename>
     struct is_unsigned
     : public false_type { };
-  _DEFINE_SPEC(0, is_unsigned, unsigned char, true)
-  _DEFINE_SPEC(0, is_unsigned, unsigned short, true)
-  _DEFINE_SPEC(0, is_unsigned, unsigned int, true)
-  _DEFINE_SPEC(0, is_unsigned, unsigned long, true)
-  _DEFINE_SPEC(0, is_unsigned, unsigned long long, true)
+  _DEFINE_SPEC(is_unsigned, unsigned char)
+  _DEFINE_SPEC(is_unsigned, unsigned short)
+  _DEFINE_SPEC(is_unsigned, unsigned int)
+  _DEFINE_SPEC(is_unsigned, unsigned long)
+  _DEFINE_SPEC(is_unsigned, unsigned long long)
 
   template<typename _Base, typename _Derived>
     struct __is_base_of_helper
@@ -244,9 +241,8 @@
       };
     };
 
-#undef _DEFINE_SPEC_0_HELPER
+#undef _DEFINE_SPEC_HELPER
 #undef _DEFINE_SPEC
-#undef _DEFINE_SPEC_BODY
 }
 }
 

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