From 89e57c9f369dfca82a8cb944d665c6752af03d2a Mon Sep 17 00:00:00 2001 From: myun2 Date: Thu, 12 Jul 2012 01:26:58 +0900 Subject: [PATCH] =?utf8?q?method=5Fpointer=5Ftype.hpp=20=E6=9B=B8=E3=81=84?= =?utf8?q?=E3=81=A6=E3=81=BF=E3=81=9F=E3=81=97=E3=80=81=E3=82=B3=E3=83=B3?= =?utf8?q?=E3=83=91=E3=82=A4=E3=83=AB=E3=82=82=E9=80=9A=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- roast/include/roast/tp/method_pointer.hpp | 6 +- roast/include/roast/tp/method_pointer_type.hpp | 158 ++++++++++++++++++++- .../test/server_socket_test/server_socket_test.cpp | 12 +- 3 files changed, 171 insertions(+), 5 deletions(-) diff --git a/roast/include/roast/tp/method_pointer.hpp b/roast/include/roast/tp/method_pointer.hpp index 0dbd6fd8..9006863d 100644 --- a/roast/include/roast/tp/method_pointer.hpp +++ b/roast/include/roast/tp/method_pointer.hpp @@ -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 class method_pointer { public: - + }; ///////////////////////////////////////////////////////////// diff --git a/roast/include/roast/tp/method_pointer_type.hpp b/roast/include/roast/tp/method_pointer_type.hpp index ec72df69..5792f3bb 100644 --- a/roast/include/roast/tp/method_pointer_type.hpp +++ b/roast/include/roast/tp/method_pointer_type.hpp @@ -13,7 +13,7 @@ namespace roast template class method_pointer_type @@ -26,7 +26,7 @@ namespace roast template 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + class method_pointer_type<_Ret,_Class,T1,T2,T3,T4,T5> + { + public: + typedef _Ret (_Class::*type)(T1,T2,T3,T4,T5); + }; + + // 4 Paramaters + template + class method_pointer_type<_Ret,_Class,T1,T2,T3,T4> + { + public: + typedef _Ret (_Class::*type)(T1,T2,T3,T4); + }; + + // 3 Paramaters + template + class method_pointer_type<_Ret,_Class,T1,T2,T3> + { + public: + typedef _Ret (_Class::*type)(T1,T2,T3); + }; + + // 2 Paramaters + template + class method_pointer_type<_Ret,_Class,T1,T2> + { + public: + typedef _Ret (_Class::*type)(T1,T2); + }; + + // 1 Paramaters + template + class method_pointer_type<_Ret,_Class,T1> + { + public: + typedef _Ret (_Class::*type)(T1); + }; + + // 0 Paramaters + template + class method_pointer_type<_Ret,_Class> + { + public: + typedef _Ret (_Class::*type)(); + }; ///////////////////////////////////////////////////////////// } diff --git a/roast/test/server_socket_test/server_socket_test.cpp b/roast/test/server_socket_test/server_socket_test.cpp index 42c0f263..92510df2 100644 --- a/roast/test/server_socket_test/server_socket_test.cpp +++ b/roast/test/server_socket_test/server_socket_test.cpp @@ -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 ss(99); + //server_socket ss(99); + + A a; + void (*aa)() = &A::hoge; } -- 2.11.0