OSDN Git Service

function_pointer_base.hpp: 引数増えた版
authormyun2 <myun2@nwhite.info>
Thu, 12 Jul 2012 10:20:07 +0000 (19:20 +0900)
committermyun2 <myun2@nwhite.info>
Thu, 12 Jul 2012 10:20:07 +0000 (19:20 +0900)
roast/include/roast/tp/function_pointer_base.hpp

index 16952ff..fee0afe 100644 (file)
@@ -18,6 +18,8 @@ namespace roast
        class function_pointer_base
        {
        public:
+               virtual _Ret call(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16) = 0;
+               _Ret operator()(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16){ return call(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16); }
        };
 
        /////////////////////////////////////////////////////////////
@@ -50,6 +52,26 @@ namespace roast
                _Ret operator()(T1 t1, T2 t2){ return call(t1,t2); }
        };
        
+       ////
+       
+       template <typename _Ret, typename _Class, typename T1, typename T2, typename T3>
+       class method_pointer<_Ret,_Class,T1,T2,T3>
+       {
+       public:
+               virtual _Ret call(T1 t1, T2 t2, T3 t3) = 0;
+               _Ret operator()(T1 t1, T2 t2, T3 t3){ return call(t1,t2,t3); }
+       };
+       
+       ////
+       
+       template <typename _Ret, typename _Class, typename T1, typename T2, typename T3, typename T4>
+       class method_pointer<_Ret,_Class,T1,T2,T3,T4>
+       {
+       public:
+               virtual _Ret call(T1 t1, T2 t2, T3 t3, T4 t4) = 0;
+               _Ret operator()(T1 t1, T2 t2, T3 t3, T4 t4){ return call(t1,t2,t3,t4); }
+       };
+       
        /////////////////////////////////////////////////////////////
 }