OSDN Git Service

method_pointer_type.hpp 書いてみたし、コンパイルも通った
authormyun2 <myun2@nwhite.info>
Wed, 11 Jul 2012 16:26:58 +0000 (01:26 +0900)
committermyun2 <myun2@nwhite.info>
Wed, 11 Jul 2012 16:26:58 +0000 (01:26 +0900)
roast/include/roast/tp/method_pointer.hpp
roast/include/roast/tp/method_pointer_type.hpp
roast/test/server_socket_test/server_socket_test.cpp

index 0dbd6fd..9006863 100644 (file)
@@ -4,6 +4,7 @@
 #define __SFJP_ROAST___tp__method_pointer_HPP__
 
 #include "roast/_common.hpp"
+#include "roast/tp/method_pointer_type.hpp"
 
 namespace roast
 {
@@ -12,12 +13,13 @@ namespace roast
        template <typename _Ret,
                typename T1=EmptyType, typename T2=EmptyType, typename T3=EmptyType, typename T4=EmptyType,
                typename T5=EmptyType, typename T6=EmptyType, typename T7=EmptyType, typename T8=EmptyType,
-               typename T9=EmptyType, typename T10=EmptyType, typename T11=EmptyType, typename T12=EmptyType
+               typename T9=EmptyType, typename T10=EmptyType, typename T11=EmptyType, typename T12=EmptyType,
+               typename T13=EmptyType, typename T14=EmptyType, typename T15=EmptyType, typename T16=EmptyType
                >
        class method_pointer
        {
        public:
-               
+       
        };
        
        /////////////////////////////////////////////////////////////
index ec72df6..5792f3b 100644 (file)
@@ -13,7 +13,7 @@ namespace roast
        template <typename _Class, typename _Ret,
                typename T1=EmptyType, typename T2=EmptyType, typename T3=EmptyType, typename T4=EmptyType,
                typename T5=EmptyType, typename T6=EmptyType, typename T7=EmptyType, typename T8=EmptyType,
-               typename T9=EmptyType, typename T10=EmptyType, typename T11=EmptyType, typename T12=EmptyType
+               typename T9=EmptyType, typename T10=EmptyType, typename T11=EmptyType, typename T12=EmptyType,
                typename T13=EmptyType, typename T14=EmptyType, typename T15=EmptyType, typename T16=EmptyType
                >
        class method_pointer_type
@@ -26,7 +26,7 @@ namespace roast
        template <typename _Class, typename _Ret,
                typename T1, typename T2, typename T3, typename T4,
                typename T5, typename T6, typename T7, typename T8,
-               typename T9, typename T10, typename T11, typename T12
+               typename T9, typename T10, typename T11, typename T12,
                typename T13, typename T14, typename T15
                >
        class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>
@@ -35,6 +35,160 @@ namespace roast
                typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);
        };
        
+       //      14 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6, typename T7, typename T8,
+               typename T9, typename T10, typename T11, typename T12,
+               typename T13, typename T14
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);
+       };
+       
+       //      13 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6, typename T7, typename T8,
+               typename T9, typename T10, typename T11, typename T12,
+               typename T13
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);
+       };
+       
+       //      12 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6, typename T7, typename T8,
+               typename T9, typename T10, typename T11, typename T12
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);
+       };
+       
+       //      11 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6, typename T7, typename T8,
+               typename T9, typename T10, typename T11
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);
+       };
+       
+       //      10 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6, typename T7, typename T8,
+               typename T9, typename T10
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);
+       };
+       
+       //      9 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6, typename T7, typename T8,
+               typename T9
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7,T8,T9>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7,T8,T9);
+       };
+       
+       //      8 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6, typename T7, typename T8
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7,T8>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7,T8);
+       };
+       
+       //      7 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6, typename T7
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6,T7>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6,T7);
+       };
+       
+       //      6 Paramaters
+       template <typename _Class, typename _Ret,
+               typename T1, typename T2, typename T3, typename T4,
+               typename T5, typename T6
+               >
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5,T6>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5,T6);
+       };
+       
+       //      5 Paramaters
+       template <typename _Class, typename _Ret, typename T1, typename T2, typename T3, typename T4, typename T5>
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5);
+       };
+       
+       //      4 Paramaters
+       template <typename _Class, typename _Ret, typename T1, typename T2, typename T3, typename T4>
+       class method_pointer_type<_Ret,_Class,T1,T2,T3,T4>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3,T4);
+       };
+       
+       //      3 Paramaters
+       template <typename _Class, typename _Ret, typename T1, typename T2, typename T3>
+       class method_pointer_type<_Ret,_Class,T1,T2,T3>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2,T3);
+       };
+       
+       //      2 Paramaters
+       template <typename _Class, typename _Ret, typename T1, typename T2>
+       class method_pointer_type<_Ret,_Class,T1,T2>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1,T2);
+       };
+       
+       //      1 Paramaters
+       template <typename _Class, typename _Ret, typename T1>
+       class method_pointer_type<_Ret,_Class,T1>
+       {
+       public:
+               typedef _Ret (_Class::*type)(T1);
+       };
+       
+       //      0 Paramaters
+       template <typename _Class, typename _Ret>
+       class method_pointer_type<_Ret,_Class>
+       {
+       public:
+               typedef _Ret (_Class::*type)();
+       };      
        /////////////////////////////////////////////////////////////
 }
 
index 42c0f26..92510df 100644 (file)
@@ -1,4 +1,5 @@
 #include "roast/net/socket.hpp"
+#include "roast/tp/method_pointer.hpp"
 
 using namespace roast;
 
@@ -11,8 +12,17 @@ public:
 
 };
 
+class A
+{
+public:
+       static void hoge(){}
+};
+
 void main( void )
 {
-       server_socket<connection_thread> ss(99);
+       //server_socket<connection_thread> ss(99);
+
+       A a;
+       void (*aa)() = &A::hoge;
 }