39 #ifndef CGU_CALLBACK_H
40 #define CGU_CALLBACK_H
882 #include <functional>
957 template <
class FreeArg>
994 #ifdef CGU_USE_GLIB_MEMORY_SLICES_NO_COMPAT
999 #ifndef DOXYGEN_PARSING
1031 template <
class FreeArg1,
class FreeArg2>
1032 class CallbackArg <
TypeTuple<FreeArg1, FreeArg2> > {
1040 #ifdef CGU_USE_GLIB_MEMORY_SLICES_NO_COMPAT
1045 template <
class FreeArg1,
class FreeArg2,
class FreeArg3>
1046 class CallbackArg <TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1055 #ifdef CGU_USE_GLIB_MEMORY_SLICES_NO_COMPAT
1061 class CallbackArg<void> {
1068 #ifdef CGU_USE_GLIB_MEMORY_SLICES_NO_COMPAT
1073 #endif // DOXYGEN_PARSING
1093 return (f1.cb_s.get() == f2.cb_s.get());
1123 return std::less<const CallbackArg<T>*>()(f1.cb_s.get(), f2.cb_s.get());
1133 return (f1.cb_s.get() == f2.cb_s.get());
1158 return std::less<const CallbackArg<T>*>()(f1.cb_s.get(), f2.cb_s.get());
1218 template <
class FreeArg>
1239 if (cb_s.
get()) cb_s->dispatch(arg);
1293 #ifndef DOXYGEN_PARSING
1295 template <
class FreeArg1,
class FreeArg2>
1296 class FunctorArg <
TypeTuple<FreeArg1, FreeArg2> > {
1301 if (cb_s.get()) cb_s->dispatch(arg1, arg2);
1307 FunctorArg(
const CallbackArg<TypeTuple<FreeArg1, FreeArg2> >* cb): cb_s(cb) {}
1316 template <
class FreeArg1,
class FreeArg2,
class FreeArg3>
1317 class FunctorArg <TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1318 SharedPtr<const CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > > cb_s;
1323 if (cb_s.get()) cb_s->dispatch(arg1, arg2, arg3);
1329 FunctorArg(
const CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> >* cb): cb_s(cb) {}
1339 class FunctorArg<void> {
1340 SharedPtr<const Callback> cb_s;
1342 void operator()()
const {
if (cb_s.get()) cb_s->dispatch();}
1356 #endif // DOXYGEN_PARSING
1376 template <
class FreeArg>
1377 class SafeFunctorArg {
1378 SharedLockPtr<const CallbackArg<FreeArg> > cb_s;
1397 if (cb_s.get()) cb_s->dispatch(arg);
1456 #ifndef DOXYGEN_PARSING
1458 template <
class FreeArg1,
class FreeArg2>
1459 class SafeFunctorArg <
TypeTuple<FreeArg1, FreeArg2> > {
1464 if (cb_s.get()) cb_s->dispatch(arg1, arg2);
1470 SafeFunctorArg(
const CallbackArg<TypeTuple<FreeArg1, FreeArg2> >* cb): cb_s(cb) {}
1479 template <
class FreeArg1,
class FreeArg2,
class FreeArg3>
1480 class SafeFunctorArg <TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1481 SharedLockPtr<const CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > > cb_s;
1486 if (cb_s.get()) cb_s->dispatch(arg1, arg2, arg3);
1492 SafeFunctorArg(
const CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> >* cb): cb_s(cb) {}
1502 class SafeFunctorArg<void> {
1503 SharedLockPtr<const Callback> cb_s;
1505 void operator()()
const {
if (cb_s.get()) cb_s->dispatch();}
1519 #endif // DOXYGEN_PARSING
1535 template <
class T,
class FreeArg>
1544 (obj->*func)(free_arg);
1549 #ifndef DOXYGEN_PARSING
1551 template <
class T,
class FreeArg1,
class FreeArg2>
1552 class CallbackArg0 <T,
TypeTuple<FreeArg1, FreeArg2> >:
1553 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
1555 typedef void (T::*
MemFunc)(FreeArg1, FreeArg2);
1562 (obj->*func)(free_arg1, free_arg2);
1567 template <
class T,
class FreeArg1,
class FreeArg2,
class FreeArg3>
1568 class CallbackArg0 <T, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
1569 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1571 typedef void (T::*
MemFunc)(FreeArg1, FreeArg2, FreeArg3);
1579 (obj->*func)(free_arg1, free_arg2, free_arg3);
1584 #endif // DOXYGEN_PARSING
1586 template <
bool unref,
class T,
class BoundArg>
1600 template <
bool unref,
class T,
class BoundArg,
class FreeArg>
1610 (obj->*func)(arg, free_arg);
1616 #ifndef DOXYGEN_PARSING
1618 template <
bool unref,
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
1619 class CallbackArg1_ <unref, T, BoundArg,
TypeTuple<FreeArg1, FreeArg2> >:
1620 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
1622 typedef void (T::*
MemFunc)(BoundArg, FreeArg1, FreeArg2);
1630 (obj->*func)(arg, free_arg1, free_arg2);
1636 template <
bool unref,
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
1637 class CallbackArg1_ <unref, T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
1638 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1640 typedef void (T::*
MemFunc)(BoundArg, FreeArg1, FreeArg2, FreeArg3);
1649 (obj->*func)(arg, free_arg1, free_arg2, free_arg3);
1655 #endif // DOXYGEN_PARSING
1657 template <
bool unref,
class T,
class BoundArg1,
class BoundArg2>
1660 typedef void (T::*
MemFunc)(BoundArg1, BoundArg2);
1673 template <
bool unref,
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
1676 typedef void (T::*
MemFunc)(BoundArg1, BoundArg2, FreeArg);
1684 (obj->*func)(arg1, arg2, free_arg);
1691 #ifndef DOXYGEN_PARSING
1693 template <
bool unref,
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
1694 class CallbackArg2_ <unref, T, BoundArg1, BoundArg2,
TypeTuple<FreeArg1, FreeArg2> >:
1695 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
1697 typedef void (T::*
MemFunc)(BoundArg1, BoundArg2, FreeArg1, FreeArg2);
1706 (obj->*func)(arg1, arg2, free_arg1, free_arg2);
1713 template <
bool unref,
class T,
class BoundArg1,
class BoundArg2,
1714 class FreeArg1,
class FreeArg2,
class FreeArg3>
1715 class CallbackArg2_ <unref, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
1716 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1718 typedef void (T::*
MemFunc)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3);
1728 (obj->*func)(arg1, arg2, free_arg1, free_arg2, free_arg3);
1735 #endif // DOXYGEN_PARSING
1751 template <
class T,
class FreeArg>
1760 (obj->*func)(free_arg);
1765 #ifndef DOXYGEN_PARSING
1767 template <
class T,
class FreeArg1,
class FreeArg2>
1768 class CallbackArg0_const <T,
TypeTuple<FreeArg1, FreeArg2> >:
1769 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
1771 typedef void (T::*
MemFunc)(FreeArg1, FreeArg2)
const;
1778 (obj->*func)(free_arg1, free_arg2);
1783 template <
class T,
class FreeArg1,
class FreeArg2,
class FreeArg3>
1784 class CallbackArg0_const <T, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
1785 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1787 typedef void (T::*
MemFunc)(FreeArg1, FreeArg2, FreeArg3)
const;
1795 (obj->*func)(free_arg1, free_arg2, free_arg3);
1800 #endif // DOXYGEN_PARSING
1802 template <
bool unref,
class T,
class BoundArg>
1816 template <
bool unref,
class T,
class BoundArg,
class FreeArg>
1819 typedef void (T::*
MemFunc)(BoundArg, FreeArg)
const;
1826 (obj->*func)(arg, free_arg);
1832 #ifndef DOXYGEN_PARSING
1834 template <
bool unref,
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
1835 class CallbackArg1_const_ <unref, T, BoundArg,
TypeTuple<FreeArg1, FreeArg2> >:
1836 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
1838 typedef void (T::*
MemFunc)(BoundArg, FreeArg1, FreeArg2)
const;
1846 (obj->*func)(arg, free_arg1, free_arg2);
1852 template <
bool unref,
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
1853 class CallbackArg1_const_ <unref, T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
1854 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1856 typedef void (T::*
MemFunc)(BoundArg, FreeArg1, FreeArg2, FreeArg3)
const;
1865 (obj->*func)(arg, free_arg1, free_arg2, free_arg3);
1871 #endif // DOXYGEN_PARSING
1873 template <
bool unref,
class T,
class BoundArg1,
class BoundArg2>
1876 typedef void (T::*
MemFunc)(BoundArg1, BoundArg2)
const;
1889 template <
bool unref,
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
1892 typedef void (T::*
MemFunc)(BoundArg1, BoundArg2, FreeArg)
const;
1900 (obj->*func)(arg1, arg2, free_arg);
1907 #ifndef DOXYGEN_PARSING
1909 template <
bool unref,
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
1910 class CallbackArg2_const_ <unref, T, BoundArg1, BoundArg2,
TypeTuple<FreeArg1, FreeArg2> >:
1911 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
1913 typedef void (T::*
MemFunc)(BoundArg1, BoundArg2, FreeArg1, FreeArg2)
const;
1922 (obj->*func)(arg1, arg2, free_arg1, free_arg2);
1929 template <
bool unref,
class T,
class BoundArg1,
class BoundArg2,
1930 class FreeArg1,
class FreeArg2,
class FreeArg3>
1931 class CallbackArg2_const_ <unref, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
1932 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1934 typedef void (T::*
MemFunc)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3)
const;
1944 (obj->*func)(arg1, arg2, free_arg1, free_arg2, free_arg3);
1951 #endif // DOXYGEN_PARSING
1965 template <
class FreeArg>
1978 #ifndef DOXYGEN_PARSING
1980 template <
class FreeArg1,
class FreeArg2>
1981 class CallbackArg0_static<
TypeTuple<FreeArg1, FreeArg2> >:
1982 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
1984 typedef void (*
Func)(FreeArg1, FreeArg2);
1990 func(free_arg1, free_arg2);
1995 template <
class FreeArg1,
class FreeArg2,
class FreeArg3>
1996 class CallbackArg0_static<TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
1997 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
1999 typedef void (*
Func)(FreeArg1, FreeArg2, FreeArg3);
2006 func(free_arg1, free_arg2, free_arg3);
2011 #endif // DOXYGEN_PARSING
2013 template <
bool unref,
class BoundArg>
2025 template <
bool unref,
class BoundArg,
class FreeArg>
2028 typedef void (*
Func)(BoundArg, FreeArg);
2034 func(arg, free_arg);
2039 #ifndef DOXYGEN_PARSING
2041 template <
bool unref,
class BoundArg,
class FreeArg1,
class FreeArg2>
2042 class CallbackArg1_static_ <unref, BoundArg,
TypeTuple<FreeArg1, FreeArg2> >:
2043 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
2045 typedef void (*
Func)(BoundArg, FreeArg1, FreeArg2);
2052 func(arg, free_arg1, free_arg2);
2057 template <
bool unref,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2058 class CallbackArg1_static_ <unref, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
2059 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
2061 typedef void (*
Func)(BoundArg, FreeArg1, FreeArg2, FreeArg3);
2069 func(arg, free_arg1, free_arg2, free_arg3);
2074 #endif // DOXYGEN_PARSING
2076 template <
bool unref,
class BoundArg1,
class BoundArg2>
2079 typedef void (*
Func)(BoundArg1, BoundArg2);
2090 template <
bool unref,
class BoundArg1,
class BoundArg2,
class FreeArg>
2093 typedef void (*
Func)(BoundArg1, BoundArg2, FreeArg);
2100 func(arg1, arg2, free_arg);
2106 #ifndef DOXYGEN_PARSING
2108 template <
bool unref,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
2109 class CallbackArg2_static_ <unref, BoundArg1, BoundArg2,
TypeTuple<FreeArg1, FreeArg2> >:
2110 public CallbackArg<TypeTuple<FreeArg1, FreeArg2> > {
2112 typedef void (*
Func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2);
2120 func(arg1, arg2, free_arg1, free_arg2);
2126 template <
bool unref,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2127 class CallbackArg2_static_ <unref, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
2128 public CallbackArg<TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
2130 typedef void (*
Func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3);
2139 func(arg1, arg2, free_arg1, free_arg2, free_arg3);
2145 #endif // DOXYGEN_PARSING
2147 #ifndef DOXYGEN_PARSING
2154 template <
class T,
class BoundArg>
2155 struct Callback1:
public Callback1_<false, T, BoundArg> {
2156 typedef void (T::* MemFunc)(BoundArg);
2158 Callback1_<false, T, BoundArg>(obj, func, arg) {}
2161 template <
class T,
class BoundArg,
class FreeArg>
2162 struct CallbackArg1:
public CallbackArg1_<false, T, BoundArg, FreeArg> {
2163 typedef void (T::* MemFunc)(BoundArg, FreeArg);
2165 CallbackArg1_<false, T, BoundArg, FreeArg>(obj, func, arg) {}
2168 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
2169 struct CallbackArg1<T, BoundArg, TypeTuple<FreeArg1, FreeArg2> >:
2170 public CallbackArg1_ <false, T, BoundArg, TypeTuple<FreeArg1, FreeArg2> > {
2171 typedef void (T::* MemFunc)(BoundArg, FreeArg1, FreeArg2);
2173 CallbackArg1_<false, T, BoundArg, TypeTuple<FreeArg1, FreeArg2> >(obj, func, arg) {}
2176 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2177 struct CallbackArg1<T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
2178 public CallbackArg1_ <false, T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
2179 typedef void (T::* MemFunc)(BoundArg, FreeArg1, FreeArg2, FreeArg3);
2181 CallbackArg1_<false, T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(obj, func, arg) {}
2184 template <
class T,
class BoundArg1,
class BoundArg2>
2185 struct Callback2:
public Callback2_<false, T, BoundArg1, BoundArg2> {
2186 typedef void (T::* MemFunc)(BoundArg1, BoundArg2);
2187 Callback2(T& obj, MemFunc func,
2190 Callback2_<false, T, BoundArg1, BoundArg2>(obj, func, arg1, arg2) {}
2193 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
2194 struct CallbackArg2:
public CallbackArg2_<false, T, BoundArg1, BoundArg2, FreeArg> {
2195 typedef void (T::* MemFunc)(BoundArg1, BoundArg2, FreeArg);
2196 CallbackArg2(T& obj, MemFunc func,
2199 CallbackArg2_<false, T, BoundArg1, BoundArg2, FreeArg>(obj, func, arg1, arg2) {}
2202 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
2203 struct CallbackArg2<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >:
2204 public CallbackArg2_ <false, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> > {
2205 typedef void (T::* MemFunc)(BoundArg1, BoundArg2, FreeArg1, FreeArg2);
2206 CallbackArg2(T& obj, MemFunc func,
2209 CallbackArg2_<false, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(obj, func, arg1, arg2) {}
2212 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2213 struct CallbackArg2<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
2214 public CallbackArg2_ <false, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
2215 typedef void (T::* MemFunc)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3);
2216 CallbackArg2(T& obj, MemFunc func,
2219 CallbackArg2_<false, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(obj, func, arg1, arg2) {}
2222 template <
class T,
class BoundArg>
2223 struct Callback1_const:
public Callback1_const_<false, T, BoundArg> {
2224 typedef void (T::* MemFunc)(BoundArg)
const;
2226 Callback1_const_<false, T, BoundArg>(obj, func, arg) {}
2229 template <
class T,
class BoundArg,
class FreeArg>
2230 struct CallbackArg1_const:
public CallbackArg1_const_<false, T, BoundArg, FreeArg> {
2231 typedef void (T::* MemFunc)(BoundArg, FreeArg)
const;
2233 CallbackArg1_const_<false, T, BoundArg, FreeArg>(obj, func, arg) {}
2236 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
2237 struct CallbackArg1_const<T, BoundArg, TypeTuple<FreeArg1, FreeArg2> >:
2238 public CallbackArg1_const_ <false, T, BoundArg, TypeTuple<FreeArg1, FreeArg2> > {
2239 typedef void (T::* MemFunc)(BoundArg, FreeArg1, FreeArg2)
const;
2241 CallbackArg1_const_<false, T, BoundArg, TypeTuple<FreeArg1, FreeArg2> >(obj, func, arg) {}
2244 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2245 struct CallbackArg1_const<T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
2246 public CallbackArg1_const_ <false, T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
2247 typedef void (T::* MemFunc)(BoundArg, FreeArg1, FreeArg2, FreeArg3)
const;
2249 CallbackArg1_const_<false, T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(obj, func, arg) {}
2252 template <
class T,
class BoundArg1,
class BoundArg2>
2253 struct Callback2_const:
public Callback2_const_<false, T, BoundArg1, BoundArg2> {
2254 typedef void (T::* MemFunc)(BoundArg1, BoundArg2)
const;
2255 Callback2_const(
const T& obj, MemFunc func,
2258 Callback2_const_<false, T, BoundArg1, BoundArg2>(obj, func, arg1, arg2) {}
2261 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
2262 struct CallbackArg2_const:
public CallbackArg2_const_<false, T, BoundArg1, BoundArg2, FreeArg> {
2263 typedef void (T::* MemFunc)(BoundArg1, BoundArg2, FreeArg)
const;
2264 CallbackArg2_const(
const T& obj, MemFunc func,
2267 CallbackArg2_const_<false, T, BoundArg1, BoundArg2, FreeArg>(obj, func, arg1, arg2) {}
2270 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
2271 struct CallbackArg2_const<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >:
2272 public CallbackArg2_const_ <false, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> > {
2273 typedef void (T::* MemFunc)(BoundArg1, BoundArg2, FreeArg1, FreeArg2)
const;
2274 CallbackArg2_const(
const T& obj, MemFunc func,
2277 CallbackArg2_const_<false, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(obj, func, arg1, arg2) {}
2280 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2281 struct CallbackArg2_const<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
2282 public CallbackArg2_const_ <false, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
2283 typedef void (T::* MemFunc)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3)
const;
2284 CallbackArg2_const(
const T& obj, MemFunc func,
2287 CallbackArg2_const_<false, T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(obj, func, arg1, arg2) {}
2290 template <
class BoundArg>
2291 struct Callback1_static:
public Callback1_static_<false, BoundArg> {
2292 typedef void (*Func)(BoundArg);
2294 Callback1_static_<false, BoundArg>(func, arg) {}
2297 template <
class BoundArg,
class FreeArg>
2298 struct CallbackArg1_static:
public CallbackArg1_static_<false, BoundArg, FreeArg> {
2299 typedef void (*Func)(BoundArg, FreeArg);
2301 CallbackArg1_static_<false, BoundArg, FreeArg>(func, arg) {}
2304 template <
class BoundArg,
class FreeArg1,
class FreeArg2>
2305 struct CallbackArg1_static<BoundArg, TypeTuple<FreeArg1, FreeArg2> >:
2306 public CallbackArg1_static_ <false, BoundArg, TypeTuple<FreeArg1, FreeArg2> > {
2307 typedef void (*Func)(BoundArg, FreeArg1, FreeArg2);
2309 CallbackArg1_static_<false, BoundArg, TypeTuple<FreeArg1, FreeArg2> >(func, arg) {}
2312 template <
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2313 struct CallbackArg1_static<BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
2314 public CallbackArg1_static_ <false, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
2315 typedef void (*Func)(BoundArg, FreeArg1, FreeArg2, FreeArg3);
2317 CallbackArg1_static_<false, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(func, arg) {}
2320 template <
class BoundArg1,
class BoundArg2>
2321 struct Callback2_static:
public Callback2_static_<false, BoundArg1, BoundArg2> {
2322 typedef void (*Func)(BoundArg1, BoundArg2);
2323 Callback2_static(Func func,
2326 Callback2_static_<false, BoundArg1, BoundArg2>(func, arg1, arg2) {}
2329 template <
class BoundArg1,
class BoundArg2,
class FreeArg>
2330 struct CallbackArg2_static:
public CallbackArg2_static_<false, BoundArg1, BoundArg2, FreeArg> {
2331 typedef void (*Func)(BoundArg1, BoundArg2, FreeArg);
2332 CallbackArg2_static(Func func,
2335 CallbackArg2_static_<false, BoundArg1, BoundArg2, FreeArg>(func, arg1, arg2) {}
2338 template <
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
2339 struct CallbackArg2_static<BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >:
2340 public CallbackArg2_static_ <false, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> > {
2341 typedef void (*Func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2);
2342 CallbackArg2_static(Func func,
2345 CallbackArg2_static_<false, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(func, arg1, arg2) {}
2348 template <
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2349 struct CallbackArg2_static<BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >:
2350 public CallbackArg2_static_ <false, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> > {
2351 typedef void (*Func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3);
2352 CallbackArg2_static(Func func,
2355 CallbackArg2_static_<false, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(func, arg1, arg2) {}
2377 void (T::*func)()) {
2397 void (T::*func)()) {
2415 void (T::*func)()) {
2428 template <
class T,
class FreeArg>
2430 void (T::*func)(FreeArg)) {
2448 template <
class T,
class FreeArg>
2450 void (T::*func)(FreeArg)) {
2466 template <
class T,
class FreeArg>
2468 void (T::*func)(FreeArg)) {
2472 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
2484 template <
class T,
class FreeArg1,
class FreeArg2>
2486 void (T::*func)(FreeArg1, FreeArg2)) {
2504 template <
class T,
class FreeArg1,
class FreeArg2>
2506 void (T::*func)(FreeArg1, FreeArg2)) {
2522 template <
class T,
class FreeArg1,
class FreeArg2>
2524 void (T::*func)(FreeArg1, FreeArg2)) {
2539 template <
class T,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2541 void (T::*func)(FreeArg1, FreeArg2, FreeArg3)) {
2559 template <
class T,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2561 void (T::*func)(FreeArg1, FreeArg2, FreeArg3)) {
2576 template <
class T,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2578 void (T::*func)(FreeArg1, FreeArg2, FreeArg3)) {
2581 #endif // CGU_USE_TYPE_TUPLE_ARGS
2594 template <
class T,
class BoundArg>
2596 void (T::*func)(BoundArg),
2598 return new Callback1<T, BoundArg>(t, func, arg);
2620 template <
class T,
class BoundArg>
2622 void (T::*func)(BoundArg),
2623 const BoundArg& arg) {
2624 return new Callback1<T, BoundArg>(t, func, arg);
2644 template <
class T,
class BoundArg>
2646 void (T::*func)(BoundArg),
2662 template <
class T,
class BoundArg,
class FreeArg>
2664 void (T::*func)(BoundArg, FreeArg),
2666 return new CallbackArg1<T, BoundArg, FreeArg>(t, func, arg);
2688 template <
class T,
class BoundArg,
class FreeArg>
2690 void (T::*func)(BoundArg, FreeArg),
2691 const BoundArg& arg) {
2692 return new CallbackArg1<T, BoundArg, FreeArg>(t, func, arg);
2712 template <
class T,
class BoundArg,
class FreeArg>
2714 void (T::*func)(BoundArg, FreeArg),
2719 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
2731 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
2733 void (T::*func)(BoundArg, FreeArg1, FreeArg2),
2735 return new CallbackArg1<T, BoundArg, TypeTuple<FreeArg1, FreeArg2> >(t, func, arg);
2757 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
2759 void (T::*func)(BoundArg, FreeArg1, FreeArg2),
2760 const BoundArg& arg) {
2761 return new CallbackArg1<T, BoundArg, TypeTuple<FreeArg1, FreeArg2> >(t, func, arg);
2781 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
2783 void (T::*func)(BoundArg, FreeArg1, FreeArg2),
2799 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2801 void (T::*func)(BoundArg, FreeArg1, FreeArg2, FreeArg3),
2803 return new CallbackArg1<T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(t, func, arg);
2825 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2827 void (T::*func)(BoundArg, FreeArg1, FreeArg2, FreeArg3),
2828 const BoundArg& arg) {
2829 return new CallbackArg1<T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(t, func, arg);
2831 #endif // CGU_USE_TYPE_TUPLE_ARGS
2851 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
2853 void (T::*func)(BoundArg, FreeArg1, FreeArg2, FreeArg3),
2869 template <
class T,
class BoundArg1,
class BoundArg2>
2871 void (T::*func)(BoundArg1, BoundArg2),
2874 return new Callback2<T, BoundArg1, BoundArg2>(t, func, arg1, arg2);
2896 template <
class T,
class BoundArg1,
class BoundArg2>
2898 void (T::*func)(BoundArg1, BoundArg2),
2899 const BoundArg1& arg1,
2900 const BoundArg2& arg2) {
2901 return new Callback2<T, BoundArg1, BoundArg2>(t, func, arg1, arg2);
2921 template <
class T,
class BoundArg1,
class BoundArg2>
2923 void (T::*func)(BoundArg1, BoundArg2),
2941 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
2943 void (T::*func)(BoundArg1, BoundArg2, FreeArg),
2946 return new CallbackArg2<T, BoundArg1, BoundArg2, FreeArg>(t, func, arg1, arg2);
2968 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
2970 void (T::*func)(BoundArg1, BoundArg2, FreeArg),
2971 const BoundArg1& arg1,
2972 const BoundArg2& arg2) {
2973 return new CallbackArg2<T, BoundArg1, BoundArg2, FreeArg>(t, func, arg1, arg2);
2993 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
2995 void (T::*func)(BoundArg1, BoundArg2, FreeArg),
3001 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
3015 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
3017 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2),
3020 return new CallbackArg2<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(t, func, arg1, arg2);
3042 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
3044 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2),
3045 const BoundArg1& arg1,
3046 const BoundArg2& arg2) {
3047 return new CallbackArg2<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(t, func, arg1, arg2);
3067 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
3069 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2),
3088 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3090 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3),
3093 return new CallbackArg2<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(t, func, arg1, arg2);
3115 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3117 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3),
3118 const BoundArg1& arg1,
3119 const BoundArg2& arg2) {
3120 return new CallbackArg2<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(t, func, arg1, arg2);
3140 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3142 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3),
3147 #endif // CGU_USE_TYPE_TUPLE_ARGS
3162 void (T::*func)()
const) {
3182 void (T::*func)()
const) {
3200 void (T::*func)()
const) {
3213 template <
class T,
class FreeArg>
3215 void (T::*func)(FreeArg)
const) {
3233 template <
class T,
class FreeArg>
3235 void (T::*func)(FreeArg)
const) {
3251 template <
class T,
class FreeArg>
3253 void (T::*func)(FreeArg)
const) {
3257 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
3269 template <
class T,
class FreeArg1,
class FreeArg2>
3271 void (T::*func)(FreeArg1, FreeArg2)
const) {
3289 template <
class T,
class FreeArg1,
class FreeArg2>
3291 void (T::*func)(FreeArg1, FreeArg2)
const) {
3307 template <
class T,
class FreeArg1,
class FreeArg2>
3309 void (T::*func)(FreeArg1, FreeArg2)
const) {
3324 template <
class T,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3326 void (T::*func)(FreeArg1, FreeArg2, FreeArg3)
const) {
3344 template <
class T,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3346 void (T::*func)(FreeArg1, FreeArg2, FreeArg3)
const) {
3362 template <
class T,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3364 void (T::*func)(FreeArg1, FreeArg2, FreeArg3)
const) {
3367 #endif // CGU_USE_TYPE_TUPLE_ARGS
3380 template <
class T,
class BoundArg>
3382 void (T::*func)(BoundArg)
const,
3384 return new Callback1_const<T, BoundArg>(t, func, arg);
3406 template <
class T,
class BoundArg>
3408 void (T::*func)(BoundArg)
const,
3409 const BoundArg& arg) {
3410 return new Callback1_const<T, BoundArg>(t, func, arg);
3430 template <
class T,
class BoundArg>
3432 void (T::*func)(BoundArg)
const,
3448 template <
class T,
class BoundArg,
class FreeArg>
3450 void (T::*func)(BoundArg, FreeArg)
const,
3452 return new CallbackArg1_const<T, BoundArg, FreeArg>(t, func, arg);
3474 template <
class T,
class BoundArg,
class FreeArg>
3476 void (T::*func)(BoundArg, FreeArg)
const,
3477 const BoundArg& arg) {
3478 return new CallbackArg1_const<T, BoundArg, FreeArg>(t, func, arg);
3498 template <
class T,
class BoundArg,
class FreeArg>
3500 void (T::*func)(BoundArg, FreeArg)
const,
3505 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
3517 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
3519 void (T::*func)(BoundArg, FreeArg1, FreeArg2)
const,
3521 return new CallbackArg1_const<T, BoundArg, TypeTuple<FreeArg1, FreeArg2> >(t, func, arg);
3543 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
3545 void (T::*func)(BoundArg, FreeArg1, FreeArg2)
const,
3546 const BoundArg& arg) {
3547 return new CallbackArg1_const<T, BoundArg, TypeTuple<FreeArg1, FreeArg2> >(t, func, arg);
3567 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2>
3569 void (T::*func)(BoundArg, FreeArg1, FreeArg2)
const,
3585 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3587 void (T::*func)(BoundArg, FreeArg1, FreeArg2, FreeArg3)
const,
3589 return new CallbackArg1_const<T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(t, func, arg);
3611 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3613 void (T::*func)(BoundArg, FreeArg1, FreeArg2, FreeArg3)
const,
3614 const BoundArg& arg) {
3615 return new CallbackArg1_const<T, BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(t, func, arg);
3635 template <
class T,
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3637 void (T::*func)(BoundArg, FreeArg1, FreeArg2, FreeArg3)
const,
3641 #endif // CGU_USE_TYPE_TUPLE_ARGS
3654 template <
class T,
class BoundArg1,
class BoundArg2>
3656 void (T::*func)(BoundArg1, BoundArg2)
const,
3659 return new Callback2_const<T, BoundArg1, BoundArg2>(t, func, arg1, arg2);
3681 template <
class T,
class BoundArg1,
class BoundArg2>
3683 void (T::*func)(BoundArg1, BoundArg2)
const,
3684 const BoundArg1& arg1,
3685 const BoundArg2& arg2) {
3686 return new Callback2_const<T, BoundArg1, BoundArg2>(t, func, arg1, arg2);
3706 template <
class T,
class BoundArg1,
class BoundArg2>
3708 void (T::*func)(BoundArg1, BoundArg2)
const,
3725 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
3727 void (T::*func)(BoundArg1, BoundArg2, FreeArg)
const,
3730 return new CallbackArg2_const<T, BoundArg1, BoundArg2, FreeArg>(t, func, arg1, arg2);
3752 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
3754 void (T::*func)(BoundArg1, BoundArg2, FreeArg)
const,
3755 const BoundArg1& arg1,
3756 const BoundArg2& arg2) {
3757 return new CallbackArg2_const<T, BoundArg1, BoundArg2, FreeArg>(t, func, arg1, arg2);
3777 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg>
3779 void (T::*func)(BoundArg1, BoundArg2, FreeArg)
const,
3785 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
3799 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
3801 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2)
const,
3804 return new CallbackArg2_const<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(t, func, arg1, arg2);
3826 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
3828 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2)
const,
3829 const BoundArg1& arg1,
3830 const BoundArg2& arg2) {
3831 return new CallbackArg2_const<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(t, func, arg1, arg2);
3851 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
3853 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2)
const,
3872 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3874 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3)
const,
3877 return new CallbackArg2_const<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(t, func, arg1, arg2);
3899 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3901 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3)
const,
3902 const BoundArg1& arg1,
3903 const BoundArg2& arg2) {
3904 return new CallbackArg2_const<T, BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(t, func, arg1, arg2);
3924 template <
class T,
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
3926 void (T::*func)(BoundArg1, BoundArg2, FreeArg1, FreeArg2, FreeArg3)
const,
3931 #endif // CGU_USE_TYPE_TUPLE_ARGS
3991 template <
class FreeArg>
4010 template <
class FreeArg>
4027 template <
class FreeArg>
4032 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
4044 template <
class FreeArg1,
class FreeArg2>
4063 template <
class FreeArg1,
class FreeArg2>
4080 template <
class FreeArg1,
class FreeArg2>
4096 template <
class FreeArg1,
class FreeArg2,
class FreeArg3>
4115 template <
class FreeArg1,
class FreeArg2,
class FreeArg3>
4132 template <
class FreeArg1,
class FreeArg2,
class FreeArg3>
4136 #endif // CGU_USE_TYPE_TUPLE_ARGS
4149 template <
class BoundArg>
4152 return new Callback1_static<BoundArg>(func, arg);
4174 template <
class BoundArg>
4176 const BoundArg& arg) {
4177 return new Callback1_static<BoundArg>(func, arg);
4197 template <
class BoundArg>
4214 template <
class BoundArg,
class FreeArg>
4217 return new CallbackArg1_static<BoundArg, FreeArg>(func, arg);
4239 template <
class BoundArg,
class FreeArg>
4241 const BoundArg& arg) {
4242 return new CallbackArg1_static<BoundArg, FreeArg>(func, arg);
4262 template <
class BoundArg,
class FreeArg>
4268 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
4280 template <
class BoundArg,
class FreeArg1,
class FreeArg2>
4283 return new CallbackArg1_static<BoundArg, TypeTuple<FreeArg1, FreeArg2> >(func, arg);
4303 template <
class BoundArg,
class FreeArg1,
class FreeArg2>
4305 const BoundArg& arg) {
4306 return new CallbackArg1_static<BoundArg, TypeTuple<FreeArg1, FreeArg2> >(func, arg);
4326 template <
class BoundArg,
class FreeArg1,
class FreeArg2>
4343 template <
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
4346 return new CallbackArg1_static<BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(func, arg);
4366 template <
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
4368 const BoundArg& arg) {
4369 return new CallbackArg1_static<BoundArg, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(func, arg);
4389 template <
class BoundArg,
class FreeArg1,
class FreeArg2,
class FreeArg3>
4394 #endif // CGU_USE_TYPE_TUPLE_ARGS
4407 template <
class BoundArg1,
class BoundArg2>
4411 return new Callback2_static<BoundArg1, BoundArg2>(func, arg1, arg2);
4433 template <
class BoundArg1,
class BoundArg2>
4435 const BoundArg1& arg1,
4436 const BoundArg2& arg2) {
4437 return new Callback2_static<BoundArg1, BoundArg2>(func, arg1, arg2);
4457 template <
class BoundArg1,
class BoundArg2>
4475 template <
class BoundArg1,
class BoundArg2,
class FreeArg>
4479 return new CallbackArg2_static<BoundArg1, BoundArg2, FreeArg>(func, arg1, arg2);
4501 template <
class BoundArg1,
class BoundArg2,
class FreeArg>
4503 const BoundArg1& arg1,
4504 const BoundArg2& arg2) {
4505 return new CallbackArg2_static<BoundArg1, BoundArg2, FreeArg>(func, arg1, arg2);
4525 template <
class BoundArg1,
class BoundArg2,
class FreeArg>
4532 #if defined(CGU_USE_TYPE_TUPLE_ARGS) || defined(DOXYGEN_PARSING)
4544 template <
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
4548 return new CallbackArg2_static<BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(func, arg1, arg2);
4568 template <
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
4570 const BoundArg1& arg1,
4571 const BoundArg2& arg2) {
4572 return new CallbackArg2_static<BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2> >(func, arg1, arg2);
4592 template <
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2>
4612 template <
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
4616 return new CallbackArg2_static<BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(func, arg1, arg2);
4638 template <
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
4640 const BoundArg1& arg1,
4641 const BoundArg2& arg2) {
4642 return new CallbackArg2_static<BoundArg1, BoundArg2, TypeTuple<FreeArg1, FreeArg2, FreeArg3> >(func, arg1, arg2);
4662 template <
class BoundArg1,
class BoundArg2,
class FreeArg1,
class FreeArg2,
class FreeArg3>
4668 #endif // CGU_USE_TYPE_TUPLE_ARGS
4702 void post(
const Callback* cb, gint priority = G_PRIORITY_DEFAULT_IDLE,
4703 GMainContext* context = 0);
4756 gint priority = G_PRIORITY_DEFAULT_IDLE, GMainContext* context = 0);