Author: faridz
Date: Wed Feb 21 02:38:19 2007
New Revision: 509962

URL: http://svn.apache.org/viewvc?view=rev&rev=509962
Log:
2007-02-21 Farid Zaripov <[EMAIL PROTECTED]>

        ChangeLog:
        * rw_sigdefs.h: New file with definitions of helpers macros
        to define member and non-member functions overload id's
        * 21.strings.h: Helper macros moved from here to rw_sigdefs.h

Added:
    incubator/stdcxx/trunk/tests/include/rw_sigdefs.h   (with props)
Modified:
    incubator/stdcxx/trunk/tests/include/21.strings.h

Modified: incubator/stdcxx/trunk/tests/include/21.strings.h
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/include/21.strings.h?view=diff&rev=509962&r1=509961&r2=509962
==============================================================================
--- incubator/stdcxx/trunk/tests/include/21.strings.h (original)
+++ incubator/stdcxx/trunk/tests/include/21.strings.h Wed Feb 21 02:38:19 2007
@@ -144,59 +144,8 @@
         bit_member = 1 << (fid_bits + 6 * arg_bits)
     };
 
-// FCAT() concatenates prefix, underscrore, and suffix
-#define _FCAT(a, b)             a ## b
-#define FCAT(a, b)              _FCAT (a ## _, b)
-
-// FID_N() constructs the name for an overload of a string function
-#define FID_0(f)                FCAT (f, void)
-#define FID_1(f, a)             FCAT (f, a)
-#define FID_2(f, a, b)          FID_1 (FCAT (f, a), b)
-#define FID_3(f, a, b, c)       FID_2 (FCAT (f, a), b, c)
-#define FID_4(f, a, b, c, d)    FID_3 (FCAT (f, a), b, c, d)
-#define FID_5(f, a, b, c, d, e) FID_4 (FCAT (f, a), b, c, d, e)
-
-// ARG() creates a bitmap of an argument type at the given position
-#define ARG(a, N)   ((arg_ ## a << (N * arg_bits)) << fid_bits)
-
-// SIG_N() creates an argument bitmap for the given function signature
-#define SIG_0(f)                   fid_ ## f
-#define SIG_1(f, a)                SIG_0 (f) | ARG (a, 0)
-#define SIG_2(f, a, b)             SIG_1 (f, a) | ARG (b, 1)
-#define SIG_3(f, a, b, c)          SIG_2 (f, a, b) | ARG (c, 2)
-#define SIG_4(f, a, b, c, d)       SIG_3 (f, a, b, c) | ARG (d, 3)
-#define SIG_5(f, a, b, c, d, e)    SIG_4 (f, a, b, c, d) | ARG (e, 4)
-#define SIG_6(f, a, b, c, d, e, g) SIG_5 (f, a, b, c, d, e) | ARG (g, 5)
-
-// convenience macro to define member function overload id's
-// where the first argument encodes the constness of the member
-// function (or the lack thereof)
-#define MEMBER_0(f, self) \
-        FID_0 (f) = SIG_1 (f, self) | bit_member
-#define MEMBER_1(f, self, a) \
-        FID_1 (f, a) = SIG_2 (f, self, a) | bit_member
-#define MEMBER_2(f, self, a, b) \
-        FID_2 (f, a, b) = SIG_3 (f, self, a, b) | bit_member
-#define MEMBER_3(f, self, a, b, c) \
-        FID_3 (f, a, b, c) = SIG_4 (f, self, a, b, c) | bit_member
-#define MEMBER_4(f, self, a, b, c, d) \
-        FID_4 (f, a, b, c, d) = SIG_5 (f, self, a, b, c, d) | bit_member
-#define MEMBER_5(f, self, a, b, c, d, e) \
-        FID_5 (f, a, b, c, d, e) = SIG_6 (f, self, a, b, c, d, e) | bit_member
-
-// convenience macro to define non-member function overload id's
-#define NON_MEMBER_0(f) \
-        FID_0 (f) = SIG_0 (f)
-#define NON_MEMBER_1(f, a) \
-        FID_1 (f, a) = SIG_1 (f, a)
-#define NON_MEMBER_2(f, a, b) \
-        FID_2 (f, a, b) = SIG_2 (f, a, b)
-#define NON_MEMBER_3(f, a, b, c) \
-        FID_3 (f, a, b, c) = SIG_3 (f, a, b, c)
-#define NON_MEMBER_4(f, a, b, c, d) \
-        FID_4 (f, a, b, c, d) = SIG_4 (f, a, b, c, d)
-#define NON_MEMBER_5(f, a, b, c, d, e) \
-        FID_5 (f, a, b, c, d, e) = SIG_5 (f, a, b, c, d, e)
+// define the helper macros
+#include <rw_sigdefs.h>
 
     // unique identifiers for all overloads of each member function
     //     6 bits for FuncId
