static Task gen()

in src/thread/task_queue.h [541:582]


  static Task gen(RET (T::*func)(FARG1, FARG2, FARG3, FARG4, FARG5, FARG6, FARG7),
                  T* obj,
                  ARG1 arg1,
                  ARG2 arg2,
                  ARG3 arg3,
                  ARG4 arg4,
                  ARG5 arg5,
                  ARG6 arg6,
                  ARG7 arg7) {
    struct lambda : public ITask_impl {
      RET (T::*dest_func)(FARG1, FARG2, FARG3, FARG4, FARG5, FARG6, FARG7);
      T* obj;
      ARG1 arg1;
      ARG2 arg2;
      ARG3 arg3;
      ARG4 arg4;
      ARG5 arg5;
      ARG6 arg6;
      ARG7 arg7;
      lambda(RET (T::*func)(FARG1, FARG2, FARG3, FARG4, FARG5, FARG6, FARG7),
             T* obj,
             const ARG1& arg1,
             const ARG2& arg2,
             const ARG3& arg3,
             const ARG4& arg4,
             const ARG5& arg5,
             const ARG6& arg6,
             const ARG7& arg7)
          : dest_func(func),
            obj(obj),
            arg1(arg1),
            arg2(arg2),
            arg3(arg3),
            arg4(arg4),
            arg5(arg5),
            arg6(arg6),
            arg7(arg7) {}
      virtual void run() { (obj->*dest_func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7); }
      virtual ITask_impl* fork() { return new lambda(dest_func, obj, arg1, arg2, arg3, arg4, arg5, arg6, arg7); }
    };
    return Task(new lambda(func, obj, arg1, arg2, arg3, arg4, arg5, arg6, arg7));
  }