| 1 | /* -*- c++ -*- | 
|---|
| 2 |  | 
|---|
| 3 |    C++ delegate classes | 
|---|
| 4 |  | 
|---|
| 5 |    This file is part of the dpp library of C++ template classes | 
|---|
| 6 |  | 
|---|
| 7 |    doc: http://diaxen.ssji.net/dpp/index.html | 
|---|
| 8 |    repo: https://www.ssji.net/svn/projets/trunk/libdpp | 
|---|
| 9 |  | 
|---|
| 10 |    This program is free software: you can redistribute it and/or | 
|---|
| 11 |    modify it under the terms of the GNU Lesser General Public License | 
|---|
| 12 |    as published by the Free Software Foundation, either version 3 of | 
|---|
| 13 |    the License, or (at your option) any later version. | 
|---|
| 14 |  | 
|---|
| 15 |    This program is distributed in the hope that it will be useful, but | 
|---|
| 16 |    WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 17 |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|---|
| 18 |    Lesser General Public License for more details. | 
|---|
| 19 |  | 
|---|
| 20 |    You should have received a copy of the GNU Lesser General Public | 
|---|
| 21 |    License along with this program.  If not, see | 
|---|
| 22 |    <http://www.gnu.org/licenses/>. | 
|---|
| 23 |  | 
|---|
| 24 |    (c) 2008-2011 Alexandre Becoulet <alexandre.becoulet@free.fr> | 
|---|
| 25 |  | 
|---|
| 26 | */ | 
|---|
| 27 |  | 
|---|
| 28 | #ifndef DPP_DELEGATE_HH_ | 
|---|
| 29 | #define DPP_DELEGATE_HH_ | 
|---|
| 30 |  | 
|---|
| 31 | #include <iostream> | 
|---|
| 32 |  | 
|---|
| 33 | /** @file @module{Delegates} */ | 
|---|
| 34 |  | 
|---|
| 35 | namespace dpp { | 
|---|
| 36 |  | 
|---|
| 37 | #ifndef _DPP_DR106 | 
|---|
| 38 |   /** @internal Workaround for c++ DR 106, strip reference */ | 
|---|
| 39 |   template <class X> | 
|---|
| 40 |   struct _dr106 | 
|---|
| 41 |   { | 
|---|
| 42 |     typedef X type; | 
|---|
| 43 |   }; | 
|---|
| 44 |  | 
|---|
| 45 |   /** @internal */ | 
|---|
| 46 |   template <class X> | 
|---|
| 47 |   struct _dr106<X &> | 
|---|
| 48 |   { | 
|---|
| 49 |     typedef X type; | 
|---|
| 50 |   }; | 
|---|
| 51 |  | 
|---|
| 52 |   /** @internal */ | 
|---|
| 53 | # define _DPP_DR106(x) typename _dr106<x>::type | 
|---|
| 54 | #endif | 
|---|
| 55 |  | 
|---|
| 56 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 57 |   //    delegate base class | 
|---|
| 58 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 59 |  | 
|---|
| 60 |   /** | 
|---|
| 61 |      @short Delegates base class | 
|---|
| 62 |      @main | 
|---|
| 63 |      @header dpp/delegate | 
|---|
| 64 |  | 
|---|
| 65 |      All other classes in the @ref +Delegates module inherit from this | 
|---|
| 66 |      class. This enables passing delegates pointers and references to | 
|---|
| 67 |      functions in a generic and interchangeable manner. | 
|---|
| 68 |  | 
|---|
| 69 |      Actual implementations for different parameters count are located | 
|---|
| 70 |      in class specializations. | 
|---|
| 71 |  | 
|---|
| 72 |      Maximum number of arguments is defined by the @ref | 
|---|
| 73 |      #DPP_DELEGATE_ARGC macro. | 
|---|
| 74 |   */ | 
|---|
| 75 |   template <typename prototype> | 
|---|
| 76 |   class delegate | 
|---|
| 77 |   { | 
|---|
| 78 |   }; | 
|---|
| 79 |  | 
|---|
| 80 | #ifndef DPP_DELEGATE_ARGC | 
|---|
| 81 |   /** @This defines maximum number of arguments handled by delegate | 
|---|
| 82 |       classes. It can be defined before inclusion of the header so | 
|---|
| 83 |       that class specialization declarations take place to handle up | 
|---|
| 84 |       to 8 arguments. The default value is 4. */ | 
|---|
| 85 | # define DPP_DELEGATE_ARGC 4 | 
|---|
| 86 | #endif | 
|---|
| 87 |  | 
|---|
| 88 | #define _DPP_DELEGATE(n)                                \ | 
|---|
| 89 |   template <typename R _DPP_DELEGATE_TARGS(n)>          \ | 
|---|
| 90 |   class delegate < R (_DPP_DELEGATE_PARGS(n)) >         \ | 
|---|
| 91 |   {                                                     \ | 
|---|
| 92 |     virtual R call (_DPP_DELEGATE_CARGS(n)) const = 0;  \ | 
|---|
| 93 |                                                         \ | 
|---|
| 94 |   public:                                               \ | 
|---|
| 95 |     _DPP_DELEGATE_TDEFS(n); /* args typedefs */         \ | 
|---|
| 96 |     virtual bool valid() const = 0;                     \ | 
|---|
| 97 |     virtual ~delegate() {}                              \ | 
|---|
| 98 |                                                         \ | 
|---|
| 99 |     R operator() (_DPP_DELEGATE_CARGS(n)) const         \ | 
|---|
| 100 |     {                                                   \ | 
|---|
| 101 |       return call (_DPP_DELEGATE_IARGS(n));             \ | 
|---|
| 102 |     }                                                   \ | 
|---|
| 103 |                                                         \ | 
|---|
| 104 |   }; | 
|---|
| 105 |  | 
|---|
| 106 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 107 |   //    function pointer delegate class | 
|---|
| 108 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 109 |  | 
|---|
| 110 |   /** | 
|---|
| 111 |      @short Function pointer delegate class | 
|---|
| 112 |      @main | 
|---|
| 113 |      @header dpp/delegate | 
|---|
| 114 |  | 
|---|
| 115 |      This delegate class embeds a pointer to a global or static member | 
|---|
| 116 |      function. | 
|---|
| 117 |  | 
|---|
| 118 |      Actual implementations for different parameters count are located | 
|---|
| 119 |      in class specializations. | 
|---|
| 120 |  | 
|---|
| 121 |      Maximum number of handled arguments is controlled by the @ref | 
|---|
| 122 |      #DPP_DELEGATE_ARGC macro. | 
|---|
| 123 |  | 
|---|
| 124 |      Usage example: | 
|---|
| 125 |      @example test/test_delegate.cc:func1 | 
|---|
| 126 |      @example test/test_delegate.cc:func2 | 
|---|
| 127 |  | 
|---|
| 128 |      @see delegate_member | 
|---|
| 129 |      @see delegate_member_this | 
|---|
| 130 |   */ | 
|---|
| 131 |   template <typename prototype> | 
|---|
| 132 |   class delegate_func : public delegate<prototype> | 
|---|
| 133 |   { | 
|---|
| 134 |   }; | 
|---|
| 135 |  | 
|---|
| 136 | #define _DPP_DELEGATE_FUNC(n)                                           \ | 
|---|
| 137 |   template <typename R _DPP_DELEGATE_TARGS(n)>                          \ | 
|---|
| 138 |   class delegate_func < R (_DPP_DELEGATE_PARGS(n)) >                    \ | 
|---|
| 139 |     : public delegate< R (_DPP_DELEGATE_PARGS(n)) >                     \ | 
|---|
| 140 |   {                                                                     \ | 
|---|
| 141 |     typedef R prototype (_DPP_DELEGATE_PARGS(n));                       \ | 
|---|
| 142 |                                                                         \ | 
|---|
| 143 |   public:                                                               \ | 
|---|
| 144 |     delegate_func()                                                     \ | 
|---|
| 145 |       : _func(0)                                                        \ | 
|---|
| 146 |       {                                                                 \ | 
|---|
| 147 |       }                                                                 \ | 
|---|
| 148 |                                                                         \ | 
|---|
| 149 |     delegate_func(prototype *p)                                         \ | 
|---|
| 150 |       : _func(p)                                                        \ | 
|---|
| 151 |       {                                                                 \ | 
|---|
| 152 |       }                                                                 \ | 
|---|
| 153 |                                                                         \ | 
|---|
| 154 |     bool valid() const                                                  \ | 
|---|
| 155 |     {                                                                   \ | 
|---|
| 156 |       return _func;                                                     \ | 
|---|
| 157 |     }                                                                   \ | 
|---|
| 158 |                                                                         \ | 
|---|
| 159 |     R operator()(_DPP_DELEGATE_CARGS(n)) const                          \ | 
|---|
| 160 |     {                                                                   \ | 
|---|
| 161 |       return delegate_func::call (_DPP_DELEGATE_IARGS(n));              \ | 
|---|
| 162 |     }                                                                   \ | 
|---|
| 163 |                                                                         \ | 
|---|
| 164 |   private:                                                              \ | 
|---|
| 165 |                                                                         \ | 
|---|
| 166 |     R call (_DPP_DELEGATE_CARGS(n)) const                               \ | 
|---|
| 167 |     {                                                                   \ | 
|---|
| 168 |       return _func (_DPP_DELEGATE_IARGS(n));                            \ | 
|---|
| 169 |     }                                                                   \ | 
|---|
| 170 |                                                                         \ | 
|---|
| 171 |     prototype *_func;                                                   \ | 
|---|
| 172 |   }; | 
|---|
| 173 |  | 
|---|
| 174 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 175 |   //    member function pointer delegate classes | 
|---|
| 176 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 177 |  | 
|---|
| 178 |   /** | 
|---|
| 179 |      @short Member function pointer delegate class | 
|---|
| 180 |      @header dpp/delegate | 
|---|
| 181 |      @main | 
|---|
| 182 |  | 
|---|
| 183 |      This delegate class embeds a pointer to an object and take a | 
|---|
| 184 |      member function to call as template argument. | 
|---|
| 185 |  | 
|---|
| 186 |      Actual implementations for different parameters count are located | 
|---|
| 187 |      in class specializations. | 
|---|
| 188 |  | 
|---|
| 189 |      Maximum number of handled arguments is controlled by the @ref | 
|---|
| 190 |      #DPP_DELEGATE_ARGC macro. | 
|---|
| 191 |  | 
|---|
| 192 |      Usage example: | 
|---|
| 193 |      @example test/test_delegate.cc:member1 | 
|---|
| 194 |      @example test/test_delegate.cc:member2 | 
|---|
| 195 |  | 
|---|
| 196 |      Delegate with @tt const member function type is only supported by | 
|---|
| 197 |      gcc 4.4 and clang compilers. | 
|---|
| 198 |  | 
|---|
| 199 |      @see delegate_member_this | 
|---|
| 200 |      @see delegate_func | 
|---|
| 201 |   */ | 
|---|
| 202 |   template <class O, typename prototype, prototype O::*F> | 
|---|
| 203 |   class delegate_member : public delegate<prototype> | 
|---|
| 204 |   { | 
|---|
| 205 |   }; | 
|---|
| 206 |  | 
|---|
| 207 | #define _DPP_DELEGATE_MEMBER_(n, cst)                                   \ | 
|---|
| 208 |   template <class O, typename R _DPP_DELEGATE_TARGS(n),                 \ | 
|---|
| 209 |             R (O::*F)(_DPP_DELEGATE_PARGS(n)) cst >                     \ | 
|---|
| 210 |   class delegate_member < O, R (_DPP_DELEGATE_PARGS(n)) cst, F >        \ | 
|---|
| 211 |     : public delegate< R (_DPP_DELEGATE_PARGS(n)) >                     \ | 
|---|
| 212 |   {                                                                     \ | 
|---|
| 213 |   public:                                                               \ | 
|---|
| 214 |                                                                         \ | 
|---|
| 215 |     delegate_member()                                                   \ | 
|---|
| 216 |       : _obj(0)                                                         \ | 
|---|
| 217 |       {                                                                 \ | 
|---|
| 218 |       }                                                                 \ | 
|---|
| 219 |                                                                         \ | 
|---|
| 220 |     delegate_member(O &obj)                                             \ | 
|---|
| 221 |       : _obj(&obj)                                                      \ | 
|---|
| 222 |       {                                                                 \ | 
|---|
| 223 |       }                                                                 \ | 
|---|
| 224 |                                                                         \ | 
|---|
| 225 |     bool valid() const                                                  \ | 
|---|
| 226 |     {                                                                   \ | 
|---|
| 227 |       return _obj;                                                      \ | 
|---|
| 228 |     }                                                                   \ | 
|---|
| 229 |                                                                         \ | 
|---|
| 230 |     R operator()(_DPP_DELEGATE_CARGS(n)) const                          \ | 
|---|
| 231 |     {                                                                   \ | 
|---|
| 232 |       return delegate_member::call(_DPP_DELEGATE_IARGS(n));             \ | 
|---|
| 233 |     }                                                                   \ | 
|---|
| 234 |                                                                         \ | 
|---|
| 235 |   private:                                                              \ | 
|---|
| 236 |     R call (_DPP_DELEGATE_CARGS(n)) const                               \ | 
|---|
| 237 |     {                                                                   \ | 
|---|
| 238 |       return (_obj->*F)(_DPP_DELEGATE_IARGS(n));                        \ | 
|---|
| 239 |     }                                                                   \ | 
|---|
| 240 |                                                                         \ | 
|---|
| 241 |     O *_obj;                                                            \ | 
|---|
| 242 |   }; | 
|---|
| 243 |  | 
|---|
| 244 | #if ((__GNUC__ == 4 && __GNUC_MINOR__ >= 4) || (__GNUC__ > 4)) && !defined(__INTEL_COMPILER) | 
|---|
| 245 | # define _DPP_DELEGATE_MEMBER(n)                \ | 
|---|
| 246 |   _DPP_DELEGATE_MEMBER_(n,)                     \ | 
|---|
| 247 |   _DPP_DELEGATE_MEMBER_(n, const) | 
|---|
| 248 | #else | 
|---|
| 249 | # define _DPP_DELEGATE_MEMBER(n)                \ | 
|---|
| 250 |   _DPP_DELEGATE_MEMBER_(n,)              | 
|---|
| 251 | #endif | 
|---|
| 252 |  | 
|---|
| 253 |   /** @internal contains typedef with prototype without first argument */ | 
|---|
| 254 |   template <typename prototype> | 
|---|
| 255 |   struct delegate_member_this_pm1 | 
|---|
| 256 |   { | 
|---|
| 257 |   }; | 
|---|
| 258 |  | 
|---|
| 259 |   /** @internal */ | 
|---|
| 260 |   template <typename A> | 
|---|
| 261 |   struct _delegate_member_this_ptr | 
|---|
| 262 |   { | 
|---|
| 263 |     static A & get(A &a) | 
|---|
| 264 |     { | 
|---|
| 265 |       return a; | 
|---|
| 266 |     } | 
|---|
| 267 |   }; | 
|---|
| 268 |  | 
|---|
| 269 |   /** @internal */ | 
|---|
| 270 |   template <typename A> | 
|---|
| 271 |   struct _delegate_member_this_ptr<A *> | 
|---|
| 272 |   { | 
|---|
| 273 |     static A & get(A *a) | 
|---|
| 274 |     { | 
|---|
| 275 |       return *a; | 
|---|
| 276 |     } | 
|---|
| 277 |   }; | 
|---|
| 278 |  | 
|---|
| 279 |   /** @internal */ | 
|---|
| 280 |   template <typename A> | 
|---|
| 281 |   struct _delegate_member_this_type { typedef A t; }; | 
|---|
| 282 |   /** @internal */ | 
|---|
| 283 |   template <typename A> | 
|---|
| 284 |   struct _delegate_member_this_type<A *> { typedef A t; }; | 
|---|
| 285 |   /** @internal */ | 
|---|
| 286 |   template <typename A> | 
|---|
| 287 |   struct _delegate_member_this_type<A &> { typedef A t; }; | 
|---|
| 288 |  | 
|---|
| 289 |   /** | 
|---|
| 290 |      @short Member function pointer delegate class | 
|---|
| 291 |      @header dpp/delegate | 
|---|
| 292 |      @prototype template <typename prototype, prototype_without_1st_arg O::*F> | 
|---|
| 293 |      @main | 
|---|
| 294 |  | 
|---|
| 295 |      This delegate takes a member function to call as template | 
|---|
| 296 |      argument and invoke this function on object passed as first | 
|---|
| 297 |      delegate argument. Object argument may be a reference or a pointer. | 
|---|
| 298 |  | 
|---|
| 299 |      Actual implementations for different parameters count are located | 
|---|
| 300 |      in class specializations. | 
|---|
| 301 |  | 
|---|
| 302 |      Maximum number of handled arguments is controlled by the @ref | 
|---|
| 303 |      #DPP_DELEGATE_ARGC macro. | 
|---|
| 304 |  | 
|---|
| 305 |      Usage example: | 
|---|
| 306 |      @example test/test_delegate.cc:member1 | 
|---|
| 307 |      Use with reference argument: | 
|---|
| 308 |      @example test/test_delegate.cc:member_arg | 
|---|
| 309 |      Use with pointer argument: | 
|---|
| 310 |      @example test/test_delegate.cc:member_arg2 | 
|---|
| 311 |  | 
|---|
| 312 |      Delegate with @tt const member function type is only supported by | 
|---|
| 313 |      gcc 4.4 and clang compilers. | 
|---|
| 314 |  | 
|---|
| 315 |      @see delegate_member | 
|---|
| 316 |      @see delegate_func | 
|---|
| 317 |    */ | 
|---|
| 318 |   template <typename prototype, typename delegate_member_this_pm1<prototype>::p | 
|---|
| 319 |              (_delegate_member_this_type<typename delegate_member_this_pm1<prototype>::a0_t>::t::*F)> | 
|---|
| 320 |   class delegate_member_this : public delegate<prototype> | 
|---|
| 321 |   { | 
|---|
| 322 |   }; | 
|---|
| 323 |  | 
|---|
| 324 |  | 
|---|
| 325 | #define _DPP_DELEGATE_MEMBER_THIS_(n, cst)                              \ | 
|---|
| 326 |                                                                         \ | 
|---|
| 327 |   /** @internal */                                                      \ | 
|---|
| 328 |   template <typename R _DPP_DELEGATE_TARGS(n) >                         \ | 
|---|
| 329 |   struct delegate_member_this_pm1 < R (_DPP_DELEGATE_PARGS(n)) cst >    \ | 
|---|
| 330 |   {                                                                     \ | 
|---|
| 331 |     typedef A0 a0_t;                                                    \ | 
|---|
| 332 |     typedef R p(_DPP_DELEGATE_PARGS_NOT0(n)) cst;                       \ | 
|---|
| 333 |   };                                                                    \ | 
|---|
| 334 |                                                                         \ | 
|---|
| 335 |   template <typename R _DPP_DELEGATE_TARGS(n),                          \ | 
|---|
| 336 |             R (_delegate_member_this_type<A0>::t::*F)                   \ | 
|---|
| 337 |               (_DPP_DELEGATE_PARGS_NOT0(n)) cst >                       \ | 
|---|
| 338 |   class delegate_member_this < R (_DPP_DELEGATE_PARGS(n)) cst, F >      \ | 
|---|
| 339 |     : public delegate< R (_DPP_DELEGATE_PARGS(n)) >                     \ | 
|---|
| 340 |   {                                                                     \ | 
|---|
| 341 |   public:                                                               \ | 
|---|
| 342 |                                                                         \ | 
|---|
| 343 |     bool valid() const                                                  \ | 
|---|
| 344 |     {                                                                   \ | 
|---|
| 345 |       return true;                                                      \ | 
|---|
| 346 |     }                                                                   \ | 
|---|
| 347 |                                                                         \ | 
|---|
| 348 |     R operator()(_DPP_DELEGATE_CARGS(n)) const                          \ | 
|---|
| 349 |     {                                                                   \ | 
|---|
| 350 |       return delegate_member_this::call(_DPP_DELEGATE_IARGS(n));                \ | 
|---|
| 351 |     }                                                                   \ | 
|---|
| 352 |                                                                         \ | 
|---|
| 353 |   private:                                                              \ | 
|---|
| 354 |     R call (_DPP_DELEGATE_CARGS(n)) const                               \ | 
|---|
| 355 |     {                                                                   \ | 
|---|
| 356 |       return (_delegate_member_this_ptr<A0>::get(a0)                    \ | 
|---|
| 357 |               .*F)(_DPP_DELEGATE_IARGS_NOT0(n));                        \ | 
|---|
| 358 |     }                                                                   \ | 
|---|
| 359 |   }; | 
|---|
| 360 |  | 
|---|
| 361 | #if ((__GNUC__ == 4 && __GNUC_MINOR__ >= 4) || (__GNUC__ > 4)) && !defined(__INTEL_COMPILER) | 
|---|
| 362 | #define _DPP_DELEGATE_MEMBER_THIS(n)                    \ | 
|---|
| 363 |   _DPP_DELEGATE_MEMBER_THIS_(n,)                        \ | 
|---|
| 364 |   _DPP_DELEGATE_MEMBER_THIS_(n, const) | 
|---|
| 365 | #else | 
|---|
| 366 | #define _DPP_DELEGATE_MEMBER_THIS(n)                    \ | 
|---|
| 367 |   _DPP_DELEGATE_MEMBER_THIS_(n,)                         | 
|---|
| 368 | #endif | 
|---|
| 369 |  | 
|---|
| 370 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 371 |   //    delegate bind class | 
|---|
| 372 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 373 |  | 
|---|
| 374 |   /** Specify delegate argument positions. */ | 
|---|
| 375 |   enum delegate_args_mask_e { | 
|---|
| 376 |     arg1st = 1, | 
|---|
| 377 |     arg2nd = 2, | 
|---|
| 378 |     arg3rd = 4, | 
|---|
| 379 |     arg4th = 8, | 
|---|
| 380 |     arg5th = 16, | 
|---|
| 381 |     arg6th = 32, | 
|---|
| 382 |     arg7th = 64, | 
|---|
| 383 |     arg8th = 128 | 
|---|
| 384 |   }; | 
|---|
| 385 |  | 
|---|
| 386 |   /** | 
|---|
| 387 |      @short Parameter bind delegate class | 
|---|
| 388 |      @main | 
|---|
| 389 |      @header dpp/delegate | 
|---|
| 390 |  | 
|---|
| 391 |      This delegate class can be used to bind some parameters of an | 
|---|
| 392 |      other delegate to fixed values. | 
|---|
| 393 |  | 
|---|
| 394 |      Actual implementations for different parameters configurations | 
|---|
| 395 |      are located in class specializations. | 
|---|
| 396 |  | 
|---|
| 397 |      Maximum number of handled arguments is controlled by the @ref | 
|---|
| 398 |      #DPP_DELEGATE_ARGC macro. | 
|---|
| 399 |  | 
|---|
| 400 |      Usage example: | 
|---|
| 401 |      @example test/test_delegate.cc:bind1 | 
|---|
| 402 |      @example test/test_delegate.cc:bind2 | 
|---|
| 403 |  | 
|---|
| 404 |      @see delegate_args_mask_e | 
|---|
| 405 |   */ | 
|---|
| 406 |   template <typename base, typename prototype, int args_mask> | 
|---|
| 407 |   class delegate_bind : public delegate<prototype> | 
|---|
| 408 |   { | 
|---|
| 409 |   }; | 
|---|
| 410 |  | 
|---|
| 411 | #define _DPP_DELEGATE_BIND(args_mask, n, m, tdefs, ...)                 \ | 
|---|
| 412 |   /** @hidden */                                                        \ | 
|---|
| 413 |   template <typename base, typename R _DPP_DELEGATE_TARGS(n)>           \ | 
|---|
| 414 |   class delegate_bind < base, R (_DPP_DELEGATE_PARGS(n)), args_mask >   \ | 
|---|
| 415 |     : public delegate< R (_DPP_DELEGATE_PARGS(n)) >                     \ | 
|---|
| 416 |   {                                                                     \ | 
|---|
| 417 |     typedef R prototype(_DPP_DELEGATE_PARGS(n));                        \ | 
|---|
| 418 |     tdefs;                                                              \ | 
|---|
| 419 |                                                                         \ | 
|---|
| 420 |   public:                                                               \ | 
|---|
| 421 |     delegate_bind(const base &b _DPP_DELEGATE_BCARGS(m))                \ | 
|---|
| 422 |       : _base(b) _DPP_DELEGATE_BCSTR(m)                                 \ | 
|---|
| 423 |         {                                                               \ | 
|---|
| 424 |         }                                                               \ | 
|---|
| 425 |                                                                         \ | 
|---|
| 426 |     bool valid() const                                                  \ | 
|---|
| 427 |     {                                                                   \ | 
|---|
| 428 |       return _base.valid();                                             \ | 
|---|
| 429 |     }                                                                   \ | 
|---|
| 430 |                                                                         \ | 
|---|
| 431 |     R operator()(_DPP_DELEGATE_CARGS(n)) const                          \ | 
|---|
| 432 |     {                                                                   \ | 
|---|
| 433 |       return delegate_bind::call(_DPP_DELEGATE_IARGS(n));               \ | 
|---|
| 434 |     }                                                                   \ | 
|---|
| 435 |                                                                         \ | 
|---|
| 436 |   private:                                                              \ | 
|---|
| 437 |                                                                         \ | 
|---|
| 438 |     R call(_DPP_DELEGATE_CARGS(n)) const                                \ | 
|---|
| 439 |     {                                                                   \ | 
|---|
| 440 |       return _base(__VA_ARGS__);                                        \ | 
|---|
| 441 |     }                                                                   \ | 
|---|
| 442 |                                                                         \ | 
|---|
| 443 |     const base &_base;                                                  \ | 
|---|
| 444 |     _DPP_DELEGATE_BFIELD(m);                                            \ | 
|---|
| 445 |   }; | 
|---|
| 446 |  | 
|---|
| 447 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 448 |   //    template specializations for multiple parameters configurations | 
|---|
| 449 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 450 |  | 
|---|
| 451 | #define _DPP_DELEGATE_CM , | 
|---|
| 452 | #define _DPP_DELEGATE_SC ; | 
|---|
| 453 | #define _DPP_DELEGATE_SP | 
|---|
| 454 |  | 
|---|
| 455 | #define _DPP_DELEGATE_N0(sep, _1, _2, _3, _4, _5, _6, _7, _8) | 
|---|
| 456 |  | 
|---|
| 457 | #define _DPP_DELEGATE_N1(sep, _1, _2, _3, _4, _5, _6, _7, _8) _1 | 
|---|
| 458 | #define _DPP_DELEGATE_N1_M1(...) _DPP_DELEGATE_N0(__VA_ARGS__) | 
|---|
| 459 |  | 
|---|
| 460 | #define _DPP_DELEGATE_N2(sep, _1, _2, _3, _4, _5, _6, _7, _8)   \ | 
|---|
| 461 |   _1 _DPP_DELEGATE_##sep _2 | 
|---|
| 462 | #define _DPP_DELEGATE_N2_M1(...) _DPP_DELEGATE_N1(__VA_ARGS__) | 
|---|
| 463 |  | 
|---|
| 464 | #define _DPP_DELEGATE_N3(sep, _1, _2, _3, _4, _5, _6, _7, _8)   \ | 
|---|
| 465 |   _1 _DPP_DELEGATE_##sep _2 _DPP_DELEGATE_##sep _3 | 
|---|
| 466 | #define _DPP_DELEGATE_N3_M1(...) _DPP_DELEGATE_N2(__VA_ARGS__) | 
|---|
| 467 |  | 
|---|
| 468 | #define _DPP_DELEGATE_N4(sep, _1, _2, _3, _4, _5, _6, _7, _8)   \ | 
|---|
| 469 |   _1 _DPP_DELEGATE_##sep _2 _DPP_DELEGATE_##sep                 \ | 
|---|
| 470 |   _3 _DPP_DELEGATE_##sep _4 | 
|---|
| 471 | #define _DPP_DELEGATE_N4_M1(...) _DPP_DELEGATE_N3(__VA_ARGS__) | 
|---|
| 472 |  | 
|---|
| 473 | #define _DPP_DELEGATE_N5(sep, _1, _2, _3, _4, _5, _6, _7, _8)           \ | 
|---|
| 474 |   _1 _DPP_DELEGATE_##sep _2 _DPP_DELEGATE_##sep _3 _DPP_DELEGATE_##sep  \ | 
|---|
| 475 |   _4 _DPP_DELEGATE_##sep _5 | 
|---|
| 476 | #define _DPP_DELEGATE_N5_M1(...) _DPP_DELEGATE_N4(__VA_ARGS__) | 
|---|
| 477 |  | 
|---|
| 478 | #define _DPP_DELEGATE_N6(sep, _1, _2, _3, _4, _5, _6, _7, _8)           \ | 
|---|
| 479 |   _1 _DPP_DELEGATE_##sep _2 _DPP_DELEGATE_##sep _3 _DPP_DELEGATE_##sep  \ | 
|---|
| 480 |   _4 _DPP_DELEGATE_##sep _5 _DPP_DELEGATE_##sep _6 | 
|---|
| 481 | #define _DPP_DELEGATE_N6_M1(...) _DPP_DELEGATE_N5(__VA_ARGS__) | 
|---|
| 482 |  | 
|---|
| 483 | #define _DPP_DELEGATE_N7(sep, _1, _2, _3, _4, _5, _6, _7, _8)           \ | 
|---|
| 484 |   _1 _DPP_DELEGATE_##sep _2 _DPP_DELEGATE_##sep _3 _DPP_DELEGATE_##sep  \ | 
|---|
| 485 |   _4 _DPP_DELEGATE_##sep _5 _DPP_DELEGATE_##sep _6 _DPP_DELEGATE_##sep _7 | 
|---|
| 486 | #define _DPP_DELEGATE_N7_M1(...) _DPP_DELEGATE_N6(__VA_ARGS__) | 
|---|
| 487 |  | 
|---|
| 488 | #define _DPP_DELEGATE_N8(sep, _1, _2, _3, _4, _5, _6, _7, _8)           \ | 
|---|
| 489 |   _1 _DPP_DELEGATE_##sep _2 _DPP_DELEGATE_##sep _3 _DPP_DELEGATE_##sep  \ | 
|---|
| 490 |   _4 _DPP_DELEGATE_##sep _5 _DPP_DELEGATE_##sep _6 _DPP_DELEGATE_##sep  \ | 
|---|
| 491 |   _7 _DPP_DELEGATE_##sep _8 | 
|---|
| 492 | #define _DPP_DELEGATE_N8_M1(...) _DPP_DELEGATE_N7(__VA_ARGS__) | 
|---|
| 493 |  | 
|---|
| 494 | #define _DPP_DELEGATE_PARGS(n)                                  \ | 
|---|
| 495 |   _DPP_DELEGATE_N##n(CM, A0, A1, A2, A3, A4, A5, A6, A7) | 
|---|
| 496 |  | 
|---|
| 497 | #define _DPP_DELEGATE_PARGS_NOT0(n)                             \ | 
|---|
| 498 |   _DPP_DELEGATE_N##n##_M1(CM, A1, A2, A3, A4, A5, A6, A7, ) | 
|---|
| 499 |  | 
|---|
| 500 | #define _DPP_DELEGATE_IARGS(n)                                  \ | 
|---|
| 501 |   _DPP_DELEGATE_N##n(CM, a0, a1, a2, a3, a4, a5, a6, a7) | 
|---|
| 502 |  | 
|---|
| 503 | #define _DPP_DELEGATE_IARGS_NOT0(n)                             \ | 
|---|
| 504 |   _DPP_DELEGATE_N##n##_M1(CM, a1, a2, a3, a4, a5, a6, a7, ) | 
|---|
| 505 |  | 
|---|
| 506 | #define _DPP_DELEGATE_CARGS(n)                          \ | 
|---|
| 507 |   _DPP_DELEGATE_N##n(CM, A0 a0, A1 a1, A2 a2, A3 a3,    \ | 
|---|
| 508 |                      A4 a4, A5 a5, A6 a6, A7 a7) | 
|---|
| 509 |  | 
|---|
| 510 | #define _DPP_DELEGATE_TDEFS(n)                                  \ | 
|---|
| 511 |   _DPP_DELEGATE_N##n(SC, typedef A0 a0_t, typedef A1 a1_t,      \ | 
|---|
| 512 |                      typedef A2 a2_t, typedef A3 a3_t,          \ | 
|---|
| 513 |                      typedef A4 a4_t, typedef A5 a5_t,          \ | 
|---|
| 514 |                      typedef A6 a6_t, typedef A7 a7_t) ; | 
|---|
| 515 |  | 
|---|
| 516 | #define _DPP_DELEGATE_TDEFS(n)                                  \ | 
|---|
| 517 |   _DPP_DELEGATE_N##n(SC, typedef A0 a0_t, typedef A1 a1_t,      \ | 
|---|
| 518 |                      typedef A2 a2_t, typedef A3 a3_t,          \ | 
|---|
| 519 |                      typedef A4 a4_t, typedef A5 a5_t,          \ | 
|---|
| 520 |                      typedef A6 a6_t, typedef A7 a7_t) ; | 
|---|
| 521 |  | 
|---|
| 522 | #define _DPP_DELEGATE_TARGS(n)                              \ | 
|---|
| 523 |   _DPP_DELEGATE_N##n(SP,_DPP_DELEGATE_CM,,,,,,,)            \ | 
|---|
| 524 |   _DPP_DELEGATE_N##n(CM, typename A0, typename A1,          \ | 
|---|
| 525 |                      typename A2, typename A3,              \ | 
|---|
| 526 |                      typename A4, typename A5,              \ | 
|---|
| 527 |                      typename A6, typename A7) | 
|---|
| 528 |  | 
|---|
| 529 | #define _DPP_DELEGATE_BCARGS(n)                         \ | 
|---|
| 530 |   _DPP_DELEGATE_N##n(SP,_DPP_DELEGATE_CM,,,,,,,)                \ | 
|---|
| 531 |   _DPP_DELEGATE_N##n(CM, B0 a0, B1 a1, B2 a2, B3 a3,    \ | 
|---|
| 532 |                      B4 a4, B5 a5, B6 a6, B7 a7) | 
|---|
| 533 |  | 
|---|
| 534 | #define _DPP_DELEGATE_BCSTR(n)                                  \ | 
|---|
| 535 |   _DPP_DELEGATE_N##n(SP,_DPP_DELEGATE_CM,,,,,,,)                \ | 
|---|
| 536 |   _DPP_DELEGATE_N##n(CM, _a0(a0), _a1(a1), _a2(a2), _a3(a3),    \ | 
|---|
| 537 |                      _a4(a4), _a5(a5), _a6(a6), _a7(a7)) | 
|---|
| 538 |  | 
|---|
| 539 | #define _DPP_DELEGATE_BFIELD(n)                                 \ | 
|---|
| 540 |   _DPP_DELEGATE_N##n(SC, B0 _a0, B1 _a1, B2 _a2, B3 _a3,        \ | 
|---|
| 541 |                      B4 _a4, B5 _a5, B6 _a6, B7 _a7) | 
|---|
| 542 |  | 
|---|
| 543 | #define _DPP_DELEGATE_BTDEFS_(n, _1a, _2a, _3a, _4a, \ | 
|---|
| 544 |                               _5a, _6a, _7a, _8a, ...) \ | 
|---|
| 545 |   _DPP_DELEGATE_N##n(SC,                                        \ | 
|---|
| 546 |     typedef typename base::a##_1a##_t B0,                       \ | 
|---|
| 547 |     typedef typename base::a##_2a##_t B1,                       \ | 
|---|
| 548 |     typedef typename base::a##_3a##_t B2,                       \ | 
|---|
| 549 |     typedef typename base::a##_4a##_t B3,                       \ | 
|---|
| 550 |     typedef typename base::a##_5a##_t B4,                       \ | 
|---|
| 551 |     typedef typename base::a##_6a##_t B5,                       \ | 
|---|
| 552 |     typedef typename base::a##_7a##_t B6,                       \ | 
|---|
| 553 |     typedef typename base::a##_8a##_t B7) | 
|---|
| 554 |  | 
|---|
| 555 | #define _DPP_DELEGATE_BTDEFS(n, ...) _DPP_DELEGATE_BTDEFS_(n, __VA_ARGS__,,,,,,,,,) | 
|---|
| 556 |  | 
|---|
| 557 | #if DPP_DELEGATE_ARGC >= 0 | 
|---|
| 558 |   _DPP_DELEGATE(0) | 
|---|
| 559 |   _DPP_DELEGATE_FUNC(0) | 
|---|
| 560 |   _DPP_DELEGATE_MEMBER(0) | 
|---|
| 561 | #endif | 
|---|
| 562 |  | 
|---|
| 563 | #if DPP_DELEGATE_ARGC >= 1 | 
|---|
| 564 |   _DPP_DELEGATE(1) | 
|---|
| 565 |   _DPP_DELEGATE_FUNC(1) | 
|---|
| 566 |   _DPP_DELEGATE_MEMBER(1) | 
|---|
| 567 |   _DPP_DELEGATE_MEMBER_THIS(1) | 
|---|
| 568 |   _DPP_DELEGATE_BIND(1, 0, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0); | 
|---|
| 569 | #endif | 
|---|
| 570 |  | 
|---|
| 571 | #if DPP_DELEGATE_ARGC >= 2 | 
|---|
| 572 |   _DPP_DELEGATE(2) | 
|---|
| 573 |   _DPP_DELEGATE_FUNC(2) | 
|---|
| 574 |   _DPP_DELEGATE_MEMBER(2) | 
|---|
| 575 |   _DPP_DELEGATE_MEMBER_THIS(2) | 
|---|
| 576 |   _DPP_DELEGATE_BIND(1, 1, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0, a0); | 
|---|
| 577 |   _DPP_DELEGATE_BIND(2, 1, 1, _DPP_DELEGATE_BTDEFS(1, 1), a0, _a0); | 
|---|
| 578 |   _DPP_DELEGATE_BIND(3, 0, 2, _DPP_DELEGATE_BTDEFS(2, 0, 1), _a0, _a1); | 
|---|
| 579 | #endif | 
|---|
| 580 |  | 
|---|
| 581 | #if DPP_DELEGATE_ARGC >= 3 | 
|---|
| 582 |   _DPP_DELEGATE(3) | 
|---|
| 583 |   _DPP_DELEGATE_FUNC(3) | 
|---|
| 584 |   _DPP_DELEGATE_MEMBER(3) | 
|---|
| 585 |   _DPP_DELEGATE_MEMBER_THIS(3) | 
|---|
| 586 |   _DPP_DELEGATE_BIND(1, 2, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0, a0, a1); | 
|---|
| 587 |   _DPP_DELEGATE_BIND(2, 2, 1, _DPP_DELEGATE_BTDEFS(1, 1), a0, _a0, a1); | 
|---|
| 588 |   _DPP_DELEGATE_BIND(3, 1, 2, _DPP_DELEGATE_BTDEFS(2, 0, 1), _a0, _a1, a0); | 
|---|
| 589 |   _DPP_DELEGATE_BIND(4, 2, 1, _DPP_DELEGATE_BTDEFS(1, 2), a0, a1, _a0); | 
|---|
| 590 |   _DPP_DELEGATE_BIND(5, 1, 2, _DPP_DELEGATE_BTDEFS(2, 0, 2), _a0, a0, _a1); | 
|---|
| 591 |   _DPP_DELEGATE_BIND(6, 1, 2, _DPP_DELEGATE_BTDEFS(2, 1, 2), a0, _a0, _a1); | 
|---|
| 592 |   _DPP_DELEGATE_BIND(7, 0, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 2), _a0, _a1, _a2); | 
|---|
| 593 | #endif | 
|---|
| 594 |  | 
|---|
| 595 | #if DPP_DELEGATE_ARGC >= 4 | 
|---|
| 596 |   _DPP_DELEGATE(4) | 
|---|
| 597 |   _DPP_DELEGATE_FUNC(4) | 
|---|
| 598 |   _DPP_DELEGATE_MEMBER(4) | 
|---|
| 599 |   _DPP_DELEGATE_MEMBER_THIS(4) | 
|---|
| 600 |   _DPP_DELEGATE_BIND(1, 3, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0, a0, a1, a2); | 
|---|
| 601 |   _DPP_DELEGATE_BIND(2, 3, 1, _DPP_DELEGATE_BTDEFS(1, 1), a0, _a0, a1, a2); | 
|---|
| 602 |   _DPP_DELEGATE_BIND(3, 2, 2, _DPP_DELEGATE_BTDEFS(2, 0, 1), _a0, _a1, a0, a1); | 
|---|
| 603 |   _DPP_DELEGATE_BIND(4, 3, 1, _DPP_DELEGATE_BTDEFS(1, 2), a0, a1, _a0, a2); | 
|---|
| 604 |   _DPP_DELEGATE_BIND(5, 2, 2, _DPP_DELEGATE_BTDEFS(2, 0, 2), _a0, a0, _a1, a1); | 
|---|
| 605 |   _DPP_DELEGATE_BIND(6, 2, 2, _DPP_DELEGATE_BTDEFS(2, 1, 2), a0, _a0, _a1, a1); | 
|---|
| 606 |   _DPP_DELEGATE_BIND(7, 1, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 2), _a0, _a1, _a2, a0); | 
|---|
| 607 |   _DPP_DELEGATE_BIND(8, 3, 1, _DPP_DELEGATE_BTDEFS(1, 3), a0, a1, a2, _a0); | 
|---|
| 608 |   _DPP_DELEGATE_BIND(9, 2, 2, _DPP_DELEGATE_BTDEFS(2, 0, 3), _a0, a0, a1, _a1); | 
|---|
| 609 |   _DPP_DELEGATE_BIND(10, 2, 2, _DPP_DELEGATE_BTDEFS(2, 1, 3), a0, _a0, a1, _a1); | 
|---|
| 610 |   _DPP_DELEGATE_BIND(11, 1, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 3), _a0, _a1, a0, _a2); | 
|---|
| 611 |   _DPP_DELEGATE_BIND(12, 2, 2, _DPP_DELEGATE_BTDEFS(2, 2, 3), a0, a1, _a0, _a1); | 
|---|
| 612 |   _DPP_DELEGATE_BIND(13, 1, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 3), _a0, a0, _a1, _a2); | 
|---|
| 613 |   _DPP_DELEGATE_BIND(14, 1, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 3), a0, _a0, _a1, _a2); | 
|---|
| 614 |   _DPP_DELEGATE_BIND(15, 0, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 3), _a0, _a1, _a2, _a3); | 
|---|
| 615 | #endif | 
|---|
| 616 |  | 
|---|
| 617 | #if DPP_DELEGATE_ARGC >= 5 // mkdoc:skip | 
|---|
| 618 |   _DPP_DELEGATE(5) | 
|---|
| 619 |   _DPP_DELEGATE_FUNC(5) | 
|---|
| 620 |   _DPP_DELEGATE_MEMBER(5) | 
|---|
| 621 |   _DPP_DELEGATE_MEMBER_THIS(5) | 
|---|
| 622 |   _DPP_DELEGATE_BIND(1, 4, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0, a0, a1, a2, a3); | 
|---|
| 623 |   _DPP_DELEGATE_BIND(2, 4, 1, _DPP_DELEGATE_BTDEFS(1, 1), a0, _a0, a1, a2, a3); | 
|---|
| 624 |   _DPP_DELEGATE_BIND(3, 3, 2, _DPP_DELEGATE_BTDEFS(2, 0, 1), _a0, _a1, a0, a1, a2); | 
|---|
| 625 |   _DPP_DELEGATE_BIND(4, 4, 1, _DPP_DELEGATE_BTDEFS(1, 2), a0, a1, _a0, a2, a3); | 
|---|
| 626 |   _DPP_DELEGATE_BIND(5, 3, 2, _DPP_DELEGATE_BTDEFS(2, 0, 2), _a0, a0, _a1, a1, a2); | 
|---|
| 627 |   _DPP_DELEGATE_BIND(6, 3, 2, _DPP_DELEGATE_BTDEFS(2, 1, 2), a0, _a0, _a1, a1, a2); | 
|---|
| 628 |   _DPP_DELEGATE_BIND(7, 2, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 2), _a0, _a1, _a2, a0, a1); | 
|---|
| 629 |   _DPP_DELEGATE_BIND(8, 4, 1, _DPP_DELEGATE_BTDEFS(1, 3), a0, a1, a2, _a0, a3); | 
|---|
| 630 |   _DPP_DELEGATE_BIND(9, 3, 2, _DPP_DELEGATE_BTDEFS(2, 0, 3), _a0, a0, a1, _a1, a2); | 
|---|
| 631 |   _DPP_DELEGATE_BIND(10, 3, 2, _DPP_DELEGATE_BTDEFS(2, 1, 3), a0, _a0, a1, _a1, a2); | 
|---|
| 632 |   _DPP_DELEGATE_BIND(11, 2, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 3), _a0, _a1, a0, _a2, a1); | 
|---|
| 633 |   _DPP_DELEGATE_BIND(12, 3, 2, _DPP_DELEGATE_BTDEFS(2, 2, 3), a0, a1, _a0, _a1, a2); | 
|---|
| 634 |   _DPP_DELEGATE_BIND(13, 2, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 3), _a0, a0, _a1, _a2, a1); | 
|---|
| 635 |   _DPP_DELEGATE_BIND(14, 2, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 3), a0, _a0, _a1, _a2, a1); | 
|---|
| 636 |   _DPP_DELEGATE_BIND(15, 1, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 3), _a0, _a1, _a2, _a3, a0); | 
|---|
| 637 |   _DPP_DELEGATE_BIND(16, 4, 1, _DPP_DELEGATE_BTDEFS(1, 4), a0, a1, a2, a3, _a0); | 
|---|
| 638 |   _DPP_DELEGATE_BIND(17, 3, 2, _DPP_DELEGATE_BTDEFS(2, 0, 4), _a0, a0, a1, a2, _a1); | 
|---|
| 639 |   _DPP_DELEGATE_BIND(18, 3, 2, _DPP_DELEGATE_BTDEFS(2, 1, 4), a0, _a0, a1, a2, _a1); | 
|---|
| 640 |   _DPP_DELEGATE_BIND(19, 2, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 4), _a0, _a1, a0, a1, _a2); | 
|---|
| 641 |   _DPP_DELEGATE_BIND(20, 3, 2, _DPP_DELEGATE_BTDEFS(2, 2, 4), a0, a1, _a0, a2, _a1); | 
|---|
| 642 |   _DPP_DELEGATE_BIND(21, 2, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 4), _a0, a0, _a1, a1, _a2); | 
|---|
| 643 |   _DPP_DELEGATE_BIND(22, 2, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 4), a0, _a0, _a1, a1, _a2); | 
|---|
| 644 |   _DPP_DELEGATE_BIND(23, 1, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 4), _a0, _a1, _a2, a0, _a3); | 
|---|
| 645 |   _DPP_DELEGATE_BIND(24, 3, 2, _DPP_DELEGATE_BTDEFS(2, 3, 4), a0, a1, a2, _a0, _a1); | 
|---|
| 646 |   _DPP_DELEGATE_BIND(25, 2, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 4), _a0, a0, a1, _a1, _a2); | 
|---|
| 647 |   _DPP_DELEGATE_BIND(26, 2, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 4), a0, _a0, a1, _a1, _a2); | 
|---|
| 648 |   _DPP_DELEGATE_BIND(27, 1, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 4), _a0, _a1, a0, _a2, _a3); | 
|---|
| 649 |   _DPP_DELEGATE_BIND(28, 2, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 4), a0, a1, _a0, _a1, _a2); | 
|---|
| 650 |   _DPP_DELEGATE_BIND(29, 1, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 4), _a0, a0, _a1, _a2, _a3); | 
|---|
| 651 |   _DPP_DELEGATE_BIND(30, 1, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 4), a0, _a0, _a1, _a2, _a3); | 
|---|
| 652 |   _DPP_DELEGATE_BIND(31, 0, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 4), _a0, _a1, _a2, _a3, _a4); | 
|---|
| 653 | #endif | 
|---|
| 654 |  | 
|---|
| 655 | #if DPP_DELEGATE_ARGC >= 6 // mkdoc:skip | 
|---|
| 656 |   _DPP_DELEGATE(6) | 
|---|
| 657 |   _DPP_DELEGATE_FUNC(6) | 
|---|
| 658 |   _DPP_DELEGATE_MEMBER(6) | 
|---|
| 659 |   _DPP_DELEGATE_MEMBER_THIS(6) | 
|---|
| 660 |   _DPP_DELEGATE_BIND(1, 5, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0, a0, a1, a2, a3, a4); | 
|---|
| 661 |   _DPP_DELEGATE_BIND(2, 5, 1, _DPP_DELEGATE_BTDEFS(1, 1), a0, _a0, a1, a2, a3, a4); | 
|---|
| 662 |   _DPP_DELEGATE_BIND(3, 4, 2, _DPP_DELEGATE_BTDEFS(2, 0, 1), _a0, _a1, a0, a1, a2, a3); | 
|---|
| 663 |   _DPP_DELEGATE_BIND(4, 5, 1, _DPP_DELEGATE_BTDEFS(1, 2), a0, a1, _a0, a2, a3, a4); | 
|---|
| 664 |   _DPP_DELEGATE_BIND(5, 4, 2, _DPP_DELEGATE_BTDEFS(2, 0, 2), _a0, a0, _a1, a1, a2, a3); | 
|---|
| 665 |   _DPP_DELEGATE_BIND(6, 4, 2, _DPP_DELEGATE_BTDEFS(2, 1, 2), a0, _a0, _a1, a1, a2, a3); | 
|---|
| 666 |   _DPP_DELEGATE_BIND(7, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 2), _a0, _a1, _a2, a0, a1, a2); | 
|---|
| 667 |   _DPP_DELEGATE_BIND(8, 5, 1, _DPP_DELEGATE_BTDEFS(1, 3), a0, a1, a2, _a0, a3, a4); | 
|---|
| 668 |   _DPP_DELEGATE_BIND(9, 4, 2, _DPP_DELEGATE_BTDEFS(2, 0, 3), _a0, a0, a1, _a1, a2, a3); | 
|---|
| 669 |   _DPP_DELEGATE_BIND(10, 4, 2, _DPP_DELEGATE_BTDEFS(2, 1, 3), a0, _a0, a1, _a1, a2, a3); | 
|---|
| 670 |   _DPP_DELEGATE_BIND(11, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 3), _a0, _a1, a0, _a2, a1, a2); | 
|---|
| 671 |   _DPP_DELEGATE_BIND(12, 4, 2, _DPP_DELEGATE_BTDEFS(2, 2, 3), a0, a1, _a0, _a1, a2, a3); | 
|---|
| 672 |   _DPP_DELEGATE_BIND(13, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 3), _a0, a0, _a1, _a2, a1, a2); | 
|---|
| 673 |   _DPP_DELEGATE_BIND(14, 3, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 3), a0, _a0, _a1, _a2, a1, a2); | 
|---|
| 674 |   _DPP_DELEGATE_BIND(15, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 3), _a0, _a1, _a2, _a3, a0, a1); | 
|---|
| 675 |   _DPP_DELEGATE_BIND(16, 5, 1, _DPP_DELEGATE_BTDEFS(1, 4), a0, a1, a2, a3, _a0, a4); | 
|---|
| 676 |   _DPP_DELEGATE_BIND(17, 4, 2, _DPP_DELEGATE_BTDEFS(2, 0, 4), _a0, a0, a1, a2, _a1, a3); | 
|---|
| 677 |   _DPP_DELEGATE_BIND(18, 4, 2, _DPP_DELEGATE_BTDEFS(2, 1, 4), a0, _a0, a1, a2, _a1, a3); | 
|---|
| 678 |   _DPP_DELEGATE_BIND(19, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 4), _a0, _a1, a0, a1, _a2, a2); | 
|---|
| 679 |   _DPP_DELEGATE_BIND(20, 4, 2, _DPP_DELEGATE_BTDEFS(2, 2, 4), a0, a1, _a0, a2, _a1, a3); | 
|---|
| 680 |   _DPP_DELEGATE_BIND(21, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 4), _a0, a0, _a1, a1, _a2, a2); | 
|---|
| 681 |   _DPP_DELEGATE_BIND(22, 3, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 4), a0, _a0, _a1, a1, _a2, a2); | 
|---|
| 682 |   _DPP_DELEGATE_BIND(23, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 4), _a0, _a1, _a2, a0, _a3, a1); | 
|---|
| 683 |   _DPP_DELEGATE_BIND(24, 4, 2, _DPP_DELEGATE_BTDEFS(2, 3, 4), a0, a1, a2, _a0, _a1, a3); | 
|---|
| 684 |   _DPP_DELEGATE_BIND(25, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 4), _a0, a0, a1, _a1, _a2, a2); | 
|---|
| 685 |   _DPP_DELEGATE_BIND(26, 3, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 4), a0, _a0, a1, _a1, _a2, a2); | 
|---|
| 686 |   _DPP_DELEGATE_BIND(27, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 4), _a0, _a1, a0, _a2, _a3, a1); | 
|---|
| 687 |   _DPP_DELEGATE_BIND(28, 3, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 4), a0, a1, _a0, _a1, _a2, a2); | 
|---|
| 688 |   _DPP_DELEGATE_BIND(29, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 4), _a0, a0, _a1, _a2, _a3, a1); | 
|---|
| 689 |   _DPP_DELEGATE_BIND(30, 2, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 4), a0, _a0, _a1, _a2, _a3, a1); | 
|---|
| 690 |   _DPP_DELEGATE_BIND(31, 1, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 4), _a0, _a1, _a2, _a3, _a4, a0); | 
|---|
| 691 |   _DPP_DELEGATE_BIND(32, 5, 1, _DPP_DELEGATE_BTDEFS(1, 5), a0, a1, a2, a3, a4, _a0); | 
|---|
| 692 |   _DPP_DELEGATE_BIND(33, 4, 2, _DPP_DELEGATE_BTDEFS(2, 0, 5), _a0, a0, a1, a2, a3, _a1); | 
|---|
| 693 |   _DPP_DELEGATE_BIND(34, 4, 2, _DPP_DELEGATE_BTDEFS(2, 1, 5), a0, _a0, a1, a2, a3, _a1); | 
|---|
| 694 |   _DPP_DELEGATE_BIND(35, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 5), _a0, _a1, a0, a1, a2, _a2); | 
|---|
| 695 |   _DPP_DELEGATE_BIND(36, 4, 2, _DPP_DELEGATE_BTDEFS(2, 2, 5), a0, a1, _a0, a2, a3, _a1); | 
|---|
| 696 |   _DPP_DELEGATE_BIND(37, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 5), _a0, a0, _a1, a1, a2, _a2); | 
|---|
| 697 |   _DPP_DELEGATE_BIND(38, 3, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 5), a0, _a0, _a1, a1, a2, _a2); | 
|---|
| 698 |   _DPP_DELEGATE_BIND(39, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 5), _a0, _a1, _a2, a0, a1, _a3); | 
|---|
| 699 |   _DPP_DELEGATE_BIND(40, 4, 2, _DPP_DELEGATE_BTDEFS(2, 3, 5), a0, a1, a2, _a0, a3, _a1); | 
|---|
| 700 |   _DPP_DELEGATE_BIND(41, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 5), _a0, a0, a1, _a1, a2, _a2); | 
|---|
| 701 |   _DPP_DELEGATE_BIND(42, 3, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 5), a0, _a0, a1, _a1, a2, _a2); | 
|---|
| 702 |   _DPP_DELEGATE_BIND(43, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 5), _a0, _a1, a0, _a2, a1, _a3); | 
|---|
| 703 |   _DPP_DELEGATE_BIND(44, 3, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 5), a0, a1, _a0, _a1, a2, _a2); | 
|---|
| 704 |   _DPP_DELEGATE_BIND(45, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 5), _a0, a0, _a1, _a2, a1, _a3); | 
|---|
| 705 |   _DPP_DELEGATE_BIND(46, 2, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 5), a0, _a0, _a1, _a2, a1, _a3); | 
|---|
| 706 |   _DPP_DELEGATE_BIND(47, 1, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 5), _a0, _a1, _a2, _a3, a0, _a4); | 
|---|
| 707 |   _DPP_DELEGATE_BIND(48, 4, 2, _DPP_DELEGATE_BTDEFS(2, 4, 5), a0, a1, a2, a3, _a0, _a1); | 
|---|
| 708 |   _DPP_DELEGATE_BIND(49, 3, 3, _DPP_DELEGATE_BTDEFS(3, 0, 4, 5), _a0, a0, a1, a2, _a1, _a2); | 
|---|
| 709 |   _DPP_DELEGATE_BIND(50, 3, 3, _DPP_DELEGATE_BTDEFS(3, 1, 4, 5), a0, _a0, a1, a2, _a1, _a2); | 
|---|
| 710 |   _DPP_DELEGATE_BIND(51, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 4, 5), _a0, _a1, a0, a1, _a2, _a3); | 
|---|
| 711 |   _DPP_DELEGATE_BIND(52, 3, 3, _DPP_DELEGATE_BTDEFS(3, 2, 4, 5), a0, a1, _a0, a2, _a1, _a2); | 
|---|
| 712 |   _DPP_DELEGATE_BIND(53, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 4, 5), _a0, a0, _a1, a1, _a2, _a3); | 
|---|
| 713 |   _DPP_DELEGATE_BIND(54, 2, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 4, 5), a0, _a0, _a1, a1, _a2, _a3); | 
|---|
| 714 |   _DPP_DELEGATE_BIND(55, 1, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 4, 5), _a0, _a1, _a2, a0, _a3, _a4); | 
|---|
| 715 |   _DPP_DELEGATE_BIND(56, 3, 3, _DPP_DELEGATE_BTDEFS(3, 3, 4, 5), a0, a1, a2, _a0, _a1, _a2); | 
|---|
| 716 |   _DPP_DELEGATE_BIND(57, 2, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 4, 5), _a0, a0, a1, _a1, _a2, _a3); | 
|---|
| 717 |   _DPP_DELEGATE_BIND(58, 2, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 4, 5), a0, _a0, a1, _a1, _a2, _a3); | 
|---|
| 718 |   _DPP_DELEGATE_BIND(59, 1, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 4, 5), _a0, _a1, a0, _a2, _a3, _a4); | 
|---|
| 719 |   _DPP_DELEGATE_BIND(60, 2, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 4, 5), a0, a1, _a0, _a1, _a2, _a3); | 
|---|
| 720 |   _DPP_DELEGATE_BIND(61, 1, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 4, 5), _a0, a0, _a1, _a2, _a3, _a4); | 
|---|
| 721 |   _DPP_DELEGATE_BIND(62, 1, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 4, 5), a0, _a0, _a1, _a2, _a3, _a4); | 
|---|
| 722 |   _DPP_DELEGATE_BIND(63, 0, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 4, 5), _a0, _a1, _a2, _a3, _a4, _a5); | 
|---|
| 723 | #endif | 
|---|
| 724 |  | 
|---|
| 725 | #if DPP_DELEGATE_ARGC >= 7 // mkdoc:skip | 
|---|
| 726 |   _DPP_DELEGATE(7) | 
|---|
| 727 |   _DPP_DELEGATE_FUNC(7) | 
|---|
| 728 |   _DPP_DELEGATE_MEMBER(7) | 
|---|
| 729 |   _DPP_DELEGATE_MEMBER_THIS(7) | 
|---|
| 730 |   _DPP_DELEGATE_BIND(1, 6, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0, a0, a1, a2, a3, a4, a5); | 
|---|
| 731 |   _DPP_DELEGATE_BIND(2, 6, 1, _DPP_DELEGATE_BTDEFS(1, 1), a0, _a0, a1, a2, a3, a4, a5); | 
|---|
| 732 |   _DPP_DELEGATE_BIND(3, 5, 2, _DPP_DELEGATE_BTDEFS(2, 0, 1), _a0, _a1, a0, a1, a2, a3, a4); | 
|---|
| 733 |   _DPP_DELEGATE_BIND(4, 6, 1, _DPP_DELEGATE_BTDEFS(1, 2), a0, a1, _a0, a2, a3, a4, a5); | 
|---|
| 734 |   _DPP_DELEGATE_BIND(5, 5, 2, _DPP_DELEGATE_BTDEFS(2, 0, 2), _a0, a0, _a1, a1, a2, a3, a4); | 
|---|
| 735 |   _DPP_DELEGATE_BIND(6, 5, 2, _DPP_DELEGATE_BTDEFS(2, 1, 2), a0, _a0, _a1, a1, a2, a3, a4); | 
|---|
| 736 |   _DPP_DELEGATE_BIND(7, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 2), _a0, _a1, _a2, a0, a1, a2, a3); | 
|---|
| 737 |   _DPP_DELEGATE_BIND(8, 6, 1, _DPP_DELEGATE_BTDEFS(1, 3), a0, a1, a2, _a0, a3, a4, a5); | 
|---|
| 738 |   _DPP_DELEGATE_BIND(9, 5, 2, _DPP_DELEGATE_BTDEFS(2, 0, 3), _a0, a0, a1, _a1, a2, a3, a4); | 
|---|
| 739 |   _DPP_DELEGATE_BIND(10, 5, 2, _DPP_DELEGATE_BTDEFS(2, 1, 3), a0, _a0, a1, _a1, a2, a3, a4); | 
|---|
| 740 |   _DPP_DELEGATE_BIND(11, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 3), _a0, _a1, a0, _a2, a1, a2, a3); | 
|---|
| 741 |   _DPP_DELEGATE_BIND(12, 5, 2, _DPP_DELEGATE_BTDEFS(2, 2, 3), a0, a1, _a0, _a1, a2, a3, a4); | 
|---|
| 742 |   _DPP_DELEGATE_BIND(13, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 3), _a0, a0, _a1, _a2, a1, a2, a3); | 
|---|
| 743 |   _DPP_DELEGATE_BIND(14, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 3), a0, _a0, _a1, _a2, a1, a2, a3); | 
|---|
| 744 |   _DPP_DELEGATE_BIND(15, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 3), _a0, _a1, _a2, _a3, a0, a1, a2); | 
|---|
| 745 |   _DPP_DELEGATE_BIND(16, 6, 1, _DPP_DELEGATE_BTDEFS(1, 4), a0, a1, a2, a3, _a0, a4, a5); | 
|---|
| 746 |   _DPP_DELEGATE_BIND(17, 5, 2, _DPP_DELEGATE_BTDEFS(2, 0, 4), _a0, a0, a1, a2, _a1, a3, a4); | 
|---|
| 747 |   _DPP_DELEGATE_BIND(18, 5, 2, _DPP_DELEGATE_BTDEFS(2, 1, 4), a0, _a0, a1, a2, _a1, a3, a4); | 
|---|
| 748 |   _DPP_DELEGATE_BIND(19, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 4), _a0, _a1, a0, a1, _a2, a2, a3); | 
|---|
| 749 |   _DPP_DELEGATE_BIND(20, 5, 2, _DPP_DELEGATE_BTDEFS(2, 2, 4), a0, a1, _a0, a2, _a1, a3, a4); | 
|---|
| 750 |   _DPP_DELEGATE_BIND(21, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 4), _a0, a0, _a1, a1, _a2, a2, a3); | 
|---|
| 751 |   _DPP_DELEGATE_BIND(22, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 4), a0, _a0, _a1, a1, _a2, a2, a3); | 
|---|
| 752 |   _DPP_DELEGATE_BIND(23, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 4), _a0, _a1, _a2, a0, _a3, a1, a2); | 
|---|
| 753 |   _DPP_DELEGATE_BIND(24, 5, 2, _DPP_DELEGATE_BTDEFS(2, 3, 4), a0, a1, a2, _a0, _a1, a3, a4); | 
|---|
| 754 |   _DPP_DELEGATE_BIND(25, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 4), _a0, a0, a1, _a1, _a2, a2, a3); | 
|---|
| 755 |   _DPP_DELEGATE_BIND(26, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 4), a0, _a0, a1, _a1, _a2, a2, a3); | 
|---|
| 756 |   _DPP_DELEGATE_BIND(27, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 4), _a0, _a1, a0, _a2, _a3, a1, a2); | 
|---|
| 757 |   _DPP_DELEGATE_BIND(28, 4, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 4), a0, a1, _a0, _a1, _a2, a2, a3); | 
|---|
| 758 |   _DPP_DELEGATE_BIND(29, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 4), _a0, a0, _a1, _a2, _a3, a1, a2); | 
|---|
| 759 |   _DPP_DELEGATE_BIND(30, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 4), a0, _a0, _a1, _a2, _a3, a1, a2); | 
|---|
| 760 |   _DPP_DELEGATE_BIND(31, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 4), _a0, _a1, _a2, _a3, _a4, a0, a1); | 
|---|
| 761 |   _DPP_DELEGATE_BIND(32, 6, 1, _DPP_DELEGATE_BTDEFS(1, 5), a0, a1, a2, a3, a4, _a0, a5); | 
|---|
| 762 |   _DPP_DELEGATE_BIND(33, 5, 2, _DPP_DELEGATE_BTDEFS(2, 0, 5), _a0, a0, a1, a2, a3, _a1, a4); | 
|---|
| 763 |   _DPP_DELEGATE_BIND(34, 5, 2, _DPP_DELEGATE_BTDEFS(2, 1, 5), a0, _a0, a1, a2, a3, _a1, a4); | 
|---|
| 764 |   _DPP_DELEGATE_BIND(35, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 5), _a0, _a1, a0, a1, a2, _a2, a3); | 
|---|
| 765 |   _DPP_DELEGATE_BIND(36, 5, 2, _DPP_DELEGATE_BTDEFS(2, 2, 5), a0, a1, _a0, a2, a3, _a1, a4); | 
|---|
| 766 |   _DPP_DELEGATE_BIND(37, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 5), _a0, a0, _a1, a1, a2, _a2, a3); | 
|---|
| 767 |   _DPP_DELEGATE_BIND(38, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 5), a0, _a0, _a1, a1, a2, _a2, a3); | 
|---|
| 768 |   _DPP_DELEGATE_BIND(39, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 5), _a0, _a1, _a2, a0, a1, _a3, a2); | 
|---|
| 769 |   _DPP_DELEGATE_BIND(40, 5, 2, _DPP_DELEGATE_BTDEFS(2, 3, 5), a0, a1, a2, _a0, a3, _a1, a4); | 
|---|
| 770 |   _DPP_DELEGATE_BIND(41, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 5), _a0, a0, a1, _a1, a2, _a2, a3); | 
|---|
| 771 |   _DPP_DELEGATE_BIND(42, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 5), a0, _a0, a1, _a1, a2, _a2, a3); | 
|---|
| 772 |   _DPP_DELEGATE_BIND(43, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 5), _a0, _a1, a0, _a2, a1, _a3, a2); | 
|---|
| 773 |   _DPP_DELEGATE_BIND(44, 4, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 5), a0, a1, _a0, _a1, a2, _a2, a3); | 
|---|
| 774 |   _DPP_DELEGATE_BIND(45, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 5), _a0, a0, _a1, _a2, a1, _a3, a2); | 
|---|
| 775 |   _DPP_DELEGATE_BIND(46, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 5), a0, _a0, _a1, _a2, a1, _a3, a2); | 
|---|
| 776 |   _DPP_DELEGATE_BIND(47, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 5), _a0, _a1, _a2, _a3, a0, _a4, a1); | 
|---|
| 777 |   _DPP_DELEGATE_BIND(48, 5, 2, _DPP_DELEGATE_BTDEFS(2, 4, 5), a0, a1, a2, a3, _a0, _a1, a4); | 
|---|
| 778 |   _DPP_DELEGATE_BIND(49, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 4, 5), _a0, a0, a1, a2, _a1, _a2, a3); | 
|---|
| 779 |   _DPP_DELEGATE_BIND(50, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 4, 5), a0, _a0, a1, a2, _a1, _a2, a3); | 
|---|
| 780 |   _DPP_DELEGATE_BIND(51, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 4, 5), _a0, _a1, a0, a1, _a2, _a3, a2); | 
|---|
| 781 |   _DPP_DELEGATE_BIND(52, 4, 3, _DPP_DELEGATE_BTDEFS(3, 2, 4, 5), a0, a1, _a0, a2, _a1, _a2, a3); | 
|---|
| 782 |   _DPP_DELEGATE_BIND(53, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 4, 5), _a0, a0, _a1, a1, _a2, _a3, a2); | 
|---|
| 783 |   _DPP_DELEGATE_BIND(54, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 4, 5), a0, _a0, _a1, a1, _a2, _a3, a2); | 
|---|
| 784 |   _DPP_DELEGATE_BIND(55, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 4, 5), _a0, _a1, _a2, a0, _a3, _a4, a1); | 
|---|
| 785 |   _DPP_DELEGATE_BIND(56, 4, 3, _DPP_DELEGATE_BTDEFS(3, 3, 4, 5), a0, a1, a2, _a0, _a1, _a2, a3); | 
|---|
| 786 |   _DPP_DELEGATE_BIND(57, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 4, 5), _a0, a0, a1, _a1, _a2, _a3, a2); | 
|---|
| 787 |   _DPP_DELEGATE_BIND(58, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 4, 5), a0, _a0, a1, _a1, _a2, _a3, a2); | 
|---|
| 788 |   _DPP_DELEGATE_BIND(59, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 4, 5), _a0, _a1, a0, _a2, _a3, _a4, a1); | 
|---|
| 789 |   _DPP_DELEGATE_BIND(60, 3, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 4, 5), a0, a1, _a0, _a1, _a2, _a3, a2); | 
|---|
| 790 |   _DPP_DELEGATE_BIND(61, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 4, 5), _a0, a0, _a1, _a2, _a3, _a4, a1); | 
|---|
| 791 |   _DPP_DELEGATE_BIND(62, 2, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 4, 5), a0, _a0, _a1, _a2, _a3, _a4, a1); | 
|---|
| 792 |   _DPP_DELEGATE_BIND(63, 1, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 4, 5), _a0, _a1, _a2, _a3, _a4, _a5, a0); | 
|---|
| 793 |   _DPP_DELEGATE_BIND(64, 6, 1, _DPP_DELEGATE_BTDEFS(1, 6), a0, a1, a2, a3, a4, a5, _a0); | 
|---|
| 794 |   _DPP_DELEGATE_BIND(65, 5, 2, _DPP_DELEGATE_BTDEFS(2, 0, 6), _a0, a0, a1, a2, a3, a4, _a1); | 
|---|
| 795 |   _DPP_DELEGATE_BIND(66, 5, 2, _DPP_DELEGATE_BTDEFS(2, 1, 6), a0, _a0, a1, a2, a3, a4, _a1); | 
|---|
| 796 |   _DPP_DELEGATE_BIND(67, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 6), _a0, _a1, a0, a1, a2, a3, _a2); | 
|---|
| 797 |   _DPP_DELEGATE_BIND(68, 5, 2, _DPP_DELEGATE_BTDEFS(2, 2, 6), a0, a1, _a0, a2, a3, a4, _a1); | 
|---|
| 798 |   _DPP_DELEGATE_BIND(69, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 6), _a0, a0, _a1, a1, a2, a3, _a2); | 
|---|
| 799 |   _DPP_DELEGATE_BIND(70, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 6), a0, _a0, _a1, a1, a2, a3, _a2); | 
|---|
| 800 |   _DPP_DELEGATE_BIND(71, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 6), _a0, _a1, _a2, a0, a1, a2, _a3); | 
|---|
| 801 |   _DPP_DELEGATE_BIND(72, 5, 2, _DPP_DELEGATE_BTDEFS(2, 3, 6), a0, a1, a2, _a0, a3, a4, _a1); | 
|---|
| 802 |   _DPP_DELEGATE_BIND(73, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 6), _a0, a0, a1, _a1, a2, a3, _a2); | 
|---|
| 803 |   _DPP_DELEGATE_BIND(74, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 6), a0, _a0, a1, _a1, a2, a3, _a2); | 
|---|
| 804 |   _DPP_DELEGATE_BIND(75, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 6), _a0, _a1, a0, _a2, a1, a2, _a3); | 
|---|
| 805 |   _DPP_DELEGATE_BIND(76, 4, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 6), a0, a1, _a0, _a1, a2, a3, _a2); | 
|---|
| 806 |   _DPP_DELEGATE_BIND(77, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 6), _a0, a0, _a1, _a2, a1, a2, _a3); | 
|---|
| 807 |   _DPP_DELEGATE_BIND(78, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 6), a0, _a0, _a1, _a2, a1, a2, _a3); | 
|---|
| 808 |   _DPP_DELEGATE_BIND(79, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 6), _a0, _a1, _a2, _a3, a0, a1, _a4); | 
|---|
| 809 |   _DPP_DELEGATE_BIND(80, 5, 2, _DPP_DELEGATE_BTDEFS(2, 4, 6), a0, a1, a2, a3, _a0, a4, _a1); | 
|---|
| 810 |   _DPP_DELEGATE_BIND(81, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 4, 6), _a0, a0, a1, a2, _a1, a3, _a2); | 
|---|
| 811 |   _DPP_DELEGATE_BIND(82, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 4, 6), a0, _a0, a1, a2, _a1, a3, _a2); | 
|---|
| 812 |   _DPP_DELEGATE_BIND(83, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 4, 6), _a0, _a1, a0, a1, _a2, a2, _a3); | 
|---|
| 813 |   _DPP_DELEGATE_BIND(84, 4, 3, _DPP_DELEGATE_BTDEFS(3, 2, 4, 6), a0, a1, _a0, a2, _a1, a3, _a2); | 
|---|
| 814 |   _DPP_DELEGATE_BIND(85, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 4, 6), _a0, a0, _a1, a1, _a2, a2, _a3); | 
|---|
| 815 |   _DPP_DELEGATE_BIND(86, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 4, 6), a0, _a0, _a1, a1, _a2, a2, _a3); | 
|---|
| 816 |   _DPP_DELEGATE_BIND(87, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 4, 6), _a0, _a1, _a2, a0, _a3, a1, _a4); | 
|---|
| 817 |   _DPP_DELEGATE_BIND(88, 4, 3, _DPP_DELEGATE_BTDEFS(3, 3, 4, 6), a0, a1, a2, _a0, _a1, a3, _a2); | 
|---|
| 818 |   _DPP_DELEGATE_BIND(89, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 4, 6), _a0, a0, a1, _a1, _a2, a2, _a3); | 
|---|
| 819 |   _DPP_DELEGATE_BIND(90, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 4, 6), a0, _a0, a1, _a1, _a2, a2, _a3); | 
|---|
| 820 |   _DPP_DELEGATE_BIND(91, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 4, 6), _a0, _a1, a0, _a2, _a3, a1, _a4); | 
|---|
| 821 |   _DPP_DELEGATE_BIND(92, 3, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 4, 6), a0, a1, _a0, _a1, _a2, a2, _a3); | 
|---|
| 822 |   _DPP_DELEGATE_BIND(93, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 4, 6), _a0, a0, _a1, _a2, _a3, a1, _a4); | 
|---|
| 823 |   _DPP_DELEGATE_BIND(94, 2, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 4, 6), a0, _a0, _a1, _a2, _a3, a1, _a4); | 
|---|
| 824 |   _DPP_DELEGATE_BIND(95, 1, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 4, 6), _a0, _a1, _a2, _a3, _a4, a0, _a5); | 
|---|
| 825 |   _DPP_DELEGATE_BIND(96, 5, 2, _DPP_DELEGATE_BTDEFS(2, 5, 6), a0, a1, a2, a3, a4, _a0, _a1); | 
|---|
| 826 |   _DPP_DELEGATE_BIND(97, 4, 3, _DPP_DELEGATE_BTDEFS(3, 0, 5, 6), _a0, a0, a1, a2, a3, _a1, _a2); | 
|---|
| 827 |   _DPP_DELEGATE_BIND(98, 4, 3, _DPP_DELEGATE_BTDEFS(3, 1, 5, 6), a0, _a0, a1, a2, a3, _a1, _a2); | 
|---|
| 828 |   _DPP_DELEGATE_BIND(99, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 5, 6), _a0, _a1, a0, a1, a2, _a2, _a3); | 
|---|
| 829 |   _DPP_DELEGATE_BIND(100, 4, 3, _DPP_DELEGATE_BTDEFS(3, 2, 5, 6), a0, a1, _a0, a2, a3, _a1, _a2); | 
|---|
| 830 |   _DPP_DELEGATE_BIND(101, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 5, 6), _a0, a0, _a1, a1, a2, _a2, _a3); | 
|---|
| 831 |   _DPP_DELEGATE_BIND(102, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 5, 6), a0, _a0, _a1, a1, a2, _a2, _a3); | 
|---|
| 832 |   _DPP_DELEGATE_BIND(103, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 5, 6), _a0, _a1, _a2, a0, a1, _a3, _a4); | 
|---|
| 833 |   _DPP_DELEGATE_BIND(104, 4, 3, _DPP_DELEGATE_BTDEFS(3, 3, 5, 6), a0, a1, a2, _a0, a3, _a1, _a2); | 
|---|
| 834 |   _DPP_DELEGATE_BIND(105, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 5, 6), _a0, a0, a1, _a1, a2, _a2, _a3); | 
|---|
| 835 |   _DPP_DELEGATE_BIND(106, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 5, 6), a0, _a0, a1, _a1, a2, _a2, _a3); | 
|---|
| 836 |   _DPP_DELEGATE_BIND(107, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 5, 6), _a0, _a1, a0, _a2, a1, _a3, _a4); | 
|---|
| 837 |   _DPP_DELEGATE_BIND(108, 3, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 5, 6), a0, a1, _a0, _a1, a2, _a2, _a3); | 
|---|
| 838 |   _DPP_DELEGATE_BIND(109, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 5, 6), _a0, a0, _a1, _a2, a1, _a3, _a4); | 
|---|
| 839 |   _DPP_DELEGATE_BIND(110, 2, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 5, 6), a0, _a0, _a1, _a2, a1, _a3, _a4); | 
|---|
| 840 |   _DPP_DELEGATE_BIND(111, 1, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 5, 6), _a0, _a1, _a2, _a3, a0, _a4, _a5); | 
|---|
| 841 |   _DPP_DELEGATE_BIND(112, 4, 3, _DPP_DELEGATE_BTDEFS(3, 4, 5, 6), a0, a1, a2, a3, _a0, _a1, _a2); | 
|---|
| 842 |   _DPP_DELEGATE_BIND(113, 3, 4, _DPP_DELEGATE_BTDEFS(4, 0, 4, 5, 6), _a0, a0, a1, a2, _a1, _a2, _a3); | 
|---|
| 843 |   _DPP_DELEGATE_BIND(114, 3, 4, _DPP_DELEGATE_BTDEFS(4, 1, 4, 5, 6), a0, _a0, a1, a2, _a1, _a2, _a3); | 
|---|
| 844 |   _DPP_DELEGATE_BIND(115, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 4, 5, 6), _a0, _a1, a0, a1, _a2, _a3, _a4); | 
|---|
| 845 |   _DPP_DELEGATE_BIND(116, 3, 4, _DPP_DELEGATE_BTDEFS(4, 2, 4, 5, 6), a0, a1, _a0, a2, _a1, _a2, _a3); | 
|---|
| 846 |   _DPP_DELEGATE_BIND(117, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 4, 5, 6), _a0, a0, _a1, a1, _a2, _a3, _a4); | 
|---|
| 847 |   _DPP_DELEGATE_BIND(118, 2, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 4, 5, 6), a0, _a0, _a1, a1, _a2, _a3, _a4); | 
|---|
| 848 |   _DPP_DELEGATE_BIND(119, 1, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 4, 5, 6), _a0, _a1, _a2, a0, _a3, _a4, _a5); | 
|---|
| 849 |   _DPP_DELEGATE_BIND(120, 3, 4, _DPP_DELEGATE_BTDEFS(4, 3, 4, 5, 6), a0, a1, a2, _a0, _a1, _a2, _a3); | 
|---|
| 850 |   _DPP_DELEGATE_BIND(121, 2, 5, _DPP_DELEGATE_BTDEFS(5, 0, 3, 4, 5, 6), _a0, a0, a1, _a1, _a2, _a3, _a4); | 
|---|
| 851 |   _DPP_DELEGATE_BIND(122, 2, 5, _DPP_DELEGATE_BTDEFS(5, 1, 3, 4, 5, 6), a0, _a0, a1, _a1, _a2, _a3, _a4); | 
|---|
| 852 |   _DPP_DELEGATE_BIND(123, 1, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 3, 4, 5, 6), _a0, _a1, a0, _a2, _a3, _a4, _a5); | 
|---|
| 853 |   _DPP_DELEGATE_BIND(124, 2, 5, _DPP_DELEGATE_BTDEFS(5, 2, 3, 4, 5, 6), a0, a1, _a0, _a1, _a2, _a3, _a4); | 
|---|
| 854 |   _DPP_DELEGATE_BIND(125, 1, 6, _DPP_DELEGATE_BTDEFS(6, 0, 2, 3, 4, 5, 6), _a0, a0, _a1, _a2, _a3, _a4, _a5); | 
|---|
| 855 |   _DPP_DELEGATE_BIND(126, 1, 6, _DPP_DELEGATE_BTDEFS(6, 1, 2, 3, 4, 5, 6), a0, _a0, _a1, _a2, _a3, _a4, _a5); | 
|---|
| 856 |   _DPP_DELEGATE_BIND(127, 0, 7, _DPP_DELEGATE_BTDEFS(7, 0, 1, 2, 3, 4, 5, 6), _a0, _a1, _a2, _a3, _a4, _a5, _a6); | 
|---|
| 857 | #endif | 
|---|
| 858 |  | 
|---|
| 859 | #if DPP_DELEGATE_ARGC >= 8 // mkdoc:skip | 
|---|
| 860 |   _DPP_DELEGATE(8) | 
|---|
| 861 |   _DPP_DELEGATE_FUNC(8) | 
|---|
| 862 |   _DPP_DELEGATE_MEMBER(8) | 
|---|
| 863 |   _DPP_DELEGATE_MEMBER_THIS(8) | 
|---|
| 864 |   _DPP_DELEGATE_BIND(1, 7, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0, a0, a1, a2, a3, a4, a5, a6); | 
|---|
| 865 |   _DPP_DELEGATE_BIND(2, 7, 1, _DPP_DELEGATE_BTDEFS(1, 1), a0, _a0, a1, a2, a3, a4, a5, a6); | 
|---|
| 866 |   _DPP_DELEGATE_BIND(3, 6, 2, _DPP_DELEGATE_BTDEFS(2, 0, 1), _a0, _a1, a0, a1, a2, a3, a4, a5); | 
|---|
| 867 |   _DPP_DELEGATE_BIND(4, 7, 1, _DPP_DELEGATE_BTDEFS(1, 2), a0, a1, _a0, a2, a3, a4, a5, a6); | 
|---|
| 868 |   _DPP_DELEGATE_BIND(5, 6, 2, _DPP_DELEGATE_BTDEFS(2, 0, 2), _a0, a0, _a1, a1, a2, a3, a4, a5); | 
|---|
| 869 |   _DPP_DELEGATE_BIND(6, 6, 2, _DPP_DELEGATE_BTDEFS(2, 1, 2), a0, _a0, _a1, a1, a2, a3, a4, a5); | 
|---|
| 870 |   _DPP_DELEGATE_BIND(7, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 2), _a0, _a1, _a2, a0, a1, a2, a3, a4); | 
|---|
| 871 |   _DPP_DELEGATE_BIND(8, 7, 1, _DPP_DELEGATE_BTDEFS(1, 3), a0, a1, a2, _a0, a3, a4, a5, a6); | 
|---|
| 872 |   _DPP_DELEGATE_BIND(9, 6, 2, _DPP_DELEGATE_BTDEFS(2, 0, 3), _a0, a0, a1, _a1, a2, a3, a4, a5); | 
|---|
| 873 |   _DPP_DELEGATE_BIND(10, 6, 2, _DPP_DELEGATE_BTDEFS(2, 1, 3), a0, _a0, a1, _a1, a2, a3, a4, a5); | 
|---|
| 874 |   _DPP_DELEGATE_BIND(11, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 3), _a0, _a1, a0, _a2, a1, a2, a3, a4); | 
|---|
| 875 |   _DPP_DELEGATE_BIND(12, 6, 2, _DPP_DELEGATE_BTDEFS(2, 2, 3), a0, a1, _a0, _a1, a2, a3, a4, a5); | 
|---|
| 876 |   _DPP_DELEGATE_BIND(13, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 3), _a0, a0, _a1, _a2, a1, a2, a3, a4); | 
|---|
| 877 |   _DPP_DELEGATE_BIND(14, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 3), a0, _a0, _a1, _a2, a1, a2, a3, a4); | 
|---|
| 878 |   _DPP_DELEGATE_BIND(15, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 3), _a0, _a1, _a2, _a3, a0, a1, a2, a3); | 
|---|
| 879 |   _DPP_DELEGATE_BIND(16, 7, 1, _DPP_DELEGATE_BTDEFS(1, 4), a0, a1, a2, a3, _a0, a4, a5, a6); | 
|---|
| 880 |   _DPP_DELEGATE_BIND(17, 6, 2, _DPP_DELEGATE_BTDEFS(2, 0, 4), _a0, a0, a1, a2, _a1, a3, a4, a5); | 
|---|
| 881 |   _DPP_DELEGATE_BIND(18, 6, 2, _DPP_DELEGATE_BTDEFS(2, 1, 4), a0, _a0, a1, a2, _a1, a3, a4, a5); | 
|---|
| 882 |   _DPP_DELEGATE_BIND(19, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 4), _a0, _a1, a0, a1, _a2, a2, a3, a4); | 
|---|
| 883 |   _DPP_DELEGATE_BIND(20, 6, 2, _DPP_DELEGATE_BTDEFS(2, 2, 4), a0, a1, _a0, a2, _a1, a3, a4, a5); | 
|---|
| 884 |   _DPP_DELEGATE_BIND(21, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 4), _a0, a0, _a1, a1, _a2, a2, a3, a4); | 
|---|
| 885 |   _DPP_DELEGATE_BIND(22, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 4), a0, _a0, _a1, a1, _a2, a2, a3, a4); | 
|---|
| 886 |   _DPP_DELEGATE_BIND(23, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 4), _a0, _a1, _a2, a0, _a3, a1, a2, a3); | 
|---|
| 887 |   _DPP_DELEGATE_BIND(24, 6, 2, _DPP_DELEGATE_BTDEFS(2, 3, 4), a0, a1, a2, _a0, _a1, a3, a4, a5); | 
|---|
| 888 |   _DPP_DELEGATE_BIND(25, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 4), _a0, a0, a1, _a1, _a2, a2, a3, a4); | 
|---|
| 889 |   _DPP_DELEGATE_BIND(26, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 4), a0, _a0, a1, _a1, _a2, a2, a3, a4); | 
|---|
| 890 |   _DPP_DELEGATE_BIND(27, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 4), _a0, _a1, a0, _a2, _a3, a1, a2, a3); | 
|---|
| 891 |   _DPP_DELEGATE_BIND(28, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 4), a0, a1, _a0, _a1, _a2, a2, a3, a4); | 
|---|
| 892 |   _DPP_DELEGATE_BIND(29, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 4), _a0, a0, _a1, _a2, _a3, a1, a2, a3); | 
|---|
| 893 |   _DPP_DELEGATE_BIND(30, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 4), a0, _a0, _a1, _a2, _a3, a1, a2, a3); | 
|---|
| 894 |   _DPP_DELEGATE_BIND(31, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 4), _a0, _a1, _a2, _a3, _a4, a0, a1, a2); | 
|---|
| 895 |   _DPP_DELEGATE_BIND(32, 7, 1, _DPP_DELEGATE_BTDEFS(1, 5), a0, a1, a2, a3, a4, _a0, a5, a6); | 
|---|
| 896 |   _DPP_DELEGATE_BIND(33, 6, 2, _DPP_DELEGATE_BTDEFS(2, 0, 5), _a0, a0, a1, a2, a3, _a1, a4, a5); | 
|---|
| 897 |   _DPP_DELEGATE_BIND(34, 6, 2, _DPP_DELEGATE_BTDEFS(2, 1, 5), a0, _a0, a1, a2, a3, _a1, a4, a5); | 
|---|
| 898 |   _DPP_DELEGATE_BIND(35, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 5), _a0, _a1, a0, a1, a2, _a2, a3, a4); | 
|---|
| 899 |   _DPP_DELEGATE_BIND(36, 6, 2, _DPP_DELEGATE_BTDEFS(2, 2, 5), a0, a1, _a0, a2, a3, _a1, a4, a5); | 
|---|
| 900 |   _DPP_DELEGATE_BIND(37, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 5), _a0, a0, _a1, a1, a2, _a2, a3, a4); | 
|---|
| 901 |   _DPP_DELEGATE_BIND(38, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 5), a0, _a0, _a1, a1, a2, _a2, a3, a4); | 
|---|
| 902 |   _DPP_DELEGATE_BIND(39, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 5), _a0, _a1, _a2, a0, a1, _a3, a2, a3); | 
|---|
| 903 |   _DPP_DELEGATE_BIND(40, 6, 2, _DPP_DELEGATE_BTDEFS(2, 3, 5), a0, a1, a2, _a0, a3, _a1, a4, a5); | 
|---|
| 904 |   _DPP_DELEGATE_BIND(41, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 5), _a0, a0, a1, _a1, a2, _a2, a3, a4); | 
|---|
| 905 |   _DPP_DELEGATE_BIND(42, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 5), a0, _a0, a1, _a1, a2, _a2, a3, a4); | 
|---|
| 906 |   _DPP_DELEGATE_BIND(43, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 5), _a0, _a1, a0, _a2, a1, _a3, a2, a3); | 
|---|
| 907 |   _DPP_DELEGATE_BIND(44, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 5), a0, a1, _a0, _a1, a2, _a2, a3, a4); | 
|---|
| 908 |   _DPP_DELEGATE_BIND(45, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 5), _a0, a0, _a1, _a2, a1, _a3, a2, a3); | 
|---|
| 909 |   _DPP_DELEGATE_BIND(46, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 5), a0, _a0, _a1, _a2, a1, _a3, a2, a3); | 
|---|
| 910 |   _DPP_DELEGATE_BIND(47, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 5), _a0, _a1, _a2, _a3, a0, _a4, a1, a2); | 
|---|
| 911 |   _DPP_DELEGATE_BIND(48, 6, 2, _DPP_DELEGATE_BTDEFS(2, 4, 5), a0, a1, a2, a3, _a0, _a1, a4, a5); | 
|---|
| 912 |   _DPP_DELEGATE_BIND(49, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 4, 5), _a0, a0, a1, a2, _a1, _a2, a3, a4); | 
|---|
| 913 |   _DPP_DELEGATE_BIND(50, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 4, 5), a0, _a0, a1, a2, _a1, _a2, a3, a4); | 
|---|
| 914 |   _DPP_DELEGATE_BIND(51, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 4, 5), _a0, _a1, a0, a1, _a2, _a3, a2, a3); | 
|---|
| 915 |   _DPP_DELEGATE_BIND(52, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 4, 5), a0, a1, _a0, a2, _a1, _a2, a3, a4); | 
|---|
| 916 |   _DPP_DELEGATE_BIND(53, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 4, 5), _a0, a0, _a1, a1, _a2, _a3, a2, a3); | 
|---|
| 917 |   _DPP_DELEGATE_BIND(54, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 4, 5), a0, _a0, _a1, a1, _a2, _a3, a2, a3); | 
|---|
| 918 |   _DPP_DELEGATE_BIND(55, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 4, 5), _a0, _a1, _a2, a0, _a3, _a4, a1, a2); | 
|---|
| 919 |   _DPP_DELEGATE_BIND(56, 5, 3, _DPP_DELEGATE_BTDEFS(3, 3, 4, 5), a0, a1, a2, _a0, _a1, _a2, a3, a4); | 
|---|
| 920 |   _DPP_DELEGATE_BIND(57, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 4, 5), _a0, a0, a1, _a1, _a2, _a3, a2, a3); | 
|---|
| 921 |   _DPP_DELEGATE_BIND(58, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 4, 5), a0, _a0, a1, _a1, _a2, _a3, a2, a3); | 
|---|
| 922 |   _DPP_DELEGATE_BIND(59, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 4, 5), _a0, _a1, a0, _a2, _a3, _a4, a1, a2); | 
|---|
| 923 |   _DPP_DELEGATE_BIND(60, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 4, 5), a0, a1, _a0, _a1, _a2, _a3, a2, a3); | 
|---|
| 924 |   _DPP_DELEGATE_BIND(61, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 4, 5), _a0, a0, _a1, _a2, _a3, _a4, a1, a2); | 
|---|
| 925 |   _DPP_DELEGATE_BIND(62, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 4, 5), a0, _a0, _a1, _a2, _a3, _a4, a1, a2); | 
|---|
| 926 |   _DPP_DELEGATE_BIND(63, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 4, 5), _a0, _a1, _a2, _a3, _a4, _a5, a0, a1); | 
|---|
| 927 |   _DPP_DELEGATE_BIND(64, 7, 1, _DPP_DELEGATE_BTDEFS(1, 6), a0, a1, a2, a3, a4, a5, _a0, a6); | 
|---|
| 928 |   _DPP_DELEGATE_BIND(65, 6, 2, _DPP_DELEGATE_BTDEFS(2, 0, 6), _a0, a0, a1, a2, a3, a4, _a1, a5); | 
|---|
| 929 |   _DPP_DELEGATE_BIND(66, 6, 2, _DPP_DELEGATE_BTDEFS(2, 1, 6), a0, _a0, a1, a2, a3, a4, _a1, a5); | 
|---|
| 930 |   _DPP_DELEGATE_BIND(67, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 6), _a0, _a1, a0, a1, a2, a3, _a2, a4); | 
|---|
| 931 |   _DPP_DELEGATE_BIND(68, 6, 2, _DPP_DELEGATE_BTDEFS(2, 2, 6), a0, a1, _a0, a2, a3, a4, _a1, a5); | 
|---|
| 932 |   _DPP_DELEGATE_BIND(69, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 6), _a0, a0, _a1, a1, a2, a3, _a2, a4); | 
|---|
| 933 |   _DPP_DELEGATE_BIND(70, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 6), a0, _a0, _a1, a1, a2, a3, _a2, a4); | 
|---|
| 934 |   _DPP_DELEGATE_BIND(71, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 6), _a0, _a1, _a2, a0, a1, a2, _a3, a3); | 
|---|
| 935 |   _DPP_DELEGATE_BIND(72, 6, 2, _DPP_DELEGATE_BTDEFS(2, 3, 6), a0, a1, a2, _a0, a3, a4, _a1, a5); | 
|---|
| 936 |   _DPP_DELEGATE_BIND(73, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 6), _a0, a0, a1, _a1, a2, a3, _a2, a4); | 
|---|
| 937 |   _DPP_DELEGATE_BIND(74, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 6), a0, _a0, a1, _a1, a2, a3, _a2, a4); | 
|---|
| 938 |   _DPP_DELEGATE_BIND(75, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 6), _a0, _a1, a0, _a2, a1, a2, _a3, a3); | 
|---|
| 939 |   _DPP_DELEGATE_BIND(76, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 6), a0, a1, _a0, _a1, a2, a3, _a2, a4); | 
|---|
| 940 |   _DPP_DELEGATE_BIND(77, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 6), _a0, a0, _a1, _a2, a1, a2, _a3, a3); | 
|---|
| 941 |   _DPP_DELEGATE_BIND(78, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 6), a0, _a0, _a1, _a2, a1, a2, _a3, a3); | 
|---|
| 942 |   _DPP_DELEGATE_BIND(79, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 6), _a0, _a1, _a2, _a3, a0, a1, _a4, a2); | 
|---|
| 943 |   _DPP_DELEGATE_BIND(80, 6, 2, _DPP_DELEGATE_BTDEFS(2, 4, 6), a0, a1, a2, a3, _a0, a4, _a1, a5); | 
|---|
| 944 |   _DPP_DELEGATE_BIND(81, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 4, 6), _a0, a0, a1, a2, _a1, a3, _a2, a4); | 
|---|
| 945 |   _DPP_DELEGATE_BIND(82, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 4, 6), a0, _a0, a1, a2, _a1, a3, _a2, a4); | 
|---|
| 946 |   _DPP_DELEGATE_BIND(83, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 4, 6), _a0, _a1, a0, a1, _a2, a2, _a3, a3); | 
|---|
| 947 |   _DPP_DELEGATE_BIND(84, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 4, 6), a0, a1, _a0, a2, _a1, a3, _a2, a4); | 
|---|
| 948 |   _DPP_DELEGATE_BIND(85, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 4, 6), _a0, a0, _a1, a1, _a2, a2, _a3, a3); | 
|---|
| 949 |   _DPP_DELEGATE_BIND(86, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 4, 6), a0, _a0, _a1, a1, _a2, a2, _a3, a3); | 
|---|
| 950 |   _DPP_DELEGATE_BIND(87, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 4, 6), _a0, _a1, _a2, a0, _a3, a1, _a4, a2); | 
|---|
| 951 |   _DPP_DELEGATE_BIND(88, 5, 3, _DPP_DELEGATE_BTDEFS(3, 3, 4, 6), a0, a1, a2, _a0, _a1, a3, _a2, a4); | 
|---|
| 952 |   _DPP_DELEGATE_BIND(89, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 4, 6), _a0, a0, a1, _a1, _a2, a2, _a3, a3); | 
|---|
| 953 |   _DPP_DELEGATE_BIND(90, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 4, 6), a0, _a0, a1, _a1, _a2, a2, _a3, a3); | 
|---|
| 954 |   _DPP_DELEGATE_BIND(91, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 4, 6), _a0, _a1, a0, _a2, _a3, a1, _a4, a2); | 
|---|
| 955 |   _DPP_DELEGATE_BIND(92, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 4, 6), a0, a1, _a0, _a1, _a2, a2, _a3, a3); | 
|---|
| 956 |   _DPP_DELEGATE_BIND(93, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 4, 6), _a0, a0, _a1, _a2, _a3, a1, _a4, a2); | 
|---|
| 957 |   _DPP_DELEGATE_BIND(94, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 4, 6), a0, _a0, _a1, _a2, _a3, a1, _a4, a2); | 
|---|
| 958 |   _DPP_DELEGATE_BIND(95, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 4, 6), _a0, _a1, _a2, _a3, _a4, a0, _a5, a1); | 
|---|
| 959 |   _DPP_DELEGATE_BIND(96, 6, 2, _DPP_DELEGATE_BTDEFS(2, 5, 6), a0, a1, a2, a3, a4, _a0, _a1, a5); | 
|---|
| 960 |   _DPP_DELEGATE_BIND(97, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 5, 6), _a0, a0, a1, a2, a3, _a1, _a2, a4); | 
|---|
| 961 |   _DPP_DELEGATE_BIND(98, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 5, 6), a0, _a0, a1, a2, a3, _a1, _a2, a4); | 
|---|
| 962 |   _DPP_DELEGATE_BIND(99, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 5, 6), _a0, _a1, a0, a1, a2, _a2, _a3, a3); | 
|---|
| 963 |   _DPP_DELEGATE_BIND(100, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 5, 6), a0, a1, _a0, a2, a3, _a1, _a2, a4); | 
|---|
| 964 |   _DPP_DELEGATE_BIND(101, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 5, 6), _a0, a0, _a1, a1, a2, _a2, _a3, a3); | 
|---|
| 965 |   _DPP_DELEGATE_BIND(102, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 5, 6), a0, _a0, _a1, a1, a2, _a2, _a3, a3); | 
|---|
| 966 |   _DPP_DELEGATE_BIND(103, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 5, 6), _a0, _a1, _a2, a0, a1, _a3, _a4, a2); | 
|---|
| 967 |   _DPP_DELEGATE_BIND(104, 5, 3, _DPP_DELEGATE_BTDEFS(3, 3, 5, 6), a0, a1, a2, _a0, a3, _a1, _a2, a4); | 
|---|
| 968 |   _DPP_DELEGATE_BIND(105, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 5, 6), _a0, a0, a1, _a1, a2, _a2, _a3, a3); | 
|---|
| 969 |   _DPP_DELEGATE_BIND(106, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 5, 6), a0, _a0, a1, _a1, a2, _a2, _a3, a3); | 
|---|
| 970 |   _DPP_DELEGATE_BIND(107, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 5, 6), _a0, _a1, a0, _a2, a1, _a3, _a4, a2); | 
|---|
| 971 |   _DPP_DELEGATE_BIND(108, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 5, 6), a0, a1, _a0, _a1, a2, _a2, _a3, a3); | 
|---|
| 972 |   _DPP_DELEGATE_BIND(109, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 5, 6), _a0, a0, _a1, _a2, a1, _a3, _a4, a2); | 
|---|
| 973 |   _DPP_DELEGATE_BIND(110, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 5, 6), a0, _a0, _a1, _a2, a1, _a3, _a4, a2); | 
|---|
| 974 |   _DPP_DELEGATE_BIND(111, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 5, 6), _a0, _a1, _a2, _a3, a0, _a4, _a5, a1); | 
|---|
| 975 |   _DPP_DELEGATE_BIND(112, 5, 3, _DPP_DELEGATE_BTDEFS(3, 4, 5, 6), a0, a1, a2, a3, _a0, _a1, _a2, a4); | 
|---|
| 976 |   _DPP_DELEGATE_BIND(113, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 4, 5, 6), _a0, a0, a1, a2, _a1, _a2, _a3, a3); | 
|---|
| 977 |   _DPP_DELEGATE_BIND(114, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 4, 5, 6), a0, _a0, a1, a2, _a1, _a2, _a3, a3); | 
|---|
| 978 |   _DPP_DELEGATE_BIND(115, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 4, 5, 6), _a0, _a1, a0, a1, _a2, _a3, _a4, a2); | 
|---|
| 979 |   _DPP_DELEGATE_BIND(116, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 4, 5, 6), a0, a1, _a0, a2, _a1, _a2, _a3, a3); | 
|---|
| 980 |   _DPP_DELEGATE_BIND(117, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 4, 5, 6), _a0, a0, _a1, a1, _a2, _a3, _a4, a2); | 
|---|
| 981 |   _DPP_DELEGATE_BIND(118, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 4, 5, 6), a0, _a0, _a1, a1, _a2, _a3, _a4, a2); | 
|---|
| 982 |   _DPP_DELEGATE_BIND(119, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 4, 5, 6), _a0, _a1, _a2, a0, _a3, _a4, _a5, a1); | 
|---|
| 983 |   _DPP_DELEGATE_BIND(120, 4, 4, _DPP_DELEGATE_BTDEFS(4, 3, 4, 5, 6), a0, a1, a2, _a0, _a1, _a2, _a3, a3); | 
|---|
| 984 |   _DPP_DELEGATE_BIND(121, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 3, 4, 5, 6), _a0, a0, a1, _a1, _a2, _a3, _a4, a2); | 
|---|
| 985 |   _DPP_DELEGATE_BIND(122, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 3, 4, 5, 6), a0, _a0, a1, _a1, _a2, _a3, _a4, a2); | 
|---|
| 986 |   _DPP_DELEGATE_BIND(123, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 3, 4, 5, 6), _a0, _a1, a0, _a2, _a3, _a4, _a5, a1); | 
|---|
| 987 |   _DPP_DELEGATE_BIND(124, 3, 5, _DPP_DELEGATE_BTDEFS(5, 2, 3, 4, 5, 6), a0, a1, _a0, _a1, _a2, _a3, _a4, a2); | 
|---|
| 988 |   _DPP_DELEGATE_BIND(125, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 2, 3, 4, 5, 6), _a0, a0, _a1, _a2, _a3, _a4, _a5, a1); | 
|---|
| 989 |   _DPP_DELEGATE_BIND(126, 2, 6, _DPP_DELEGATE_BTDEFS(6, 1, 2, 3, 4, 5, 6), a0, _a0, _a1, _a2, _a3, _a4, _a5, a1); | 
|---|
| 990 |   _DPP_DELEGATE_BIND(127, 1, 7, _DPP_DELEGATE_BTDEFS(7, 0, 1, 2, 3, 4, 5, 6), _a0, _a1, _a2, _a3, _a4, _a5, _a6, a0); | 
|---|
| 991 |   _DPP_DELEGATE_BIND(128, 7, 1, _DPP_DELEGATE_BTDEFS(1, 7), a0, a1, a2, a3, a4, a5, a6, _a0); | 
|---|
| 992 |   _DPP_DELEGATE_BIND(129, 6, 2, _DPP_DELEGATE_BTDEFS(2, 0, 7), _a0, a0, a1, a2, a3, a4, a5, _a1); | 
|---|
| 993 |   _DPP_DELEGATE_BIND(130, 6, 2, _DPP_DELEGATE_BTDEFS(2, 1, 7), a0, _a0, a1, a2, a3, a4, a5, _a1); | 
|---|
| 994 |   _DPP_DELEGATE_BIND(131, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 1, 7), _a0, _a1, a0, a1, a2, a3, a4, _a2); | 
|---|
| 995 |   _DPP_DELEGATE_BIND(132, 6, 2, _DPP_DELEGATE_BTDEFS(2, 2, 7), a0, a1, _a0, a2, a3, a4, a5, _a1); | 
|---|
| 996 |   _DPP_DELEGATE_BIND(133, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 2, 7), _a0, a0, _a1, a1, a2, a3, a4, _a2); | 
|---|
| 997 |   _DPP_DELEGATE_BIND(134, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 2, 7), a0, _a0, _a1, a1, a2, a3, a4, _a2); | 
|---|
| 998 |   _DPP_DELEGATE_BIND(135, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 2, 7), _a0, _a1, _a2, a0, a1, a2, a3, _a3); | 
|---|
| 999 |   _DPP_DELEGATE_BIND(136, 6, 2, _DPP_DELEGATE_BTDEFS(2, 3, 7), a0, a1, a2, _a0, a3, a4, a5, _a1); | 
|---|
| 1000 |   _DPP_DELEGATE_BIND(137, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 3, 7), _a0, a0, a1, _a1, a2, a3, a4, _a2); | 
|---|
| 1001 |   _DPP_DELEGATE_BIND(138, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 3, 7), a0, _a0, a1, _a1, a2, a3, a4, _a2); | 
|---|
| 1002 |   _DPP_DELEGATE_BIND(139, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 3, 7), _a0, _a1, a0, _a2, a1, a2, a3, _a3); | 
|---|
| 1003 |   _DPP_DELEGATE_BIND(140, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 3, 7), a0, a1, _a0, _a1, a2, a3, a4, _a2); | 
|---|
| 1004 |   _DPP_DELEGATE_BIND(141, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 3, 7), _a0, a0, _a1, _a2, a1, a2, a3, _a3); | 
|---|
| 1005 |   _DPP_DELEGATE_BIND(142, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 3, 7), a0, _a0, _a1, _a2, a1, a2, a3, _a3); | 
|---|
| 1006 |   _DPP_DELEGATE_BIND(143, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 3, 7), _a0, _a1, _a2, _a3, a0, a1, a2, _a4); | 
|---|
| 1007 |   _DPP_DELEGATE_BIND(144, 6, 2, _DPP_DELEGATE_BTDEFS(2, 4, 7), a0, a1, a2, a3, _a0, a4, a5, _a1); | 
|---|
| 1008 |   _DPP_DELEGATE_BIND(145, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 4, 7), _a0, a0, a1, a2, _a1, a3, a4, _a2); | 
|---|
| 1009 |   _DPP_DELEGATE_BIND(146, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 4, 7), a0, _a0, a1, a2, _a1, a3, a4, _a2); | 
|---|
| 1010 |   _DPP_DELEGATE_BIND(147, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 4, 7), _a0, _a1, a0, a1, _a2, a2, a3, _a3); | 
|---|
| 1011 |   _DPP_DELEGATE_BIND(148, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 4, 7), a0, a1, _a0, a2, _a1, a3, a4, _a2); | 
|---|
| 1012 |   _DPP_DELEGATE_BIND(149, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 4, 7), _a0, a0, _a1, a1, _a2, a2, a3, _a3); | 
|---|
| 1013 |   _DPP_DELEGATE_BIND(150, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 4, 7), a0, _a0, _a1, a1, _a2, a2, a3, _a3); | 
|---|
| 1014 |   _DPP_DELEGATE_BIND(151, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 4, 7), _a0, _a1, _a2, a0, _a3, a1, a2, _a4); | 
|---|
| 1015 |   _DPP_DELEGATE_BIND(152, 5, 3, _DPP_DELEGATE_BTDEFS(3, 3, 4, 7), a0, a1, a2, _a0, _a1, a3, a4, _a2); | 
|---|
| 1016 |   _DPP_DELEGATE_BIND(153, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 4, 7), _a0, a0, a1, _a1, _a2, a2, a3, _a3); | 
|---|
| 1017 |   _DPP_DELEGATE_BIND(154, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 4, 7), a0, _a0, a1, _a1, _a2, a2, a3, _a3); | 
|---|
| 1018 |   _DPP_DELEGATE_BIND(155, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 4, 7), _a0, _a1, a0, _a2, _a3, a1, a2, _a4); | 
|---|
| 1019 |   _DPP_DELEGATE_BIND(156, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 4, 7), a0, a1, _a0, _a1, _a2, a2, a3, _a3); | 
|---|
| 1020 |   _DPP_DELEGATE_BIND(157, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 4, 7), _a0, a0, _a1, _a2, _a3, a1, a2, _a4); | 
|---|
| 1021 |   _DPP_DELEGATE_BIND(158, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 4, 7), a0, _a0, _a1, _a2, _a3, a1, a2, _a4); | 
|---|
| 1022 |   _DPP_DELEGATE_BIND(159, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 4, 7), _a0, _a1, _a2, _a3, _a4, a0, a1, _a5); | 
|---|
| 1023 |   _DPP_DELEGATE_BIND(160, 6, 2, _DPP_DELEGATE_BTDEFS(2, 5, 7), a0, a1, a2, a3, a4, _a0, a5, _a1); | 
|---|
| 1024 |   _DPP_DELEGATE_BIND(161, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 5, 7), _a0, a0, a1, a2, a3, _a1, a4, _a2); | 
|---|
| 1025 |   _DPP_DELEGATE_BIND(162, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 5, 7), a0, _a0, a1, a2, a3, _a1, a4, _a2); | 
|---|
| 1026 |   _DPP_DELEGATE_BIND(163, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 5, 7), _a0, _a1, a0, a1, a2, _a2, a3, _a3); | 
|---|
| 1027 |   _DPP_DELEGATE_BIND(164, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 5, 7), a0, a1, _a0, a2, a3, _a1, a4, _a2); | 
|---|
| 1028 |   _DPP_DELEGATE_BIND(165, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 5, 7), _a0, a0, _a1, a1, a2, _a2, a3, _a3); | 
|---|
| 1029 |   _DPP_DELEGATE_BIND(166, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 5, 7), a0, _a0, _a1, a1, a2, _a2, a3, _a3); | 
|---|
| 1030 |   _DPP_DELEGATE_BIND(167, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 5, 7), _a0, _a1, _a2, a0, a1, _a3, a2, _a4); | 
|---|
| 1031 |   _DPP_DELEGATE_BIND(168, 5, 3, _DPP_DELEGATE_BTDEFS(3, 3, 5, 7), a0, a1, a2, _a0, a3, _a1, a4, _a2); | 
|---|
| 1032 |   _DPP_DELEGATE_BIND(169, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 5, 7), _a0, a0, a1, _a1, a2, _a2, a3, _a3); | 
|---|
| 1033 |   _DPP_DELEGATE_BIND(170, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 5, 7), a0, _a0, a1, _a1, a2, _a2, a3, _a3); | 
|---|
| 1034 |   _DPP_DELEGATE_BIND(171, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 5, 7), _a0, _a1, a0, _a2, a1, _a3, a2, _a4); | 
|---|
| 1035 |   _DPP_DELEGATE_BIND(172, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 5, 7), a0, a1, _a0, _a1, a2, _a2, a3, _a3); | 
|---|
| 1036 |   _DPP_DELEGATE_BIND(173, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 5, 7), _a0, a0, _a1, _a2, a1, _a3, a2, _a4); | 
|---|
| 1037 |   _DPP_DELEGATE_BIND(174, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 5, 7), a0, _a0, _a1, _a2, a1, _a3, a2, _a4); | 
|---|
| 1038 |   _DPP_DELEGATE_BIND(175, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 5, 7), _a0, _a1, _a2, _a3, a0, _a4, a1, _a5); | 
|---|
| 1039 |   _DPP_DELEGATE_BIND(176, 5, 3, _DPP_DELEGATE_BTDEFS(3, 4, 5, 7), a0, a1, a2, a3, _a0, _a1, a4, _a2); | 
|---|
| 1040 |   _DPP_DELEGATE_BIND(177, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 4, 5, 7), _a0, a0, a1, a2, _a1, _a2, a3, _a3); | 
|---|
| 1041 |   _DPP_DELEGATE_BIND(178, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 4, 5, 7), a0, _a0, a1, a2, _a1, _a2, a3, _a3); | 
|---|
| 1042 |   _DPP_DELEGATE_BIND(179, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 4, 5, 7), _a0, _a1, a0, a1, _a2, _a3, a2, _a4); | 
|---|
| 1043 |   _DPP_DELEGATE_BIND(180, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 4, 5, 7), a0, a1, _a0, a2, _a1, _a2, a3, _a3); | 
|---|
| 1044 |   _DPP_DELEGATE_BIND(181, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 4, 5, 7), _a0, a0, _a1, a1, _a2, _a3, a2, _a4); | 
|---|
| 1045 |   _DPP_DELEGATE_BIND(182, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 4, 5, 7), a0, _a0, _a1, a1, _a2, _a3, a2, _a4); | 
|---|
| 1046 |   _DPP_DELEGATE_BIND(183, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 4, 5, 7), _a0, _a1, _a2, a0, _a3, _a4, a1, _a5); | 
|---|
| 1047 |   _DPP_DELEGATE_BIND(184, 4, 4, _DPP_DELEGATE_BTDEFS(4, 3, 4, 5, 7), a0, a1, a2, _a0, _a1, _a2, a3, _a3); | 
|---|
| 1048 |   _DPP_DELEGATE_BIND(185, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 3, 4, 5, 7), _a0, a0, a1, _a1, _a2, _a3, a2, _a4); | 
|---|
| 1049 |   _DPP_DELEGATE_BIND(186, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 3, 4, 5, 7), a0, _a0, a1, _a1, _a2, _a3, a2, _a4); | 
|---|
| 1050 |   _DPP_DELEGATE_BIND(187, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 3, 4, 5, 7), _a0, _a1, a0, _a2, _a3, _a4, a1, _a5); | 
|---|
| 1051 |   _DPP_DELEGATE_BIND(188, 3, 5, _DPP_DELEGATE_BTDEFS(5, 2, 3, 4, 5, 7), a0, a1, _a0, _a1, _a2, _a3, a2, _a4); | 
|---|
| 1052 |   _DPP_DELEGATE_BIND(189, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 2, 3, 4, 5, 7), _a0, a0, _a1, _a2, _a3, _a4, a1, _a5); | 
|---|
| 1053 |   _DPP_DELEGATE_BIND(190, 2, 6, _DPP_DELEGATE_BTDEFS(6, 1, 2, 3, 4, 5, 7), a0, _a0, _a1, _a2, _a3, _a4, a1, _a5); | 
|---|
| 1054 |   _DPP_DELEGATE_BIND(191, 1, 7, _DPP_DELEGATE_BTDEFS(7, 0, 1, 2, 3, 4, 5, 7), _a0, _a1, _a2, _a3, _a4, _a5, a0, _a6); | 
|---|
| 1055 |   _DPP_DELEGATE_BIND(192, 6, 2, _DPP_DELEGATE_BTDEFS(2, 6, 7), a0, a1, a2, a3, a4, a5, _a0, _a1); | 
|---|
| 1056 |   _DPP_DELEGATE_BIND(193, 5, 3, _DPP_DELEGATE_BTDEFS(3, 0, 6, 7), _a0, a0, a1, a2, a3, a4, _a1, _a2); | 
|---|
| 1057 |   _DPP_DELEGATE_BIND(194, 5, 3, _DPP_DELEGATE_BTDEFS(3, 1, 6, 7), a0, _a0, a1, a2, a3, a4, _a1, _a2); | 
|---|
| 1058 |   _DPP_DELEGATE_BIND(195, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 1, 6, 7), _a0, _a1, a0, a1, a2, a3, _a2, _a3); | 
|---|
| 1059 |   _DPP_DELEGATE_BIND(196, 5, 3, _DPP_DELEGATE_BTDEFS(3, 2, 6, 7), a0, a1, _a0, a2, a3, a4, _a1, _a2); | 
|---|
| 1060 |   _DPP_DELEGATE_BIND(197, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 2, 6, 7), _a0, a0, _a1, a1, a2, a3, _a2, _a3); | 
|---|
| 1061 |   _DPP_DELEGATE_BIND(198, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 2, 6, 7), a0, _a0, _a1, a1, a2, a3, _a2, _a3); | 
|---|
| 1062 |   _DPP_DELEGATE_BIND(199, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 2, 6, 7), _a0, _a1, _a2, a0, a1, a2, _a3, _a4); | 
|---|
| 1063 |   _DPP_DELEGATE_BIND(200, 5, 3, _DPP_DELEGATE_BTDEFS(3, 3, 6, 7), a0, a1, a2, _a0, a3, a4, _a1, _a2); | 
|---|
| 1064 |   _DPP_DELEGATE_BIND(201, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 3, 6, 7), _a0, a0, a1, _a1, a2, a3, _a2, _a3); | 
|---|
| 1065 |   _DPP_DELEGATE_BIND(202, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 3, 6, 7), a0, _a0, a1, _a1, a2, a3, _a2, _a3); | 
|---|
| 1066 |   _DPP_DELEGATE_BIND(203, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 3, 6, 7), _a0, _a1, a0, _a2, a1, a2, _a3, _a4); | 
|---|
| 1067 |   _DPP_DELEGATE_BIND(204, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 3, 6, 7), a0, a1, _a0, _a1, a2, a3, _a2, _a3); | 
|---|
| 1068 |   _DPP_DELEGATE_BIND(205, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 3, 6, 7), _a0, a0, _a1, _a2, a1, a2, _a3, _a4); | 
|---|
| 1069 |   _DPP_DELEGATE_BIND(206, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 3, 6, 7), a0, _a0, _a1, _a2, a1, a2, _a3, _a4); | 
|---|
| 1070 |   _DPP_DELEGATE_BIND(207, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 3, 6, 7), _a0, _a1, _a2, _a3, a0, a1, _a4, _a5); | 
|---|
| 1071 |   _DPP_DELEGATE_BIND(208, 5, 3, _DPP_DELEGATE_BTDEFS(3, 4, 6, 7), a0, a1, a2, a3, _a0, a4, _a1, _a2); | 
|---|
| 1072 |   _DPP_DELEGATE_BIND(209, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 4, 6, 7), _a0, a0, a1, a2, _a1, a3, _a2, _a3); | 
|---|
| 1073 |   _DPP_DELEGATE_BIND(210, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 4, 6, 7), a0, _a0, a1, a2, _a1, a3, _a2, _a3); | 
|---|
| 1074 |   _DPP_DELEGATE_BIND(211, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 4, 6, 7), _a0, _a1, a0, a1, _a2, a2, _a3, _a4); | 
|---|
| 1075 |   _DPP_DELEGATE_BIND(212, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 4, 6, 7), a0, a1, _a0, a2, _a1, a3, _a2, _a3); | 
|---|
| 1076 |   _DPP_DELEGATE_BIND(213, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 4, 6, 7), _a0, a0, _a1, a1, _a2, a2, _a3, _a4); | 
|---|
| 1077 |   _DPP_DELEGATE_BIND(214, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 4, 6, 7), a0, _a0, _a1, a1, _a2, a2, _a3, _a4); | 
|---|
| 1078 |   _DPP_DELEGATE_BIND(215, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 4, 6, 7), _a0, _a1, _a2, a0, _a3, a1, _a4, _a5); | 
|---|
| 1079 |   _DPP_DELEGATE_BIND(216, 4, 4, _DPP_DELEGATE_BTDEFS(4, 3, 4, 6, 7), a0, a1, a2, _a0, _a1, a3, _a2, _a3); | 
|---|
| 1080 |   _DPP_DELEGATE_BIND(217, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 3, 4, 6, 7), _a0, a0, a1, _a1, _a2, a2, _a3, _a4); | 
|---|
| 1081 |   _DPP_DELEGATE_BIND(218, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 3, 4, 6, 7), a0, _a0, a1, _a1, _a2, a2, _a3, _a4); | 
|---|
| 1082 |   _DPP_DELEGATE_BIND(219, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 3, 4, 6, 7), _a0, _a1, a0, _a2, _a3, a1, _a4, _a5); | 
|---|
| 1083 |   _DPP_DELEGATE_BIND(220, 3, 5, _DPP_DELEGATE_BTDEFS(5, 2, 3, 4, 6, 7), a0, a1, _a0, _a1, _a2, a2, _a3, _a4); | 
|---|
| 1084 |   _DPP_DELEGATE_BIND(221, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 2, 3, 4, 6, 7), _a0, a0, _a1, _a2, _a3, a1, _a4, _a5); | 
|---|
| 1085 |   _DPP_DELEGATE_BIND(222, 2, 6, _DPP_DELEGATE_BTDEFS(6, 1, 2, 3, 4, 6, 7), a0, _a0, _a1, _a2, _a3, a1, _a4, _a5); | 
|---|
| 1086 |   _DPP_DELEGATE_BIND(223, 1, 7, _DPP_DELEGATE_BTDEFS(7, 0, 1, 2, 3, 4, 6, 7), _a0, _a1, _a2, _a3, _a4, a0, _a5, _a6); | 
|---|
| 1087 |   _DPP_DELEGATE_BIND(224, 5, 3, _DPP_DELEGATE_BTDEFS(3, 5, 6, 7), a0, a1, a2, a3, a4, _a0, _a1, _a2); | 
|---|
| 1088 |   _DPP_DELEGATE_BIND(225, 4, 4, _DPP_DELEGATE_BTDEFS(4, 0, 5, 6, 7), _a0, a0, a1, a2, a3, _a1, _a2, _a3); | 
|---|
| 1089 |   _DPP_DELEGATE_BIND(226, 4, 4, _DPP_DELEGATE_BTDEFS(4, 1, 5, 6, 7), a0, _a0, a1, a2, a3, _a1, _a2, _a3); | 
|---|
| 1090 |   _DPP_DELEGATE_BIND(227, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 1, 5, 6, 7), _a0, _a1, a0, a1, a2, _a2, _a3, _a4); | 
|---|
| 1091 |   _DPP_DELEGATE_BIND(228, 4, 4, _DPP_DELEGATE_BTDEFS(4, 2, 5, 6, 7), a0, a1, _a0, a2, a3, _a1, _a2, _a3); | 
|---|
| 1092 |   _DPP_DELEGATE_BIND(229, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 2, 5, 6, 7), _a0, a0, _a1, a1, a2, _a2, _a3, _a4); | 
|---|
| 1093 |   _DPP_DELEGATE_BIND(230, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 2, 5, 6, 7), a0, _a0, _a1, a1, a2, _a2, _a3, _a4); | 
|---|
| 1094 |   _DPP_DELEGATE_BIND(231, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 2, 5, 6, 7), _a0, _a1, _a2, a0, a1, _a3, _a4, _a5); | 
|---|
| 1095 |   _DPP_DELEGATE_BIND(232, 4, 4, _DPP_DELEGATE_BTDEFS(4, 3, 5, 6, 7), a0, a1, a2, _a0, a3, _a1, _a2, _a3); | 
|---|
| 1096 |   _DPP_DELEGATE_BIND(233, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 3, 5, 6, 7), _a0, a0, a1, _a1, a2, _a2, _a3, _a4); | 
|---|
| 1097 |   _DPP_DELEGATE_BIND(234, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 3, 5, 6, 7), a0, _a0, a1, _a1, a2, _a2, _a3, _a4); | 
|---|
| 1098 |   _DPP_DELEGATE_BIND(235, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 3, 5, 6, 7), _a0, _a1, a0, _a2, a1, _a3, _a4, _a5); | 
|---|
| 1099 |   _DPP_DELEGATE_BIND(236, 3, 5, _DPP_DELEGATE_BTDEFS(5, 2, 3, 5, 6, 7), a0, a1, _a0, _a1, a2, _a2, _a3, _a4); | 
|---|
| 1100 |   _DPP_DELEGATE_BIND(237, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 2, 3, 5, 6, 7), _a0, a0, _a1, _a2, a1, _a3, _a4, _a5); | 
|---|
| 1101 |   _DPP_DELEGATE_BIND(238, 2, 6, _DPP_DELEGATE_BTDEFS(6, 1, 2, 3, 5, 6, 7), a0, _a0, _a1, _a2, a1, _a3, _a4, _a5); | 
|---|
| 1102 |   _DPP_DELEGATE_BIND(239, 1, 7, _DPP_DELEGATE_BTDEFS(7, 0, 1, 2, 3, 5, 6, 7), _a0, _a1, _a2, _a3, a0, _a4, _a5, _a6); | 
|---|
| 1103 |   _DPP_DELEGATE_BIND(240, 4, 4, _DPP_DELEGATE_BTDEFS(4, 4, 5, 6, 7), a0, a1, a2, a3, _a0, _a1, _a2, _a3); | 
|---|
| 1104 |   _DPP_DELEGATE_BIND(241, 3, 5, _DPP_DELEGATE_BTDEFS(5, 0, 4, 5, 6, 7), _a0, a0, a1, a2, _a1, _a2, _a3, _a4); | 
|---|
| 1105 |   _DPP_DELEGATE_BIND(242, 3, 5, _DPP_DELEGATE_BTDEFS(5, 1, 4, 5, 6, 7), a0, _a0, a1, a2, _a1, _a2, _a3, _a4); | 
|---|
| 1106 |   _DPP_DELEGATE_BIND(243, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 1, 4, 5, 6, 7), _a0, _a1, a0, a1, _a2, _a3, _a4, _a5); | 
|---|
| 1107 |   _DPP_DELEGATE_BIND(244, 3, 5, _DPP_DELEGATE_BTDEFS(5, 2, 4, 5, 6, 7), a0, a1, _a0, a2, _a1, _a2, _a3, _a4); | 
|---|
| 1108 |   _DPP_DELEGATE_BIND(245, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 2, 4, 5, 6, 7), _a0, a0, _a1, a1, _a2, _a3, _a4, _a5); | 
|---|
| 1109 |   _DPP_DELEGATE_BIND(246, 2, 6, _DPP_DELEGATE_BTDEFS(6, 1, 2, 4, 5, 6, 7), a0, _a0, _a1, a1, _a2, _a3, _a4, _a5); | 
|---|
| 1110 |   _DPP_DELEGATE_BIND(247, 1, 7, _DPP_DELEGATE_BTDEFS(7, 0, 1, 2, 4, 5, 6, 7), _a0, _a1, _a2, a0, _a3, _a4, _a5, _a6); | 
|---|
| 1111 |   _DPP_DELEGATE_BIND(248, 3, 5, _DPP_DELEGATE_BTDEFS(5, 3, 4, 5, 6, 7), a0, a1, a2, _a0, _a1, _a2, _a3, _a4); | 
|---|
| 1112 |   _DPP_DELEGATE_BIND(249, 2, 6, _DPP_DELEGATE_BTDEFS(6, 0, 3, 4, 5, 6, 7), _a0, a0, a1, _a1, _a2, _a3, _a4, _a5); | 
|---|
| 1113 |   _DPP_DELEGATE_BIND(250, 2, 6, _DPP_DELEGATE_BTDEFS(6, 1, 3, 4, 5, 6, 7), a0, _a0, a1, _a1, _a2, _a3, _a4, _a5); | 
|---|
| 1114 |   _DPP_DELEGATE_BIND(251, 1, 7, _DPP_DELEGATE_BTDEFS(7, 0, 1, 3, 4, 5, 6, 7), _a0, _a1, a0, _a2, _a3, _a4, _a5, _a6); | 
|---|
| 1115 |   _DPP_DELEGATE_BIND(252, 2, 6, _DPP_DELEGATE_BTDEFS(6, 2, 3, 4, 5, 6, 7), a0, a1, _a0, _a1, _a2, _a3, _a4, _a5); | 
|---|
| 1116 |   _DPP_DELEGATE_BIND(253, 1, 7, _DPP_DELEGATE_BTDEFS(7, 0, 2, 3, 4, 5, 6, 7), _a0, a0, _a1, _a2, _a3, _a4, _a5, _a6); | 
|---|
| 1117 |   _DPP_DELEGATE_BIND(254, 1, 7, _DPP_DELEGATE_BTDEFS(7, 1, 2, 3, 4, 5, 6, 7), a0, _a0, _a1, _a2, _a3, _a4, _a5, _a6); | 
|---|
| 1118 |   _DPP_DELEGATE_BIND(255, 0, 8, _DPP_DELEGATE_BTDEFS(8, 0, 1, 2, 3, 4, 5, 6, 7), _a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7); | 
|---|
| 1119 | #endif | 
|---|
| 1120 |  | 
|---|
| 1121 | #if DPP_DELEGATE_ARGC > 8 | 
|---|
| 1122 | # error DPP_DELEGATE_ARGC > 8 not supported | 
|---|
| 1123 | #endif | 
|---|
| 1124 |  | 
|---|
| 1125 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 1126 |   //    container push delegate class | 
|---|
| 1127 |   ////////////////////////////////////////////////////////////////////// | 
|---|
| 1128 |  | 
|---|
| 1129 |   template <class X, int id, bool smart, class ItemBase> | 
|---|
| 1130 |   class linked_list; | 
|---|
| 1131 |  | 
|---|
| 1132 |   /** @internal */ | 
|---|
| 1133 |   template <class Container> | 
|---|
| 1134 |   struct delegate_push_types | 
|---|
| 1135 |   { | 
|---|
| 1136 |     typedef typename Container::const_reference arg; | 
|---|
| 1137 |   }; | 
|---|
| 1138 |  | 
|---|
| 1139 |   /** @internal */ | 
|---|
| 1140 |   template <class X, int id, bool smart, class ItemBase> | 
|---|
| 1141 |   struct delegate_push_types <linked_list<X, id, smart, ItemBase> > | 
|---|
| 1142 |   { | 
|---|
| 1143 |     typedef _DPP_DR106(X) & arg; | 
|---|
| 1144 |   }; | 
|---|
| 1145 |  | 
|---|
| 1146 |   /** @internal */ | 
|---|
| 1147 |   template <class A0, class PushArg> | 
|---|
| 1148 |   struct delegate_push_ptr | 
|---|
| 1149 |   { | 
|---|
| 1150 |     typedef PushArg arg; | 
|---|
| 1151 |     static _DPP_DR106(PushArg) & get(_DPP_DR106(A0) &a0) | 
|---|
| 1152 |     { | 
|---|
| 1153 |       return a0; | 
|---|
| 1154 |     } | 
|---|
| 1155 |   }; | 
|---|
| 1156 |  | 
|---|
| 1157 |   /** @internal */ | 
|---|
| 1158 |   template <class A0, class PushArg> | 
|---|
| 1159 |   struct delegate_push_ptr<A0, PushArg* const &> | 
|---|
| 1160 |   { | 
|---|
| 1161 |     typedef PushArg * const & arg; | 
|---|
| 1162 |     static PushArg * get(_DPP_DR106(A0) &a0) | 
|---|
| 1163 |     { | 
|---|
| 1164 |       return &a0; | 
|---|
| 1165 |     } | 
|---|
| 1166 |   }; | 
|---|
| 1167 |  | 
|---|
| 1168 |   /** | 
|---|
| 1169 |      @short Container push delegate class | 
|---|
| 1170 |      @main | 
|---|
| 1171 |      @header dpp/delegate | 
|---|
| 1172 |      @prototype template <typename Container, typename A0 = [...], void (Container::*PushFunc)([...]) = &Container::push_back> | 
|---|
| 1173 |  | 
|---|
| 1174 |      This delegate class push items on container on invocation. | 
|---|
| 1175 |  | 
|---|
| 1176 |      @param Container Container type | 
|---|
| 1177 |      @param A0 Type of single argument of delegate prototype | 
|---|
| 1178 |      @param PushArg Type of container push function argument | 
|---|
| 1179 |      @param Push Container push member function, default is @tt push_back | 
|---|
| 1180 |  | 
|---|
| 1181 |      Usage example: | 
|---|
| 1182 |      @example test/test_delegate.cc:push|push1 | 
|---|
| 1183 |      Usage with value argument type instead of reference: | 
|---|
| 1184 |      @example test/test_delegate.cc:push|push2 | 
|---|
| 1185 |      Usage with container @tt push_front function: | 
|---|
| 1186 |      @example test/test_delegate.cc:push|push3 | 
|---|
| 1187 |      Usage with pointers container: | 
|---|
| 1188 |      @example test/test_delegate.cc:push4 | 
|---|
| 1189 |   */ | 
|---|
| 1190 |   template <typename Container, | 
|---|
| 1191 |             typename A0 = typename delegate_push_types<Container>::arg, | 
|---|
| 1192 |             void (Container::*PushFunc)( | 
|---|
| 1193 |               typename delegate_push_ptr<A0, | 
|---|
| 1194 |                 typename delegate_push_types<Container>::arg>::arg | 
|---|
| 1195 |             ) = &Container::push_back> | 
|---|
| 1196 |   class delegate_push | 
|---|
| 1197 |     : public delegate< void (A0) > | 
|---|
| 1198 |   { | 
|---|
| 1199 |   public: | 
|---|
| 1200 |  | 
|---|
| 1201 |     delegate_push() | 
|---|
| 1202 |       : _cont(0) | 
|---|
| 1203 |     { | 
|---|
| 1204 |     } | 
|---|
| 1205 |  | 
|---|
| 1206 |     delegate_push(Container &cont) | 
|---|
| 1207 |       : _cont(&cont) | 
|---|
| 1208 |     { | 
|---|
| 1209 |     } | 
|---|
| 1210 |  | 
|---|
| 1211 |     void operator()(A0 a0) const | 
|---|
| 1212 |     { | 
|---|
| 1213 |       return delegate_push::call(a0); | 
|---|
| 1214 |     } | 
|---|
| 1215 |  | 
|---|
| 1216 |     bool valid() const | 
|---|
| 1217 |     { | 
|---|
| 1218 |       return _cont; | 
|---|
| 1219 |     } | 
|---|
| 1220 |  | 
|---|
| 1221 |   private: | 
|---|
| 1222 |     void call(A0 a0) const | 
|---|
| 1223 |     { | 
|---|
| 1224 |       (_cont->*PushFunc)(delegate_push_ptr<A0, typename delegate_push_types<Container>::arg>::get(a0)); | 
|---|
| 1225 |     } | 
|---|
| 1226 |  | 
|---|
| 1227 |     Container *_cont; | 
|---|
| 1228 |   }; | 
|---|
| 1229 |  | 
|---|
| 1230 | ////////////////////////////////////////////////////////////////////// | 
|---|
| 1231 | //      container iterator delegate class | 
|---|
| 1232 | ////////////////////////////////////////////////////////////////////// | 
|---|
| 1233 |  | 
|---|
| 1234 | /** @internal */ | 
|---|
| 1235 | template <class C> struct delegate_iterate_types | 
|---|
| 1236 | { | 
|---|
| 1237 |   typedef typename C::iterator iterator; | 
|---|
| 1238 |   typedef typename C::value_type & reference; | 
|---|
| 1239 | }; | 
|---|
| 1240 |  | 
|---|
| 1241 | /** @internal */ | 
|---|
| 1242 | template <class C> struct delegate_iterate_types <const C> | 
|---|
| 1243 | { | 
|---|
| 1244 |   typedef typename C::const_iterator iterator; | 
|---|
| 1245 |   typedef const typename C::value_type & reference; | 
|---|
| 1246 | }; | 
|---|
| 1247 |  | 
|---|
| 1248 | /** | 
|---|
| 1249 |    @short Container traversal delegate class | 
|---|
| 1250 |    @main | 
|---|
| 1251 |    @header dpp/delegate | 
|---|
| 1252 |  | 
|---|
| 1253 |    This delegate class can be used to returns each item present in | 
|---|
| 1254 |    associated container. | 
|---|
| 1255 |  | 
|---|
| 1256 |    @param Container Container type | 
|---|
| 1257 |    @param R Return type of delegate prototype | 
|---|
| 1258 |  | 
|---|
| 1259 |    Usage example: | 
|---|
| 1260 |    @example test/test_delegate.cc:push|iter1 | 
|---|
| 1261 | */ | 
|---|
| 1262 | template <typename Container, | 
|---|
| 1263 |           typename R = typename delegate_iterate_types<Container>::reference> | 
|---|
| 1264 | class delegate_iterate | 
|---|
| 1265 |   : public delegate< R () > | 
|---|
| 1266 | { | 
|---|
| 1267 | public: | 
|---|
| 1268 |  | 
|---|
| 1269 |   typedef typename delegate_iterate_types<Container>::iterator iterator; | 
|---|
| 1270 |  | 
|---|
| 1271 |   delegate_iterate(Container &cont) | 
|---|
| 1272 |     : _i(cont.begin()), | 
|---|
| 1273 |       _end(cont.end()) | 
|---|
| 1274 |   { | 
|---|
| 1275 |   } | 
|---|
| 1276 |  | 
|---|
| 1277 |   delegate_iterate(const iterator &begin, const iterator &end) | 
|---|
| 1278 |     : _i(begin), | 
|---|
| 1279 |       _end(end) | 
|---|
| 1280 |   { | 
|---|
| 1281 |   } | 
|---|
| 1282 |  | 
|---|
| 1283 |   /** Test if container end has been reached. */ | 
|---|
| 1284 |   bool valid() const | 
|---|
| 1285 |   { | 
|---|
| 1286 |     return _i != _end; | 
|---|
| 1287 |   } | 
|---|
| 1288 |  | 
|---|
| 1289 |   R operator()() const | 
|---|
| 1290 |   { | 
|---|
| 1291 |     return delegate_iterate::call(); | 
|---|
| 1292 |   } | 
|---|
| 1293 |  | 
|---|
| 1294 | private: | 
|---|
| 1295 |   R call() const | 
|---|
| 1296 |   { | 
|---|
| 1297 |     delegate_iterate *_this = const_cast<delegate_iterate*>(this); | 
|---|
| 1298 |     return *_this->_i++; | 
|---|
| 1299 |   } | 
|---|
| 1300 |  | 
|---|
| 1301 |   iterator _i; | 
|---|
| 1302 |   iterator _end; | 
|---|
| 1303 | }; | 
|---|
| 1304 |  | 
|---|
| 1305 | ////////////////////////////////////////////////////////////////////// | 
|---|
| 1306 | //      container output delegate class | 
|---|
| 1307 | ////////////////////////////////////////////////////////////////////// | 
|---|
| 1308 |  | 
|---|
| 1309 | /** | 
|---|
| 1310 |    @short Standard stream output delegate class | 
|---|
| 1311 |    @main | 
|---|
| 1312 |    @header dpp/delegate | 
|---|
| 1313 |  | 
|---|
| 1314 |    This delegate class can be used to write to a @ref std::ostream | 
|---|
| 1315 |    stream on invocation. | 
|---|
| 1316 |  | 
|---|
| 1317 |    A separator string which is output after each value may be | 
|---|
| 1318 |    specified. | 
|---|
| 1319 |  | 
|---|
| 1320 |    @param Container Container type | 
|---|
| 1321 |    @param A0 Type of single argument of delegate prototype | 
|---|
| 1322 |  | 
|---|
| 1323 |    Usage example: | 
|---|
| 1324 |    @example test/test_delegate.cc:ostream | 
|---|
| 1325 | */ | 
|---|
| 1326 | template <typename A0> | 
|---|
| 1327 | class delegate_ostream | 
|---|
| 1328 |   : public delegate< void (A0) > | 
|---|
| 1329 | { | 
|---|
| 1330 | public: | 
|---|
| 1331 |  | 
|---|
| 1332 |   delegate_ostream() | 
|---|
| 1333 |     : _out(0) | 
|---|
| 1334 |   { | 
|---|
| 1335 |   } | 
|---|
| 1336 |  | 
|---|
| 1337 |   delegate_ostream(std::ostream &out, const char *sep = "") | 
|---|
| 1338 |     : _out(&out), | 
|---|
| 1339 |       _sep(sep) | 
|---|
| 1340 |   { | 
|---|
| 1341 |   } | 
|---|
| 1342 |  | 
|---|
| 1343 |   /** @This returns @ref std::ostream::good function result on stream. */ | 
|---|
| 1344 |   bool valid() const | 
|---|
| 1345 |   { | 
|---|
| 1346 |     return _out && _out->good(); | 
|---|
| 1347 |   } | 
|---|
| 1348 |  | 
|---|
| 1349 |   void operator()(A0 a0) const | 
|---|
| 1350 |   { | 
|---|
| 1351 |     return delegate_ostream::call(a0); | 
|---|
| 1352 |   } | 
|---|
| 1353 |  | 
|---|
| 1354 | private: | 
|---|
| 1355 |   void call(A0 a0) const | 
|---|
| 1356 |   { | 
|---|
| 1357 |     *_out << a0 << _sep; | 
|---|
| 1358 |   } | 
|---|
| 1359 |  | 
|---|
| 1360 |   std::ostream *_out; | 
|---|
| 1361 |   const char *_sep; | 
|---|
| 1362 | }; | 
|---|
| 1363 |  | 
|---|
| 1364 |  | 
|---|
| 1365 | ////////////////////////////////////////////////////////////////////// | 
|---|
| 1366 | //      container input delegate class | 
|---|
| 1367 | ////////////////////////////////////////////////////////////////////// | 
|---|
| 1368 |  | 
|---|
| 1369 | /** | 
|---|
| 1370 |    @short Standard stream input delegate class | 
|---|
| 1371 |    @main | 
|---|
| 1372 |    @header dpp/delegate | 
|---|
| 1373 |  | 
|---|
| 1374 |    This delegate class can be used to read from a @ref std::istream | 
|---|
| 1375 |    stream on invocation. | 
|---|
| 1376 |  | 
|---|
| 1377 |    Usage example: | 
|---|
| 1378 |    @example test/test_delegate.cc:istream | 
|---|
| 1379 | */ | 
|---|
| 1380 | template <typename R> | 
|---|
| 1381 | class delegate_istream | 
|---|
| 1382 |   : public delegate< R () > | 
|---|
| 1383 | { | 
|---|
| 1384 | public: | 
|---|
| 1385 |  | 
|---|
| 1386 |   delegate_istream(std::istream &in) | 
|---|
| 1387 |     : _in(&in) | 
|---|
| 1388 |   { | 
|---|
| 1389 |   } | 
|---|
| 1390 |  | 
|---|
| 1391 |   /** @This returns @ref std::istream::good function result on stream. */ | 
|---|
| 1392 |   bool valid() const | 
|---|
| 1393 |   { | 
|---|
| 1394 |     return _in && _in->good(); | 
|---|
| 1395 |   } | 
|---|
| 1396 |  | 
|---|
| 1397 |   R operator()() const | 
|---|
| 1398 |   { | 
|---|
| 1399 |     return delegate_istream::call(); | 
|---|
| 1400 |   } | 
|---|
| 1401 |  | 
|---|
| 1402 | private: | 
|---|
| 1403 |   R call() const | 
|---|
| 1404 |   { | 
|---|
| 1405 |     R r; | 
|---|
| 1406 |     *_in >> r; | 
|---|
| 1407 |     return r; | 
|---|
| 1408 |   } | 
|---|
| 1409 |  | 
|---|
| 1410 |   std::istream *_in; | 
|---|
| 1411 | }; | 
|---|
| 1412 |  | 
|---|
| 1413 |  | 
|---|
| 1414 | ////////////////////////////////////////////////////////////////////// | 
|---|
| 1415 | //      user delegate class definition macros | 
|---|
| 1416 | ////////////////////////////////////////////////////////////////////// | 
|---|
| 1417 |  | 
|---|
| 1418 | #define _DPP_DELEGATE_X(a, b) a##b | 
|---|
| 1419 | #define _DPP_DELEGATE_NAME(l) _DPP_DELEGATE_X(_my_delegate, l) | 
|---|
| 1420 |  | 
|---|
| 1421 | /** @This provides a convenient way to write custom delegate types. | 
|---|
| 1422 |     @see {#DPP_DELEGATE0_OBJ, #DPP_DELEGATE1_TYPE} | 
|---|
| 1423 |  | 
|---|
| 1424 |     @example test/test_delegate.cc:my0 | 
|---|
| 1425 |     @showcontent | 
|---|
| 1426 |  */ | 
|---|
| 1427 | #define DPP_DELEGATE0_TYPE(return_type, args_list, ...) \ | 
|---|
| 1428 |   class : public dpp::delegate< return_type args_list > \ | 
|---|
| 1429 |   {                                                     \ | 
|---|
| 1430 |     bool valid() const                                  \ | 
|---|
| 1431 |     {                                                   \ | 
|---|
| 1432 |       return true;                                      \ | 
|---|
| 1433 |     }                                                   \ | 
|---|
| 1434 |                                                         \ | 
|---|
| 1435 |     return_type call args_list const                    \ | 
|---|
| 1436 |     {                                                   \ | 
|---|
| 1437 |       __VA_ARGS__;                                      \ | 
|---|
| 1438 |     }                                                   \ | 
|---|
| 1439 |   } | 
|---|
| 1440 |  | 
|---|
| 1441 | /** @see {#DPP_DELEGATE0_TYPE} @showcontent */ | 
|---|
| 1442 | # define DPP_DELEGATE0_OBJ(name, return_type, args_list, ...) \ | 
|---|
| 1443 |   DPP_DELEGATE0_TYPE(return_type, args_list, __VA_ARGS__) name | 
|---|
| 1444 |  | 
|---|
| 1445 | #if DPP_DELEGATE_ARGC >= 1 | 
|---|
| 1446 |  | 
|---|
| 1447 | /** @see {#DPP_DELEGATE1_OBJ, #DPP_DELEGATE0_TYPE} @showcontent */ | 
|---|
| 1448 | # define DPP_DELEGATE1_TYPE(return_type, args_list, data0_type, ...)    \ | 
|---|
| 1449 |   class _DPP_DELEGATE_NAME(__LINE__)                                    \ | 
|---|
| 1450 |     : public dpp::delegate< return_type args_list >                     \ | 
|---|
| 1451 |   {                                                                     \ | 
|---|
| 1452 |   public:                                                               \ | 
|---|
| 1453 |     _DPP_DELEGATE_NAME(__LINE__)(data0_type data0)                      \ | 
|---|
| 1454 |       : _0(data0)                                                       \ | 
|---|
| 1455 |     {}                                                                  \ | 
|---|
| 1456 |   private:                                                              \ | 
|---|
| 1457 |     bool valid() const                                                  \ | 
|---|
| 1458 |     {                                                                   \ | 
|---|
| 1459 |       return true;                                                      \ | 
|---|
| 1460 |     }                                                                   \ | 
|---|
| 1461 |                                                                         \ | 
|---|
| 1462 |     return_type call args_list const                                    \ | 
|---|
| 1463 |     {                                                                   \ | 
|---|
| 1464 |       __VA_ARGS__;                                                      \ | 
|---|
| 1465 |     }                                                                   \ | 
|---|
| 1466 |                                                                         \ | 
|---|
| 1467 |     data0_type _0;                                                      \ | 
|---|
| 1468 |   } | 
|---|
| 1469 |  | 
|---|
| 1470 | /** @This provides a convenient way to create custom delegate | 
|---|
| 1471 |     objects. | 
|---|
| 1472 |  | 
|---|
| 1473 |     One or more data fields can be embedded in delegate object by | 
|---|
| 1474 |     using one of the @tt DPP_DELEGATEn_OBJ macros: | 
|---|
| 1475 |  | 
|---|
| 1476 |     @example test/test_delegate.cc:my1 | 
|---|
| 1477 |     @showcontent | 
|---|
| 1478 |  | 
|---|
| 1479 |     @see {#DPP_DELEGATE1_TYPE, #DPP_DELEGATEO_OBJ, | 
|---|
| 1480 |     #DPP_DELEGATE2_OBJ, #DPP_DELEGATE3_OBJ, #DPP_DELEGATE4_OBJ} | 
|---|
| 1481 | */ | 
|---|
| 1482 | # define DPP_DELEGATE1_OBJ(name, return_type, args_list, data0_type, init0, ...) \ | 
|---|
| 1483 |   DPP_DELEGATE1_TYPE(return_type, args_list, data0_type, __VA_ARGS__)   \ | 
|---|
| 1484 |   name(init0) | 
|---|
| 1485 |  | 
|---|
| 1486 | #endif | 
|---|
| 1487 |  | 
|---|
| 1488 | #if DPP_DELEGATE_ARGC >= 2 | 
|---|
| 1489 |  | 
|---|
| 1490 | /** @see {#DPP_DELEGATE2_OBJ, #DPP_DELEGATE1_TYPE} */ | 
|---|
| 1491 | # define DPP_DELEGATE2_TYPE(return_type, args_list, data0_type, data1_type, ...) \ | 
|---|
| 1492 |   class _DPP_DELEGATE_NAME(__LINE__)                                    \ | 
|---|
| 1493 |     : public dpp::delegate< return_type args_list >                     \ | 
|---|
| 1494 |   {                                                                     \ | 
|---|
| 1495 |   public:                                                               \ | 
|---|
| 1496 |     _DPP_DELEGATE_NAME(__LINE__)(data0_type data0, data1_type data1)    \ | 
|---|
| 1497 |       : _0(data0), _1(data1)                                            \ | 
|---|
| 1498 |     {}                                                                  \ | 
|---|
| 1499 |   private:                                                              \ | 
|---|
| 1500 |     bool valid() const                                                  \ | 
|---|
| 1501 |     {                                                                   \ | 
|---|
| 1502 |       return true;                                                      \ | 
|---|
| 1503 |     }                                                                   \ | 
|---|
| 1504 |                                                                         \ | 
|---|
| 1505 |     return_type call args_list const                                    \ | 
|---|
| 1506 |     {                                                                   \ | 
|---|
| 1507 |       __VA_ARGS__;                                                      \ | 
|---|
| 1508 |     }                                                                   \ | 
|---|
| 1509 |                                                                         \ | 
|---|
| 1510 |     data0_type _0;                                                      \ | 
|---|
| 1511 |     data1_type _1;                                                      \ | 
|---|
| 1512 |   } | 
|---|
| 1513 |  | 
|---|
| 1514 | /** @see {#DPP_DELEGATE2_TYPE, #DPP_DELEGATE1_OBJ} */ | 
|---|
| 1515 | # define DPP_DELEGATE2_OBJ(name, return_type, args_list, data0_type, init0, data1_type, init1, ...) \ | 
|---|
| 1516 |   DPP_DELEGATE2_TYPE(return_type, args_list, data0_type, data1_type, __VA_ARGS__) \ | 
|---|
| 1517 |   name(init0, init1) | 
|---|
| 1518 |  | 
|---|
| 1519 | #endif | 
|---|
| 1520 |  | 
|---|
| 1521 | #if DPP_DELEGATE_ARGC >= 3 | 
|---|
| 1522 |  | 
|---|
| 1523 | /** @see {#DPP_DELEGATE3_OBJ, #DPP_DELEGATE1_TYPE} */ | 
|---|
| 1524 | # define DPP_DELEGATE3_TYPE(return_type, args_list, data0_type, data1_type, data2_type, ...) \ | 
|---|
| 1525 |   class _DPP_DELEGATE_NAME(__LINE__)                                    \ | 
|---|
| 1526 |     : public dpp::delegate< return_type args_list >                     \ | 
|---|
| 1527 |   {                                                                     \ | 
|---|
| 1528 |   public:                                                               \ | 
|---|
| 1529 |     _DPP_DELEGATE_NAME(__LINE__)(data0_type data0, data1_type data1, data2_type data2) \ | 
|---|
| 1530 |       : _0(data0), _1(data1), _2(data2)                                 \ | 
|---|
| 1531 |     {}                                                                  \ | 
|---|
| 1532 |   private:                                                              \ | 
|---|
| 1533 |     bool valid() const                                                  \ | 
|---|
| 1534 |     {                                                                   \ | 
|---|
| 1535 |       return true;                                                      \ | 
|---|
| 1536 |     }                                                                   \ | 
|---|
| 1537 |                                                                         \ | 
|---|
| 1538 |     return_type call args_list const                                    \ | 
|---|
| 1539 |     {                                                                   \ | 
|---|
| 1540 |       __VA_ARGS__;                                                      \ | 
|---|
| 1541 |     }                                                                   \ | 
|---|
| 1542 |                                                                         \ | 
|---|
| 1543 |     data0_type _0;                                                      \ | 
|---|
| 1544 |     data1_type _1;                                                      \ | 
|---|
| 1545 |     data2_type _2;                                                      \ | 
|---|
| 1546 |   } | 
|---|
| 1547 |  | 
|---|
| 1548 | /** @see {#DPP_DELEGATE3_TYPE, #DPP_DELEGATE1_OBJ} */ | 
|---|
| 1549 | # define DPP_DELEGATE3_OBJ(name, return_type, args_list, data0_type, init0, data1_type, init1, data2_type, init2, ...)  \ | 
|---|
| 1550 |   DPP_DELEGATE3_TYPE(return_type, args_list, data0_type, data1_type, data2_type, __VA_ARGS__)  \ | 
|---|
| 1551 |     name(init0, init1, init2) | 
|---|
| 1552 |  | 
|---|
| 1553 | #endif | 
|---|
| 1554 |  | 
|---|
| 1555 | #if DPP_DELEGATE_ARGC >= 4 | 
|---|
| 1556 |  | 
|---|
| 1557 | /** @see {#DPP_DELEGATE4_OBJ, #DPP_DELEGATE1_TYPE} */ | 
|---|
| 1558 | # define DPP_DELEGATE4_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, ...) \ | 
|---|
| 1559 |   class _DPP_DELEGATE_NAME(__LINE__)                                    \ | 
|---|
| 1560 |     : public dpp::delegate< return_type args_list >                     \ | 
|---|
| 1561 |   {                                                                     \ | 
|---|
| 1562 |   public:                                                               \ | 
|---|
| 1563 |     _DPP_DELEGATE_NAME(__LINE__)(data0_type data0, data1_type data1, data2_type data2, data3_type data3) \ | 
|---|
| 1564 |       : _0(data0), _1(data1), _2(data2), _3(data3)                      \ | 
|---|
| 1565 |     {}                                                                  \ | 
|---|
| 1566 |   private:                                                              \ | 
|---|
| 1567 |     bool valid() const                                                  \ | 
|---|
| 1568 |     {                                                                   \ | 
|---|
| 1569 |       return true;                                                      \ | 
|---|
| 1570 |     }                                                                   \ | 
|---|
| 1571 |                                                                         \ | 
|---|
| 1572 |     return_type call args_list const                                    \ | 
|---|
| 1573 |     {                                                                   \ | 
|---|
| 1574 |       __VA_ARGS__;                                                      \ | 
|---|
| 1575 |     }                                                                   \ | 
|---|
| 1576 |                                                                         \ | 
|---|
| 1577 |     data0_type _0;                                                      \ | 
|---|
| 1578 |     data1_type _1;                                                      \ | 
|---|
| 1579 |     data2_type _2;                                                      \ | 
|---|
| 1580 |     data3_type _3;                                                      \ | 
|---|
| 1581 |   } | 
|---|
| 1582 |  | 
|---|
| 1583 | /** @see {#DPP_DELEGATE4_TYPE, #DPP_DELEGATE1_OBJ} */ | 
|---|
| 1584 | # define DPP_DELEGATE4_OBJ(name, return_type, args_list, data0_type, init0, data1_type, init1, data2_type, init2, data3_type, init3, ...)  \ | 
|---|
| 1585 |   DPP_DELEGATE4_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, __VA_ARGS__)  \ | 
|---|
| 1586 |     name(init0, init1, init2, init3) | 
|---|
| 1587 |  | 
|---|
| 1588 | #endif | 
|---|
| 1589 |  | 
|---|
| 1590 | #if DPP_DELEGATE_ARGC >= 5 // mkdoc:skip | 
|---|
| 1591 |  | 
|---|
| 1592 | /** @see {#DPP_DELEGATE5_OBJ, #DPP_DELEGATE1_TYPE} */ | 
|---|
| 1593 | # define DPP_DELEGATE5_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, data4_type, ...) \ | 
|---|
| 1594 |   class _DPP_DELEGATE_NAME(__LINE__)                                    \ | 
|---|
| 1595 |     : public dpp::delegate< return_type args_list >                     \ | 
|---|
| 1596 |   {                                                                     \ | 
|---|
| 1597 |   public:                                                               \ | 
|---|
| 1598 |     _DPP_DELEGATE_NAME(__LINE__)(data0_type data0, data1_type data1, data2_type data2, data3_type data3, data4_type data4) \ | 
|---|
| 1599 |       : _0(data0), _1(data1), _2(data2), _3(data3), _4(data4)           \ | 
|---|
| 1600 |     {}                                                                  \ | 
|---|
| 1601 |   private:                                                              \ | 
|---|
| 1602 |     bool valid() const                                                  \ | 
|---|
| 1603 |     {                                                                   \ | 
|---|
| 1604 |       return true;                                                      \ | 
|---|
| 1605 |     }                                                                   \ | 
|---|
| 1606 |                                                                         \ | 
|---|
| 1607 |     return_type call args_list const                                    \ | 
|---|
| 1608 |     {                                                                   \ | 
|---|
| 1609 |       __VA_ARGS__;                                                      \ | 
|---|
| 1610 |     }                                                                   \ | 
|---|
| 1611 |                                                                         \ | 
|---|
| 1612 |     data0_type _0;                                                      \ | 
|---|
| 1613 |     data1_type _1;                                                      \ | 
|---|
| 1614 |     data2_type _2;                                                      \ | 
|---|
| 1615 |     data3_type _3;                                                      \ | 
|---|
| 1616 |     data4_type _4;                                                      \ | 
|---|
| 1617 |   } | 
|---|
| 1618 |  | 
|---|
| 1619 | /** @see {#DPP_DELEGATE5_TYPE, #DPP_DELEGATE1_OBJ} */ | 
|---|
| 1620 | # define DPP_DELEGATE5_OBJ(name, return_type, args_list, data0_type, init0, data1_type, init1, data2_type, init2, data3_type, init3, data4_type, init4, ...)  \ | 
|---|
| 1621 |   DPP_DELEGATE5_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, data4_type, __VA_ARGS__)  \ | 
|---|
| 1622 |     name(init0, init1, init2, init3, init4) | 
|---|
| 1623 |  | 
|---|
| 1624 | #endif | 
|---|
| 1625 |  | 
|---|
| 1626 | #if DPP_DELEGATE_ARGC >= 6 // mkdoc:skip | 
|---|
| 1627 |  | 
|---|
| 1628 | /** @see {#DPP_DELEGATE6_OBJ, #DPP_DELEGATE1_TYPE} */ | 
|---|
| 1629 | # define DPP_DELEGATE6_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, data4_type, data5_type, ...) \ | 
|---|
| 1630 |   class _DPP_DELEGATE_NAME(__LINE__)                                    \ | 
|---|
| 1631 |     : public dpp::delegate< return_type args_list >                     \ | 
|---|
| 1632 |   {                                                                     \ | 
|---|
| 1633 |   public:                                                               \ | 
|---|
| 1634 |     _DPP_DELEGATE_NAME(__LINE__)(data0_type data0, data1_type data1, data2_type data2, data3_type data3, data4_type data4, data5_type data5) \ | 
|---|
| 1635 |       : _0(data0), _1(data1), _2(data2), _3(data3), _4(data4), _5(data5) \ | 
|---|
| 1636 |     {}                                                                  \ | 
|---|
| 1637 |   private:                                                              \ | 
|---|
| 1638 |     bool valid() const                                                  \ | 
|---|
| 1639 |     {                                                                   \ | 
|---|
| 1640 |       return true;                                                      \ | 
|---|
| 1641 |     }                                                                   \ | 
|---|
| 1642 |                                                                         \ | 
|---|
| 1643 |     return_type call args_list const                                    \ | 
|---|
| 1644 |     {                                                                   \ | 
|---|
| 1645 |       __VA_ARGS__;                                                      \ | 
|---|
| 1646 |     }                                                                   \ | 
|---|
| 1647 |                                                                         \ | 
|---|
| 1648 |     data0_type _0;                                                      \ | 
|---|
| 1649 |     data1_type _1;                                                      \ | 
|---|
| 1650 |     data2_type _2;                                                      \ | 
|---|
| 1651 |     data3_type _3;                                                      \ | 
|---|
| 1652 |     data4_type _4;                                                      \ | 
|---|
| 1653 |     data5_type _5;                                                      \ | 
|---|
| 1654 |   } | 
|---|
| 1655 |  | 
|---|
| 1656 | /** @see {#DPP_DELEGATE6_TYPE, #DPP_DELEGATE1_OBJ} */ | 
|---|
| 1657 | # define DPP_DELEGATE6_OBJ(name, return_type, args_list, data0_type, init0, data1_type, init1, data2_type, init2, data3_type, init3, data4_type, init4, data5_type, init5, ...)  \ | 
|---|
| 1658 |   DPP_DELEGATE6_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, data4_type, data5_type, __VA_ARGS__)  \ | 
|---|
| 1659 |     name(init0, init1, init2, init3, init4, init5) | 
|---|
| 1660 |  | 
|---|
| 1661 | #endif | 
|---|
| 1662 |  | 
|---|
| 1663 | #if DPP_DELEGATE_ARGC >= 7 // mkdoc:skip | 
|---|
| 1664 |  | 
|---|
| 1665 | /** @see {#DPP_DELEGATE7_OBJ, #DPP_DELEGATE1_TYPE} */ | 
|---|
| 1666 | # define DPP_DELEGATE7_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, data4_type, data5_type, data6_type, ...) \ | 
|---|
| 1667 |   class _DPP_DELEGATE_NAME(__LINE__)                                    \ | 
|---|
| 1668 |     : public dpp::delegate< return_type args_list >                     \ | 
|---|
| 1669 |   {                                                                     \ | 
|---|
| 1670 |   public:                                                               \ | 
|---|
| 1671 |     _DPP_DELEGATE_NAME(__LINE__)(data0_type data0, data1_type data1, data2_type data2, data3_type data3, data4_type data4, data5_type data5, data6_type data6) \ | 
|---|
| 1672 |       : _0(data0), _1(data1), _2(data2), _3(data3), _4(data4), _5(data5), _6(data6) \ | 
|---|
| 1673 |     {}                                                                  \ | 
|---|
| 1674 |   private:                                                              \ | 
|---|
| 1675 |     bool valid() const                                                  \ | 
|---|
| 1676 |     {                                                                   \ | 
|---|
| 1677 |       return true;                                                      \ | 
|---|
| 1678 |     }                                                                   \ | 
|---|
| 1679 |                                                                         \ | 
|---|
| 1680 |     return_type call args_list const                                    \ | 
|---|
| 1681 |     {                                                                   \ | 
|---|
| 1682 |       __VA_ARGS__;                                                      \ | 
|---|
| 1683 |     }                                                                   \ | 
|---|
| 1684 |                                                                         \ | 
|---|
| 1685 |     data0_type _0;                                                      \ | 
|---|
| 1686 |     data1_type _1;                                                      \ | 
|---|
| 1687 |     data2_type _2;                                                      \ | 
|---|
| 1688 |     data3_type _3;                                                      \ | 
|---|
| 1689 |     data4_type _4;                                                      \ | 
|---|
| 1690 |     data5_type _5;                                                      \ | 
|---|
| 1691 |     data6_type _6;                                                      \ | 
|---|
| 1692 |   } | 
|---|
| 1693 |  | 
|---|
| 1694 | /** @see {#DPP_DELEGATE7_TYPE, #DPP_DELEGATE1_OBJ} */ | 
|---|
| 1695 | # define DPP_DELEGATE7_OBJ(name, return_type, args_list, data0_type, init0, data1_type, init1, data2_type, init2, data3_type, init3, data4_type, init4, data5_type, init5, data6_type, init6, ...)  \ | 
|---|
| 1696 |   DPP_DELEGATE7_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, data4_type, data5_type, data6_type, __VA_ARGS__)  \ | 
|---|
| 1697 |     name(init0, init1, init2, init3, init4, init5, init6) | 
|---|
| 1698 |  | 
|---|
| 1699 | #endif | 
|---|
| 1700 |  | 
|---|
| 1701 | #if DPP_DELEGATE_ARGC >= 8 // mkdoc:skip | 
|---|
| 1702 |  | 
|---|
| 1703 | /** @see {#DPP_DELEGATE8_OBJ, #DPP_DELEGATE1_TYPE} */ | 
|---|
| 1704 | # define DPP_DELEGATE8_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, data4_type, data5_type, data6_type, data7_type, ...) \ | 
|---|
| 1705 |   class _DPP_DELEGATE_NAME(__LINE__)                                    \ | 
|---|
| 1706 |     : public dpp::delegate< return_type args_list >                     \ | 
|---|
| 1707 |   {                                                                     \ | 
|---|
| 1708 |   public:                                                               \ | 
|---|
| 1709 |     _DPP_DELEGATE_NAME(__LINE__)(data0_type data0, data1_type data1, data2_type data2, data3_type data3, data4_type data4, data5_type data5, data6_type data6, data7_type data7) \ | 
|---|
| 1710 |       : _0(data0), _1(data1), _2(data2), _3(data3), _4(data4), _5(data5), _6(data6), _7(data7) \ | 
|---|
| 1711 |     {}                                                                  \ | 
|---|
| 1712 |   private:                                                              \ | 
|---|
| 1713 |     bool valid() const                                                  \ | 
|---|
| 1714 |     {                                                                   \ | 
|---|
| 1715 |       return true;                                                      \ | 
|---|
| 1716 |     }                                                                   \ | 
|---|
| 1717 |                                                                         \ | 
|---|
| 1718 |     return_type call args_list const                                    \ | 
|---|
| 1719 |     {                                                                   \ | 
|---|
| 1720 |       __VA_ARGS__;                                                      \ | 
|---|
| 1721 |     }                                                                   \ | 
|---|
| 1722 |                                                                         \ | 
|---|
| 1723 |     data0_type _0;                                                      \ | 
|---|
| 1724 |     data1_type _1;                                                      \ | 
|---|
| 1725 |     data2_type _2;                                                      \ | 
|---|
| 1726 |     data3_type _3;                                                      \ | 
|---|
| 1727 |     data4_type _4;                                                      \ | 
|---|
| 1728 |     data5_type _5;                                                      \ | 
|---|
| 1729 |     data6_type _6;                                                      \ | 
|---|
| 1730 |     data7_type _7;                                                      \ | 
|---|
| 1731 |   } | 
|---|
| 1732 |  | 
|---|
| 1733 | /** @see {#DPP_DELEGATE8_TYPE, #DPP_DELEGATE1_OBJ} */ | 
|---|
| 1734 | # define DPP_DELEGATE8_OBJ(name, return_type, args_list, data0_type, init0, data1_type, init1, data2_type, init2, data3_type, init3, data4_type, init4, data5_type, init5, data6_type, init6, data7_type, init7, ...)  \ | 
|---|
| 1735 |   DPP_DELEGATE8_TYPE(return_type, args_list, data0_type, data1_type, data2_type, data3_type, data4_type, data5_type, data6_type, data7_type, __VA_ARGS__)  \ | 
|---|
| 1736 |     name(init0, init1, init2, init3, init4, init5, init6, init7) | 
|---|
| 1737 |  | 
|---|
| 1738 | #endif | 
|---|
| 1739 |  | 
|---|
| 1740 | } | 
|---|
| 1741 |  | 
|---|
| 1742 | #endif | 
|---|
| 1743 |  | 
|---|