00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef SCALL_H
00016 #define SCALL_H
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 template <class T, class S, int N>
00027 struct SCall {
00028 int doIt(T func, S a, int b=0, int c=0, int d=0);
00029 };
00030
00031
00032 template <class T, class S>
00033 struct SCall<T,S,-1> {
00034 int doIt(T func, S a, int b=0, int c=0, int d=0) {
00035 return func();
00036 }
00037 };
00038
00039
00040 template <class T, class S>
00041 struct SCall<T,S,0> {
00042 int doIt(T func, S a, int b=0, int c=0, int d=0) {
00043 return func(a);
00044 }
00045 };
00046
00047
00048 template <class T, class S>
00049 struct SCall<T,S,1> {
00050 int doIt(T func, S a, int b=0, int c=0, int d=0) {
00051 return func(a, b);
00052 }
00053 };
00054
00055
00056 template <class T, class S>
00057 struct SCall<T,S,2> {
00058 int doIt(T func, S a, int b=0, int c=0, int d=0) {
00059 return func(a, b, c);
00060 }
00061 };
00062
00063 #endif