@@ -619,30 +568,7 @@
     };
 
 // clean up helper macros used above
-#undef _FCAT
-#undef FCAT
-#undef FID_0
-#undef FID_1
-#undef FID_2
-#undef FID_3
-#undef FID_4
-#undef FID_5
-
-#undef ARG
-
-#undef SIG_0
-#undef SIG_1
-#undef SIG_2
-#undef SIG_3
-#undef SIG_4
-#undef SIG_5
-
-#undef MEMBER_0
-#undef MEMBER_1
-#undef MEMBER_2
-#undef MEMBER_3
-#undef MEMBER_4
-#undef MEMBER_5
+#include <rw_sigdefs.h>
 
     static ArgId arg_type (OverloadId id, int argno) {
         return ArgId (((int (id) >> fid_bits) >> argno * arg_bits) & arg_mask);

Added: incubator/stdcxx/trunk/tests/include/rw_sigdefs.h
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/include/rw_sigdefs.h?view=auto&rev=509962
==============================================================================
--- incubator/stdcxx/trunk/tests/include/rw_sigdefs.h (added)
+++ incubator/stdcxx/trunk/tests/include/rw_sigdefs.h Wed Feb 21 02:38:19 2007
@@ -0,0 +1,115 @@
+ /************************************************************************
+ *
+ * rw_sigdefs.h - definitions of helpers macros to define member and
+ *                non-member functions overload id's
+ *
+ * $Id$
+ *
+ ***************************************************************************
+ *
+ * Licensed to the Apache Software  Foundation (ASF) under one or more
+ * contributor  license agreements.  See  the NOTICE  file distributed
+ * with  this  work  for  additional information  regarding  copyright
+ * ownership.   The ASF  licenses this  file to  you under  the Apache
+ * License, Version  2.0 (the  "License"); you may  not use  this file
+ * except in  compliance with the License.   You may obtain  a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the  License is distributed on an  "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
+ * implied.   See  the License  for  the  specific language  governing
+ * permissions and limitations under the License.
+ * 
+ **************************************************************************/
+
+#ifndef RW_SIGDEFS_H_INCLUDED
+#define RW_SIGDEFS_H_INCLUDED
+
+// FCAT() concatenates prefix, underscrore, and suffix
+#define _FCAT(a, b)             a ## b
+#define FCAT(a, b)              _FCAT (a ## _, b)
+
+// FID_N() constructs the name for an overload of a container function
+#define FID_0(f)                FCAT (f, void)
+#define FID_1(f, a)             FCAT (f, a)
+#define FID_2(f, a, b)          FID_1 (FCAT (f, a), b)
+#define FID_3(f, a, b, c)       FID_2 (FCAT (f, a), b, c)
+#define FID_4(f, a, b, c, d)    FID_3 (FCAT (f, a), b, c, d)
+#define FID_5(f, a, b, c, d, e) FID_4 (FCAT (f, a), b, c, d, e)
+
+// ARG() creates a bitmap of an argument type at the given position
+#define ARG(a, N)   ((arg_ ## a << (N * arg_bits)) << fid_bits)
+
+// SIG_N() creates an argument bitmap for the given function signature
+#define SIG_0(f)                   fid_ ## f
+#define SIG_1(f, a)                SIG_0 (f) | ARG (a, 0)
+#define SIG_2(f, a, b)             SIG_1 (f, a) | ARG (b, 1)
+#define SIG_3(f, a, b, c)          SIG_2 (f, a, b) | ARG (c, 2)
+#define SIG_4(f, a, b, c, d)       SIG_3 (f, a, b, c) | ARG (d, 3)
+#define SIG_5(f, a, b, c, d, e)    SIG_4 (f, a, b, c, d) | ARG (e, 4)
+#define SIG_6(f, a, b, c, d, e, g) SIG_5 (f, a, b, c, d, e) | ARG (g, 5)
+
+// convenience macro to define member function overload id's
+// where the first argument encodes the constness of the member
+// function (or the lack thereof)
+#define MEMBER_0(f, self) \
+    FID_0 (f) = SIG_1 (f, self) | bit_member
+#define MEMBER_1(f, self, a) \
+    FID_1 (f, a) = SIG_2 (f, self, a) | bit_member
+#define MEMBER_2(f, self, a, b) \
+    FID_2 (f, a, b) = SIG_3 (f, self, a, b) | bit_member
+#define MEMBER_3(f, self, a, b, c) \
+    FID_3 (f, a, b, c) = SIG_4 (f, self, a, b, c) | bit_member
+#define MEMBER_4(f, self, a, b, c, d) \
+    FID_4 (f, a, b, c, d) = SIG_5 (f, self, a, b, c, d) | bit_member
+#define MEMBER_5(f, self, a, b, c, d, e) \
+    FID_5 (f, a, b, c, d, e) = SIG_6 (f, self, a, b, c, d, e) | bit_member
+
+// convenience macro to define non-member function overload id's
+#define NON_MEMBER_0(f) \
+    FID_0 (f) = SIG_0 (f)
+#define NON_MEMBER_1(f, a) \
+    FID_1 (f, a) = SIG_1 (f, a)
+#define NON_MEMBER_2(f, a, b) \
+    FID_2 (f, a, b) = SIG_2 (f, a, b)
+#define NON_MEMBER_3(f, a, b, c) \
+    FID_3 (f, a, b, c) = SIG_3 (f, a, b, c)
+#define NON_MEMBER_4(f, a, b, c, d) \
+    FID_4 (f, a, b, c, d) = SIG_4 (f, a, b, c, d)
+#define NON_MEMBER_5(f, a, b, c, d, e) \
+    FID_5 (f, a, b, c, d, e) = SIG_5 (f, a, b, c, d, e)
+
+#else   // #ifdef RW_SIGDEFS_H_INCLUDED
+
+// clean up helper macros used above
+#undef _FCAT
+#undef FCAT
+#undef FID_0
+#undef FID_1
+#undef FID_2
+#undef FID_3
+#undef FID_4
+#undef FID_5
+
+#undef ARG
+
+#undef SIG_0
+#undef SIG_1
+#undef SIG_2
+#undef SIG_3
+#undef SIG_4
+#undef SIG_5
+
+#undef MEMBER_0
+#undef MEMBER_1
+#undef MEMBER_2
+#undef MEMBER_3
+#undef MEMBER_4
+#undef MEMBER_5
+
+#undef RW_SIGDEFS_H_INCLUDED
+
+#endif  // RW_SIGDEFS_H_INCLUDED

Propchange: incubator/stdcxx/trunk/tests/include/rw_sigdefs.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/tests/include/rw_sigdefs.h
------------------------------------------------------------------------------
    svn:keywords = Id


Reply via email to