OpenCL C++ Wrapper API 1.1
|
00001 /******************************************************************************* 00002 * Copyright (c) 2008-2011 The Khronos Group Inc. 00003 * 00004 * Permission is hereby granted, free of charge, to any person obtaining a 00005 * copy of this software and/or associated documentation files (the 00006 * "Materials"), to deal in the Materials without restriction, including 00007 * without limitation the rights to use, copy, modify, merge, publish, 00008 * distribute, sublicense, and/or sell copies of the Materials, and to 00009 * permit persons to whom the Materials are furnished to do so, subject to 00010 * the following conditions: 00011 * 00012 * The above copyright notice and this permission notice shall be included 00013 * in all copies or substantial portions of the Materials. 00014 * 00015 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00016 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00017 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 00018 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 00019 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 00020 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 00021 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 00022 ******************************************************************************/ 00023 00140 #ifndef CL_HPP_ 00141 #define CL_HPP_ 00142 00143 #ifdef _WIN32 00144 #include <windows.h> 00145 #include <malloc.h> 00146 #pragma push_macro("max") 00147 #undef max 00148 #if defined(USE_DX_INTEROP) 00149 #include <CL/cl_d3d10.h> 00150 #endif 00151 #endif // _WIN32 00152 00153 // 00154 #if defined(USE_CL_DEVICE_FISSION) 00155 #include <CL/cl_ext.h> 00156 #endif 00157 00158 #if defined(__APPLE__) || defined(__MACOSX) 00159 #include <OpenGL/OpenGL.h> 00160 #include <OpenCL/opencl.h> 00161 #include <libkern/OSAtomic.h> 00162 #else 00163 #include <GL/gl.h> 00164 #include <CL/opencl.h> 00165 #endif // !__APPLE__ 00166 00167 #if !defined(CL_CALLBACK) 00168 #define CL_CALLBACK 00169 #endif //CL_CALLBACK 00170 00171 #include <utility> 00172 #include <limits> 00173 00174 #if !defined(__NO_STD_VECTOR) 00175 #include <vector> 00176 #endif 00177 00178 #if !defined(__NO_STD_STRING) 00179 #include <string> 00180 #endif 00181 00182 #if defined(linux) || defined(__APPLE__) || defined(__MACOSX) 00183 # include <alloca.h> 00184 #endif // linux 00185 00186 #include <cstring> 00187 00188 #if defined(_WIN32) 00189 #include <functional> 00190 #else 00191 #include <tr1/functional> 00192 #endif 00193 00199 namespace cl { 00200 00201 #define __INIT_CL_EXT_FCN_PTR(name) \ 00202 if(!pfn_##name) { \ 00203 pfn_##name = (PFN_##name) \ 00204 clGetExtensionFunctionAddress(#name); \ 00205 if(!pfn_##name) { \ 00206 } \ 00207 } 00208 00209 class Program; 00210 class Device; 00211 class Context; 00212 class CommandQueue; 00213 class Memory; 00214 #define __CL_ENABLE_EXCEPTIONS 00215 #if defined(__CL_ENABLE_EXCEPTIONS) 00216 #include <exception> 00220 class Error : public std::exception 00221 { 00222 private: 00223 cl_int err_; 00224 const char * errStr_; 00225 public: 00229 Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) 00230 {} 00231 00232 ~Error() throw() {} 00233 00238 virtual const char * what() const throw () 00239 { 00240 if (errStr_ == NULL) { 00241 return "empty"; 00242 } 00243 else { 00244 return errStr_; 00245 } 00246 } 00247 00252 cl_int err(void) const { return err_; } 00253 }; 00254 00255 #define __ERR_STR(x) #x 00256 #else 00257 #define __ERR_STR(x) NULL 00258 #endif // __CL_ENABLE_EXCEPTIONS 00259 00261 #if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) 00262 #define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) 00263 #define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) 00264 #define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) 00265 #define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) 00266 #define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) 00267 #define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) 00268 #define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) 00269 #define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) 00270 #define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) 00271 #define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) 00272 #define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) 00273 #define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) 00274 #define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) 00275 #define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) 00276 #define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) 00277 00278 #define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) 00279 #define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) 00280 #define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) 00281 00282 #define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) 00283 #define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) 00284 #define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) 00285 #define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) 00286 #define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) 00287 #define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) 00288 #define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) 00289 #define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) 00290 #define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) 00291 #define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) 00292 #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) 00293 00294 #define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) 00295 #define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) 00296 #define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) 00297 #define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) 00298 00299 #define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) 00300 #define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) 00301 #define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) 00302 #define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) 00303 #define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) 00304 #define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) 00305 00306 #define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) 00307 #define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) 00308 #define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) 00309 #define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) 00310 #define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) 00311 #define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) 00312 #define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) 00313 #define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) 00314 #define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) 00315 #define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) 00316 #define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) 00317 #define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) 00318 #define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) 00319 #define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) 00320 #define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) 00321 #define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) 00322 #define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) 00323 #define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) 00324 #define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) 00325 #define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) 00326 #define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) 00327 #define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) 00328 00329 #define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) 00330 #define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) 00331 00332 #define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) 00333 00334 #define __FLUSH_ERR __ERR_STR(clFlush) 00335 #define __FINISH_ERR __ERR_STR(clFinish) 00336 00337 #define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) 00338 #endif // __CL_USER_OVERRIDE_ERROR_STRINGS 00339 00340 00345 class string 00346 { 00347 private: 00348 ::size_t size_; 00349 char * str_; 00350 public: 00351 string(void) : size_(0), str_(NULL) 00352 { 00353 } 00354 00355 string(char * str, ::size_t size) : 00356 size_(size), 00357 str_(NULL) 00358 { 00359 str_ = new char[size_+1]; 00360 if (str_ != NULL) { 00361 memcpy(str_, str, size_ * sizeof(char)); 00362 str_[size_] = '\0'; 00363 } 00364 else { 00365 size_ = 0; 00366 } 00367 } 00368 00369 string(char * str) : 00370 str_(NULL) 00371 { 00372 size_= ::strlen(str); 00373 str_ = new char[size_ + 1]; 00374 if (str_ != NULL) { 00375 memcpy(str_, str, (size_ + 1) * sizeof(char)); 00376 } 00377 else { 00378 size_ = 0; 00379 } 00380 } 00381 00382 string& operator=(const string& rhs) 00383 { 00384 if (this == &rhs) { 00385 return *this; 00386 } 00387 00388 if (rhs.size_ == 0 || rhs.str_ == NULL) { 00389 size_ = 0; 00390 str_ = NULL; 00391 } 00392 else { 00393 size_ = rhs.size_; 00394 str_ = new char[size_ + 1]; 00395 if (str_ != NULL) { 00396 memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); 00397 } 00398 else { 00399 size_ = 0; 00400 } 00401 } 00402 00403 return *this; 00404 } 00405 00406 string(const string& rhs) 00407 { 00408 *this = rhs; 00409 } 00410 00411 ~string() 00412 { 00413 if (str_ != NULL) { 00414 delete[] str_; 00415 } 00416 } 00417 00418 ::size_t size(void) const { return size_; } 00419 ::size_t length(void) const { return size(); } 00420 00421 const char * c_str(void) const { return (str_) ? str_ : "";} 00422 }; 00423 00424 #if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) 00425 #include <string> 00426 typedef std::string STRING_CLASS; 00427 #elif !defined(__USE_DEV_STRING) 00428 typedef cl::string STRING_CLASS; 00429 #endif 00430 00431 #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) 00432 #include <vector> 00433 #define VECTOR_CLASS std::vector 00434 #elif !defined(__USE_DEV_VECTOR) 00435 #define VECTOR_CLASS cl::vector 00436 #endif 00437 00438 #if !defined(__MAX_DEFAULT_VECTOR_SIZE) 00439 #define __MAX_DEFAULT_VECTOR_SIZE 10 00440 #endif 00441 00446 template <typename T, unsigned int N = __MAX_DEFAULT_VECTOR_SIZE> 00447 class vector 00448 { 00449 private: 00450 T data_[N]; 00451 unsigned int size_; 00452 bool empty_; 00453 public: 00454 vector() : 00455 size_(static_cast<unsigned int>(-1)), 00456 empty_(true) 00457 {} 00458 00459 ~vector() {} 00460 00461 unsigned int size(void) const 00462 { 00463 return size_ + 1; 00464 } 00465 00466 void clear() 00467 { 00468 size_ = -1; 00469 empty_ = true; 00470 } 00471 00472 void push_back (const T& x) 00473 { 00474 if (size() < N) { 00475 size_++; 00476 data_[size_] = x; 00477 empty_ = false; 00478 } 00479 } 00480 00481 void pop_back(void) 00482 { 00483 if (!empty_) { 00484 data_[size_].~T(); 00485 size_--; 00486 if (size_ == -1) { 00487 empty_ = true; 00488 } 00489 } 00490 } 00491 00492 vector(const vector<T, N>& vec) : 00493 size_(vec.size_), 00494 empty_(vec.empty_) 00495 { 00496 if (!empty_) { 00497 memcpy(&data_[0], &vec.data_[0], size() * sizeof(T)); 00498 } 00499 } 00500 00501 vector(unsigned int size, const T& val = T()) : 00502 size_(-1), 00503 empty_(true) 00504 { 00505 for (unsigned int i = 0; i < size; i++) { 00506 push_back(val); 00507 } 00508 } 00509 00510 vector<T, N>& operator=(const vector<T, N>& rhs) 00511 { 00512 if (this == &rhs) { 00513 return *this; 00514 } 00515 00516 size_ = rhs.size_; 00517 empty_ = rhs.empty_; 00518 00519 if (!empty_) { 00520 memcpy(&data_[0], &rhs.data_[0], size() * sizeof(T)); 00521 } 00522 00523 return *this; 00524 } 00525 00526 bool operator==(vector<T,N> &vec) 00527 { 00528 if (empty_ && vec.empty_) { 00529 return true; 00530 } 00531 00532 if (size() != vec.size()) { 00533 return false; 00534 } 00535 00536 return memcmp(&data_[0], &vec.data_[0], size() * sizeof(T)) == 0 ? true : false; 00537 } 00538 00539 operator T* () { return data_; } 00540 operator const T* () const { return data_; } 00541 00542 bool empty (void) const 00543 { 00544 return empty_; 00545 } 00546 00547 unsigned int max_size (void) const 00548 { 00549 return N; 00550 } 00551 00552 unsigned int capacity () const 00553 { 00554 return sizeof(T) * N; 00555 } 00556 00557 T& operator[](int index) 00558 { 00559 return data_[index]; 00560 } 00561 00562 T operator[](int index) const 00563 { 00564 return data_[index]; 00565 } 00566 00567 template<class I> 00568 void assign(I start, I end) 00569 { 00570 clear(); 00571 while(start < end) { 00572 push_back(*start); 00573 start++; 00574 } 00575 } 00576 00580 class iterator 00581 { 00582 private: 00583 vector<T,N> vec_; 00584 int index_; 00585 bool initialized_; 00586 public: 00587 iterator(void) : 00588 index_(-1), 00589 initialized_(false) 00590 { 00591 index_ = -1; 00592 initialized_ = false; 00593 } 00594 00595 ~iterator(void) {} 00596 00597 static iterator begin(vector<T,N> &vec) 00598 { 00599 iterator i; 00600 00601 if (!vec.empty()) { 00602 i.index_ = 0; 00603 } 00604 00605 i.vec_ = vec; 00606 i.initialized_ = true; 00607 return i; 00608 } 00609 00610 static iterator end(vector<T,N> &vec) 00611 { 00612 iterator i; 00613 00614 if (!vec.empty()) { 00615 i.index_ = vec.size(); 00616 } 00617 i.vec_ = vec; 00618 i.initialized_ = true; 00619 return i; 00620 } 00621 00622 bool operator==(iterator i) 00623 { 00624 return ((vec_ == i.vec_) && 00625 (index_ == i.index_) && 00626 (initialized_ == i.initialized_)); 00627 } 00628 00629 bool operator!=(iterator i) 00630 { 00631 return (!(*this==i)); 00632 } 00633 00634 void operator++() 00635 { 00636 index_++; 00637 } 00638 00639 void operator++(int x) 00640 { 00641 index_ += x; 00642 } 00643 00644 void operator--() 00645 { 00646 index_--; 00647 } 00648 00649 void operator--(int x) 00650 { 00651 index_ -= x; 00652 } 00653 00654 T operator *() 00655 { 00656 return vec_[index_]; 00657 } 00658 }; 00659 00660 iterator begin(void) 00661 { 00662 return iterator::begin(*this); 00663 } 00664 00665 iterator end(void) 00666 { 00667 return iterator::end(*this); 00668 } 00669 00670 T& front(void) 00671 { 00672 return data_[0]; 00673 } 00674 00675 T& back(void) 00676 { 00677 return data_[size_]; 00678 } 00679 00680 const T& front(void) const 00681 { 00682 return data_[0]; 00683 } 00684 00685 const T& back(void) const 00686 { 00687 return data_[size_]; 00688 } 00689 }; 00690 00691 namespace detail { 00692 #define __DEFAULT_NOT_INITIALIZED 1 00693 #define __DEFAULT_BEING_INITIALIZED 2 00694 #define __DEFAULT_INITIALIZED 4 00695 00696 /* 00697 * Compare and exchange primitives are needed for handling of defaults 00698 */ 00699 inline int compare_exchange(volatile int * dest, int exchange, int comparand) 00700 { 00701 #ifdef _WIN32 00702 return (int)(InterlockedCompareExchange( 00703 (volatile long*)dest, 00704 (long)exchange, 00705 (long)comparand)); 00706 #elif defined(__APPLE__) || defined(__MACOSX) 00707 return OSAtomicOr32Orig((uint32_t)exchange, (volatile uint32_t*)dest); 00708 #else // !_WIN32 || defined(__APPLE__) || defined(__MACOSX) 00709 return (__sync_val_compare_and_swap( 00710 dest, 00711 comparand, 00712 exchange)); 00713 #endif // !_WIN32 00714 } 00715 }; // namespace detail 00716 00717 00723 template <int N> 00724 struct size_t : public cl::vector< ::size_t, N> { }; 00725 00726 namespace detail { 00727 00728 // GetInfo help struct 00729 template <typename Functor, typename T> 00730 struct GetInfoHelper 00731 { 00732 static cl_int 00733 get(Functor f, cl_uint name, T* param) 00734 { 00735 return f(name, sizeof(T), param, NULL); 00736 } 00737 }; 00738 00739 // Specialized GetInfoHelper for VECTOR_CLASS params 00740 template <typename Func, typename T> 00741 struct GetInfoHelper<Func, VECTOR_CLASS<T> > 00742 { 00743 static cl_int get(Func f, cl_uint name, VECTOR_CLASS<T>* param) 00744 { 00745 ::size_t required; 00746 cl_int err = f(name, 0, NULL, &required); 00747 if (err != CL_SUCCESS) { 00748 return err; 00749 } 00750 00751 T* value = (T*) alloca(required); 00752 err = f(name, required, value, NULL); 00753 if (err != CL_SUCCESS) { 00754 return err; 00755 } 00756 00757 param->assign(&value[0], &value[required/sizeof(T)]); 00758 return CL_SUCCESS; 00759 } 00760 }; 00761 00762 // Specialized for getInfo<CL_PROGRAM_BINARIES> 00763 template <typename Func> 00764 struct GetInfoHelper<Func, VECTOR_CLASS<char *> > 00765 { 00766 static cl_int 00767 get(Func f, cl_uint name, VECTOR_CLASS<char *>* param) 00768 { 00769 ::size_t nDevices; 00770 ::size_t * binary_sizes; 00771 char ** values; 00772 00773 cl_int err = f(CL_PROGRAM_NUM_DEVICES, sizeof(nDevices), &nDevices, NULL); 00774 if (err != CL_SUCCESS) { 00775 return err; 00776 } 00777 00778 binary_sizes = (::size_t*)alloca(sizeof(::size_t)*nDevices); 00779 err = f(CL_PROGRAM_BINARY_SIZES, sizeof(::size_t)*nDevices, binary_sizes, NULL); 00780 if (err != CL_SUCCESS) { 00781 return err; 00782 } 00783 00784 values = (char **) alloca(sizeof(char*)*nDevices); 00785 for(cl_uint i = 0; i < nDevices; i++ ) 00786 { 00787 if( binary_sizes[i] != 0 ) 00788 { 00789 values[i]= (char *)alloca( sizeof(char)*binary_sizes[i]); 00790 } 00791 else 00792 { 00793 values[i] = NULL; 00794 } 00795 } 00796 err = f(name, sizeof(char *)*nDevices, values, NULL); 00797 if (err != CL_SUCCESS) { 00798 return err; 00799 } 00800 00801 param->assign(values,values+nDevices); 00802 return CL_SUCCESS; 00803 } 00804 }; 00805 00806 // Specialized GetInfoHelper for STRING_CLASS params 00807 template <typename Func> 00808 struct GetInfoHelper<Func, STRING_CLASS> 00809 { 00810 static cl_int get(Func f, cl_uint name, STRING_CLASS* param) 00811 { 00812 ::size_t required; 00813 cl_int err = f(name, 0, NULL, &required); 00814 if (err != CL_SUCCESS) { 00815 return err; 00816 } 00817 00818 char* value = (char*) alloca(required); 00819 err = f(name, required, value, NULL); 00820 if (err != CL_SUCCESS) { 00821 return err; 00822 } 00823 00824 *param = value; 00825 return CL_SUCCESS; 00826 } 00827 }; 00828 00829 // Specialized GetInfoHelper for cl::size_t params 00830 template <typename Func, ::size_t N> 00831 struct GetInfoHelper<Func, size_t<N> > 00832 { 00833 static cl_int get(Func f, cl_uint name, size_t<N>* param) 00834 { 00835 ::size_t required; 00836 cl_int err = f(name, 0, NULL, &required); 00837 if (err != CL_SUCCESS) { 00838 return err; 00839 } 00840 00841 ::size_t* value = (::size_t*) alloca(required); 00842 err = f(name, required, value, NULL); 00843 if (err != CL_SUCCESS) { 00844 return err; 00845 } 00846 00847 param->assign(&value[0], &value[required/sizeof(::size_t)]); 00848 return CL_SUCCESS; 00849 } 00850 }; 00851 00852 #define __GET_INFO_HELPER_WITH_RETAIN(CPP_TYPE) \ 00853 namespace detail { \ 00854 template <typename Func> \ 00855 struct GetInfoHelper<Func, CPP_TYPE> \ 00856 { \ 00857 static cl_int get(Func f, cl_uint name, CPP_TYPE* param) \ 00858 { \ 00859 cl_uint err = f(name, sizeof(CPP_TYPE), param, NULL); \ 00860 if (err != CL_SUCCESS) { \ 00861 return err; \ 00862 } \ 00863 \ 00864 return ReferenceHandler<CPP_TYPE::cl_type>::retain((*param)()); \ 00865 } \ 00866 }; \ 00867 } 00868 00869 00870 #define __PARAM_NAME_INFO_1_0(F) \ 00871 F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ 00872 F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ 00873 F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ 00874 F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ 00875 F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ 00876 \ 00877 F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ 00878 F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ 00879 F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ 00880 F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ 00881 F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ 00882 F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ 00883 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ 00884 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ 00885 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ 00886 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ 00887 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ 00888 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ 00889 F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ 00890 F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ 00891 F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ 00892 F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ 00893 F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ 00894 F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ 00895 F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ 00896 F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ 00897 F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ 00898 F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ 00899 F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ 00900 F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ 00901 F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ 00902 F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ 00903 F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ 00904 F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ 00905 F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ 00906 F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ 00907 F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ 00908 F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ 00909 F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ 00910 F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ 00911 F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ 00912 F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ 00913 F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ 00914 F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ 00915 F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ 00916 F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ 00917 F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ 00918 F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ 00919 F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ 00920 F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ 00921 F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ 00922 F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ 00923 F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ 00924 F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ 00925 F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ 00926 F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ 00927 \ 00928 F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ 00929 F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS<Device>) \ 00930 F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS<cl_context_properties>) \ 00931 \ 00932 F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ 00933 F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ 00934 F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ 00935 F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_uint) \ 00936 \ 00937 F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ 00938 F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ 00939 F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ 00940 F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ 00941 \ 00942 F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ 00943 F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ 00944 F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ 00945 F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ 00946 F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ 00947 F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ 00948 F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ 00949 \ 00950 F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ 00951 F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ 00952 F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ 00953 F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ 00954 F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ 00955 F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ 00956 F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ 00957 \ 00958 F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ 00959 F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ 00960 F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_addressing_mode) \ 00961 F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_filter_mode) \ 00962 F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_bool) \ 00963 \ 00964 F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ 00965 F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ 00966 F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ 00967 F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS<cl_device_id>) \ 00968 F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ 00969 F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ 00970 F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS<char *>) \ 00971 \ 00972 F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ 00973 F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ 00974 F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ 00975 \ 00976 F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ 00977 F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ 00978 F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ 00979 F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ 00980 F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ 00981 \ 00982 F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ 00983 F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ 00984 F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ 00985 \ 00986 F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ 00987 F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ 00988 F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ 00989 F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) 00990 00991 #if defined(CL_VERSION_1_1) 00992 #define __PARAM_NAME_INFO_1_1(F) \ 00993 F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ 00994 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ 00995 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ 00996 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ 00997 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ 00998 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ 00999 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ 01000 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ 01001 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ 01002 F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ 01003 F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ 01004 F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ 01005 F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ 01006 \ 01007 F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ 01008 F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ 01009 \ 01010 F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ 01011 F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ 01012 \ 01013 F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) 01014 #endif // CL_VERSION_1_1 01015 01016 #if defined(USE_CL_DEVICE_FISSION) 01017 #define __PARAM_NAME_DEVICE_FISSION(F) \ 01018 F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ 01019 F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS<cl_device_partition_property_ext>) \ 01020 F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS<cl_device_partition_property_ext>) \ 01021 F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ 01022 F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS<cl_device_partition_property_ext>) 01023 #endif // USE_CL_DEVICE_FISSION 01024 01025 template <typename enum_type, cl_int Name> 01026 struct param_traits {}; 01027 01028 #define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ 01029 struct token; \ 01030 template<> \ 01031 struct param_traits<detail:: token,param_name> \ 01032 { \ 01033 enum { value = param_name }; \ 01034 typedef T param_type; \ 01035 }; 01036 01037 __PARAM_NAME_INFO_1_0(__CL_DECLARE_PARAM_TRAITS) 01038 #if defined(CL_VERSION_1_1) 01039 __PARAM_NAME_INFO_1_1(__CL_DECLARE_PARAM_TRAITS) 01040 #endif // CL_VERSION_1_1 01041 01042 #if defined(USE_CL_DEVICE_FISSION) 01043 __PARAM_NAME_DEVICE_FISSION(__CL_DECLARE_PARAM_TRAITS); 01044 #endif // USE_CL_DEVICE_FISSION 01045 01046 #ifdef CL_PLATFORM_ICD_SUFFIX_KHR 01047 __CL_DECLARE_PARAM_TRAITS(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, STRING_CLASS) 01048 #endif 01049 01050 #ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 01051 __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, cl_ulong) 01052 #endif 01053 01054 #ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 01055 __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint) 01056 #endif 01057 #ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 01058 __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV, cl_uint) 01059 #endif 01060 #ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV 01061 __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_REGISTERS_PER_BLOCK_NV, cl_uint) 01062 #endif 01063 #ifdef CL_DEVICE_WARP_SIZE_NV 01064 __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_WARP_SIZE_NV, cl_uint) 01065 #endif 01066 #ifdef CL_DEVICE_GPU_OVERLAP_NV 01067 __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GPU_OVERLAP_NV, cl_bool) 01068 #endif 01069 #ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 01070 __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV, cl_bool) 01071 #endif 01072 #ifdef CL_DEVICE_INTEGRATED_MEMORY_NV 01073 __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_bool) 01074 #endif 01075 01076 // Convenience functions 01077 01078 template <typename Func, typename T> 01079 inline cl_int 01080 getInfo(Func f, cl_uint name, T* param) 01081 { 01082 return GetInfoHelper<Func, T>::get(f, name, param); 01083 } 01084 01085 template <typename Func, typename Arg0> 01086 struct GetInfoFunctor0 01087 { 01088 Func f_; const Arg0& arg0_; 01089 cl_int operator ()( 01090 cl_uint param, ::size_t size, void* value, ::size_t* size_ret) 01091 { return f_(arg0_, param, size, value, size_ret); } 01092 }; 01093 01094 template <typename Func, typename Arg0, typename Arg1> 01095 struct GetInfoFunctor1 01096 { 01097 Func f_; const Arg0& arg0_; const Arg1& arg1_; 01098 cl_int operator ()( 01099 cl_uint param, ::size_t size, void* value, ::size_t* size_ret) 01100 { return f_(arg0_, arg1_, param, size, value, size_ret); } 01101 }; 01102 01103 template <typename Func, typename Arg0, typename T> 01104 inline cl_int 01105 getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) 01106 { 01107 GetInfoFunctor0<Func, Arg0> f0 = { f, arg0 }; 01108 return GetInfoHelper<GetInfoFunctor0<Func, Arg0>, T> 01109 ::get(f0, name, param); 01110 } 01111 01112 template <typename Func, typename Arg0, typename Arg1, typename T> 01113 inline cl_int 01114 getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) 01115 { 01116 GetInfoFunctor1<Func, Arg0, Arg1> f0 = { f, arg0, arg1 }; 01117 return GetInfoHelper<GetInfoFunctor1<Func, Arg0, Arg1>, T> 01118 ::get(f0, name, param); 01119 } 01120 01121 template<typename T> 01122 struct ReferenceHandler 01123 { }; 01124 01125 template <> 01126 struct ReferenceHandler<cl_device_id> 01127 { 01128 // cl_device_id does not have retain(). 01129 static cl_int retain(cl_device_id) 01130 { return CL_INVALID_DEVICE; } 01131 // cl_device_id does not have release(). 01132 static cl_int release(cl_device_id) 01133 { return CL_INVALID_DEVICE; } 01134 }; 01135 01136 template <> 01137 struct ReferenceHandler<cl_platform_id> 01138 { 01139 // cl_platform_id does not have retain(). 01140 static cl_int retain(cl_platform_id) 01141 { return CL_INVALID_PLATFORM; } 01142 // cl_platform_id does not have release(). 01143 static cl_int release(cl_platform_id) 01144 { return CL_INVALID_PLATFORM; } 01145 }; 01146 01147 template <> 01148 struct ReferenceHandler<cl_context> 01149 { 01150 static cl_int retain(cl_context context) 01151 { return ::clRetainContext(context); } 01152 static cl_int release(cl_context context) 01153 { return ::clReleaseContext(context); } 01154 }; 01155 01156 template <> 01157 struct ReferenceHandler<cl_command_queue> 01158 { 01159 static cl_int retain(cl_command_queue queue) 01160 { return ::clRetainCommandQueue(queue); } 01161 static cl_int release(cl_command_queue queue) 01162 { return ::clReleaseCommandQueue(queue); } 01163 }; 01164 01165 template <> 01166 struct ReferenceHandler<cl_mem> 01167 { 01168 static cl_int retain(cl_mem memory) 01169 { return ::clRetainMemObject(memory); } 01170 static cl_int release(cl_mem memory) 01171 { return ::clReleaseMemObject(memory); } 01172 }; 01173 01174 template <> 01175 struct ReferenceHandler<cl_sampler> 01176 { 01177 static cl_int retain(cl_sampler sampler) 01178 { return ::clRetainSampler(sampler); } 01179 static cl_int release(cl_sampler sampler) 01180 { return ::clReleaseSampler(sampler); } 01181 }; 01182 01183 template <> 01184 struct ReferenceHandler<cl_program> 01185 { 01186 static cl_int retain(cl_program program) 01187 { return ::clRetainProgram(program); } 01188 static cl_int release(cl_program program) 01189 { return ::clReleaseProgram(program); } 01190 }; 01191 01192 template <> 01193 struct ReferenceHandler<cl_kernel> 01194 { 01195 static cl_int retain(cl_kernel kernel) 01196 { return ::clRetainKernel(kernel); } 01197 static cl_int release(cl_kernel kernel) 01198 { return ::clReleaseKernel(kernel); } 01199 }; 01200 01201 template <> 01202 struct ReferenceHandler<cl_event> 01203 { 01204 static cl_int retain(cl_event event) 01205 { return ::clRetainEvent(event); } 01206 static cl_int release(cl_event event) 01207 { return ::clReleaseEvent(event); } 01208 }; 01209 01210 template <typename T> 01211 class Wrapper 01212 { 01213 public: 01214 typedef T cl_type; 01215 01216 protected: 01217 cl_type object_; 01218 01219 public: 01220 Wrapper() : object_(NULL) { } 01221 01222 Wrapper(const cl_type &obj) : object_(obj) { } 01223 01224 ~Wrapper() 01225 { 01226 if (object_ != NULL) { release(); } 01227 } 01228 01229 Wrapper(const Wrapper<cl_type>& rhs) 01230 { 01231 object_ = rhs.object_; 01232 if (object_ != NULL) { retain(); } 01233 } 01234 01235 Wrapper<cl_type>& operator = (const Wrapper<cl_type>& rhs) 01236 { 01237 if (object_ != NULL) { release(); } 01238 object_ = rhs.object_; 01239 if (object_ != NULL) { retain(); } 01240 return *this; 01241 } 01242 01243 Wrapper<cl_type>& operator = (const cl_type &rhs) 01244 { 01245 if (object_ != NULL) { release(); } 01246 object_ = rhs; 01247 return *this; 01248 } 01249 01250 cl_type operator ()() const { return object_; } 01251 01252 cl_type& operator ()() { return object_; } 01253 01254 protected: 01255 01256 cl_int retain() const 01257 { 01258 return ReferenceHandler<cl_type>::retain(object_); 01259 } 01260 01261 cl_int release() const 01262 { 01263 return ReferenceHandler<cl_type>::release(object_); 01264 } 01265 }; 01266 01267 #if defined(__CL_ENABLE_EXCEPTIONS) 01268 static inline cl_int errHandler ( 01269 cl_int err, 01270 const char * errStr = NULL) throw(Error) 01271 { 01272 if (err != CL_SUCCESS) { 01273 throw Error(err, errStr); 01274 } 01275 return err; 01276 } 01277 #else 01278 static inline cl_int errHandler (cl_int err, const char * errStr = NULL) 01279 { 01280 return err; 01281 } 01282 #endif // __CL_ENABLE_EXCEPTIONS 01283 01284 } // namespace detail 01286 01290 struct ImageFormat : public cl_image_format 01291 { 01292 ImageFormat(){} 01293 01294 ImageFormat(cl_channel_order order, cl_channel_type type) 01295 { 01296 image_channel_order = order; 01297 image_channel_data_type = type; 01298 } 01299 01300 ImageFormat& operator = (const ImageFormat& rhs) 01301 { 01302 if (this != &rhs) { 01303 this->image_channel_data_type = rhs.image_channel_data_type; 01304 this->image_channel_order = rhs.image_channel_order; 01305 } 01306 return *this; 01307 } 01308 }; 01309 01313 class Device : public detail::Wrapper<cl_device_id> 01314 { 01315 public: 01316 Device() : detail::Wrapper<cl_type>() { } 01317 01318 Device(const Device& device) : detail::Wrapper<cl_type>(device) { } 01319 01320 Device(const cl_device_id &device) : detail::Wrapper<cl_type>(device) { } 01321 01322 static Device getDefault(cl_int * err = NULL); 01323 01324 Device& operator = (const Device& rhs) 01325 { 01326 if (this != &rhs) { 01327 detail::Wrapper<cl_type>::operator=(rhs); 01328 } 01329 return *this; 01330 } 01331 01332 Device& operator = (const cl_device_id& rhs) 01333 { 01334 detail::Wrapper<cl_type>::operator=(rhs); 01335 return *this; 01336 } 01337 01338 template <typename T> 01339 cl_int getInfo(cl_device_info name, T* param) const 01340 { 01341 return detail::errHandler( 01342 detail::getInfo(&::clGetDeviceInfo, object_, name, param), 01343 __GET_DEVICE_INFO_ERR); 01344 } 01345 01346 template <cl_int name> typename 01347 detail::param_traits<detail::cl_device_info, name>::param_type 01348 getInfo(cl_int* err = NULL) const 01349 { 01350 typename detail::param_traits< 01351 detail::cl_device_info, name>::param_type param; 01352 cl_int result = getInfo(name, ¶m); 01353 if (err != NULL) { 01354 *err = result; 01355 } 01356 return param; 01357 } 01358 01359 #if defined(USE_CL_DEVICE_FISSION) 01360 cl_int createSubDevices( 01361 const cl_device_partition_property_ext * properties, 01362 VECTOR_CLASS<Device>* devices) 01363 { 01364 typedef CL_API_ENTRY cl_int 01365 ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( 01366 cl_device_id /*in_device*/, 01367 const cl_device_partition_property_ext * /* properties */, 01368 cl_uint /*num_entries*/, 01369 cl_device_id * /*out_devices*/, 01370 cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; 01371 01372 static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; 01373 __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); 01374 01375 cl_uint n = 0; 01376 cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); 01377 if (err != CL_SUCCESS) { 01378 return detail::errHandler(err, __CREATE_SUB_DEVICES); 01379 } 01380 01381 cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); 01382 err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); 01383 if (err != CL_SUCCESS) { 01384 return detail::errHandler(err, __CREATE_SUB_DEVICES); 01385 } 01386 01387 devices->assign(&ids[0], &ids[n]); 01388 return CL_SUCCESS; 01389 } 01390 #endif 01391 }; 01392 01396 class Platform : public detail::Wrapper<cl_platform_id> 01397 { 01398 public: 01399 static const Platform null(); 01400 01401 Platform() : detail::Wrapper<cl_type>() { } 01402 01403 Platform(const Platform& platform) : detail::Wrapper<cl_type>(platform) { } 01404 01405 Platform(const cl_platform_id &platform) : detail::Wrapper<cl_type>(platform) { } 01406 01407 Platform& operator = (const Platform& rhs) 01408 { 01409 if (this != &rhs) { 01410 detail::Wrapper<cl_type>::operator=(rhs); 01411 } 01412 return *this; 01413 } 01414 01415 Platform& operator = (const cl_platform_id& rhs) 01416 { 01417 detail::Wrapper<cl_type>::operator=(rhs); 01418 return *this; 01419 } 01420 01421 cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const 01422 { 01423 return detail::errHandler( 01424 detail::getInfo(&::clGetPlatformInfo, object_, name, param), 01425 __GET_PLATFORM_INFO_ERR); 01426 } 01427 01428 template <cl_int name> typename 01429 detail::param_traits<detail::cl_platform_info, name>::param_type 01430 getInfo(cl_int* err = NULL) const 01431 { 01432 typename detail::param_traits< 01433 detail::cl_platform_info, name>::param_type param; 01434 cl_int result = getInfo(name, ¶m); 01435 if (err != NULL) { 01436 *err = result; 01437 } 01438 return param; 01439 } 01440 01441 cl_int getDevices( 01442 cl_device_type type, 01443 VECTOR_CLASS<Device>* devices) const 01444 { 01445 cl_uint n = 0; 01446 cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); 01447 if (err != CL_SUCCESS) { 01448 return detail::errHandler(err, __GET_DEVICE_IDS_ERR); 01449 } 01450 01451 cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); 01452 err = ::clGetDeviceIDs(object_, type, n, ids, NULL); 01453 if (err != CL_SUCCESS) { 01454 return detail::errHandler(err, __GET_DEVICE_IDS_ERR); 01455 } 01456 01457 devices->assign(&ids[0], &ids[n]); 01458 return CL_SUCCESS; 01459 } 01460 01461 #if defined(USE_DX_INTEROP) 01462 01485 cl_int getDevices( 01486 cl_d3d10_device_source_khr d3d_device_source, 01487 void * d3d_object, 01488 cl_d3d10_device_set_khr d3d_device_set, 01489 VECTOR_CLASS<Device>* devices) const 01490 { 01491 typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( 01492 cl_platform_id platform, 01493 cl_d3d10_device_source_khr d3d_device_source, 01494 void * d3d_object, 01495 cl_d3d10_device_set_khr d3d_device_set, 01496 cl_uint num_entries, 01497 cl_device_id * devices, 01498 cl_uint* num_devices); 01499 01500 static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; 01501 __INIT_CL_EXT_FCN_PTR(clGetDeviceIDsFromD3D10KHR); 01502 01503 cl_uint n = 0; 01504 cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( 01505 object_, 01506 d3d_device_source, 01507 d3d_object, 01508 d3d_device_set, 01509 0, 01510 NULL, 01511 &n); 01512 if (err != CL_SUCCESS) { 01513 return detail::errHandler(err, __GET_DEVICE_IDS_ERR); 01514 } 01515 01516 cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); 01517 err = pfn_clGetDeviceIDsFromD3D10KHR( 01518 object_, 01519 d3d_device_source, 01520 d3d_object, 01521 d3d_device_set, 01522 n, 01523 ids, 01524 NULL); 01525 if (err != CL_SUCCESS) { 01526 return detail::errHandler(err, __GET_DEVICE_IDS_ERR); 01527 } 01528 01529 devices->assign(&ids[0], &ids[n]); 01530 return CL_SUCCESS; 01531 } 01532 #endif 01533 01534 static cl_int get( 01535 VECTOR_CLASS<Platform>* platforms) 01536 { 01537 cl_uint n = 0; 01538 cl_int err = ::clGetPlatformIDs(0, NULL, &n); 01539 if (err != CL_SUCCESS) { 01540 return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); 01541 } 01542 01543 cl_platform_id* ids = (cl_platform_id*) alloca( 01544 n * sizeof(cl_platform_id)); 01545 err = ::clGetPlatformIDs(n, ids, NULL); 01546 if (err != CL_SUCCESS) { 01547 return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); 01548 } 01549 01550 platforms->assign(&ids[0], &ids[n]); 01551 return CL_SUCCESS; 01552 } 01553 01554 static cl_int get( 01555 Platform * platform) 01556 { 01557 cl_uint n = 0; 01558 cl_int err = ::clGetPlatformIDs(0, NULL, &n); 01559 if (err != CL_SUCCESS) { 01560 return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); 01561 } 01562 01563 cl_platform_id* ids = (cl_platform_id*) alloca( 01564 n * sizeof(cl_platform_id)); 01565 err = ::clGetPlatformIDs(n, ids, NULL); 01566 if (err != CL_SUCCESS) { 01567 return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); 01568 } 01569 01570 *platform = ids[0]; 01571 return CL_SUCCESS; 01572 } 01573 01574 static Platform get( 01575 cl_int * errResult = NULL) 01576 { 01577 Platform platform; 01578 cl_uint n = 0; 01579 cl_int err = ::clGetPlatformIDs(0, NULL, &n); 01580 if (err != CL_SUCCESS) { 01581 detail::errHandler(err, __GET_PLATFORM_IDS_ERR); 01582 if (errResult != NULL) { 01583 *errResult = err; 01584 } 01585 } 01586 01587 cl_platform_id* ids = (cl_platform_id*) alloca( 01588 n * sizeof(cl_platform_id)); 01589 err = ::clGetPlatformIDs(n, ids, NULL); 01590 01591 if (err != CL_SUCCESS) { 01592 detail::errHandler(err, __GET_PLATFORM_IDS_ERR); 01593 } 01594 01595 if (errResult != NULL) { 01596 *errResult = err; 01597 } 01598 01599 return ids[0]; 01600 } 01601 }; 01602 01603 static inline cl_int 01604 UnloadCompiler() 01605 { 01606 return ::clUnloadCompiler(); 01607 } 01608 01609 class Context : public detail::Wrapper<cl_context> 01610 { 01611 private: 01612 static volatile int default_initialized_; 01613 static Context default_; 01614 static volatile cl_int default_error_; 01615 public: 01616 Context( 01617 const VECTOR_CLASS<Device>& devices, 01618 cl_context_properties* properties = NULL, 01619 void (CL_CALLBACK * notifyFptr)( 01620 const char *, 01621 const void *, 01622 ::size_t, 01623 void *) = NULL, 01624 void* data = NULL, 01625 cl_int* err = NULL) 01626 { 01627 cl_int error; 01628 object_ = ::clCreateContext( 01629 properties, (cl_uint) devices.size(), 01630 (cl_device_id*) &devices.front(), 01631 notifyFptr, data, &error); 01632 01633 detail::errHandler(error, __CREATE_CONTEXT_ERR); 01634 if (err != NULL) { 01635 *err = error; 01636 } 01637 } 01638 01639 Context( 01640 cl_device_type type, 01641 cl_context_properties* properties = NULL, 01642 void (CL_CALLBACK * notifyFptr)( 01643 const char *, 01644 const void *, 01645 ::size_t, 01646 void *) = NULL, 01647 void* data = NULL, 01648 cl_int* err = NULL) 01649 { 01650 cl_int error; 01651 01652 #if !defined(__APPLE__) || !defined(__MACOS) 01653 cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; 01654 if (properties == NULL) { 01655 prop[1] = (cl_context_properties)Platform::get(&error)(); 01656 if (error != CL_SUCCESS) { 01657 detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); 01658 if (err != NULL) { 01659 *err = error; 01660 return; 01661 } 01662 } 01663 01664 properties = &prop[0]; 01665 } 01666 #endif 01667 object_ = ::clCreateContextFromType( 01668 properties, type, notifyFptr, data, &error); 01669 01670 detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); 01671 if (err != NULL) { 01672 *err = error; 01673 } 01674 } 01675 01676 static Context getDefault(cl_int * err = NULL) 01677 { 01678 int state = detail::compare_exchange( 01679 &default_initialized_, 01680 __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); 01681 01682 if (state & __DEFAULT_INITIALIZED) { 01683 if (err != NULL) { 01684 *err = default_error_; 01685 } 01686 return default_; 01687 } 01688 01689 if (state & __DEFAULT_BEING_INITIALIZED) { 01690 // Assume writes will propagate eventually... 01691 while(default_initialized_ != __DEFAULT_INITIALIZED) { 01692 ; 01693 } 01694 01695 if (err != NULL) { 01696 *err = default_error_; 01697 } 01698 return default_; 01699 } 01700 01701 cl_int error; 01702 default_ = Context( 01703 CL_DEVICE_TYPE_DEFAULT, 01704 NULL, 01705 NULL, 01706 NULL, 01707 &error); 01708 01709 default_error_ = error; 01710 // Assume writes will propagate eventually... 01711 default_initialized_ = __DEFAULT_INITIALIZED; 01712 if (err != NULL) { 01713 *err = default_error_; 01714 } 01715 return default_; 01716 01717 } 01718 01719 Context() : detail::Wrapper<cl_type>() { } 01720 01721 Context(const Context& context) : detail::Wrapper<cl_type>(context) { } 01722 01723 Context(const cl_context& context) : detail::Wrapper<cl_type>(context) { } 01724 01725 Context& operator = (const Context& rhs) 01726 { 01727 if (this != &rhs) { 01728 detail::Wrapper<cl_type>::operator=(rhs); 01729 } 01730 return *this; 01731 } 01732 01733 Context& operator = (const cl_context& rhs) 01734 { 01735 detail::Wrapper<cl_type>::operator=(rhs); 01736 return *this; 01737 } 01738 01739 template <typename T> 01740 cl_int getInfo(cl_context_info name, T* param) const 01741 { 01742 return detail::errHandler( 01743 detail::getInfo(&::clGetContextInfo, object_, name, param), 01744 __GET_CONTEXT_INFO_ERR); 01745 } 01746 01747 template <cl_int name> typename 01748 detail::param_traits<detail::cl_context_info, name>::param_type 01749 getInfo(cl_int* err = NULL) const 01750 { 01751 typename detail::param_traits< 01752 detail::cl_context_info, name>::param_type param; 01753 cl_int result = getInfo(name, ¶m); 01754 if (err != NULL) { 01755 *err = result; 01756 } 01757 return param; 01758 } 01759 01760 cl_int getSupportedImageFormats( 01761 cl_mem_flags flags, 01762 cl_mem_object_type type, 01763 VECTOR_CLASS<ImageFormat>* formats) const 01764 { 01765 cl_uint numEntries; 01766 cl_int err = ::clGetSupportedImageFormats( 01767 object_, 01768 flags, 01769 type, 01770 0, 01771 NULL, 01772 &numEntries); 01773 if (err != CL_SUCCESS) { 01774 return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); 01775 } 01776 01777 ImageFormat* value = (ImageFormat*) 01778 alloca(numEntries * sizeof(ImageFormat)); 01779 err = ::clGetSupportedImageFormats( 01780 object_, 01781 flags, 01782 type, 01783 numEntries, 01784 (cl_image_format*) value, 01785 NULL); 01786 if (err != CL_SUCCESS) { 01787 return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); 01788 } 01789 01790 formats->assign(&value[0], &value[numEntries]); 01791 return CL_SUCCESS; 01792 } 01793 }; 01794 01795 inline Device Device::getDefault(cl_int * err) 01796 { 01797 cl_int error; 01798 Device device; 01799 01800 Context context = Context::getDefault(&error); 01801 detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); 01802 01803 if (error != CL_SUCCESS) { 01804 if (err != NULL) { 01805 *err = error; 01806 } 01807 } 01808 else { 01809 device = context.getInfo<CL_CONTEXT_DEVICES>()[0]; 01810 if (err != NULL) { 01811 *err = CL_SUCCESS; 01812 } 01813 } 01814 01815 return device; 01816 } 01817 01818 #ifdef _WIN32 01819 __declspec(selectany) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; 01820 __declspec(selectany) Context Context::default_; 01821 __declspec(selectany) volatile cl_int Context::default_error_ = CL_SUCCESS; 01822 #else 01823 __attribute__((weak)) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; 01824 __attribute__((weak)) Context Context::default_; 01825 __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; 01826 #endif 01827 01828 __GET_INFO_HELPER_WITH_RETAIN(cl::Context) 01829 01830 01833 class Event : public detail::Wrapper<cl_event> 01834 { 01835 public: 01836 Event() : detail::Wrapper<cl_type>() { } 01837 01838 Event(const Event& event) : detail::Wrapper<cl_type>(event) { } 01839 01840 Event(const cl_event& event) : detail::Wrapper<cl_type>(event) { } 01841 01842 Event& operator = (const Event& rhs) 01843 { 01844 if (this != &rhs) { 01845 detail::Wrapper<cl_type>::operator=(rhs); 01846 } 01847 return *this; 01848 } 01849 01850 Event& operator = (const cl_event& rhs) 01851 { 01852 detail::Wrapper<cl_type>::operator=(rhs); 01853 return *this; 01854 } 01855 01856 template <typename T> 01857 cl_int getInfo(cl_event_info name, T* param) const 01858 { 01859 return detail::errHandler( 01860 detail::getInfo(&::clGetEventInfo, object_, name, param), 01861 __GET_EVENT_INFO_ERR); 01862 } 01863 01864 template <cl_int name> typename 01865 detail::param_traits<detail::cl_event_info, name>::param_type 01866 getInfo(cl_int* err = NULL) const 01867 { 01868 typename detail::param_traits< 01869 detail::cl_event_info, name>::param_type param; 01870 cl_int result = getInfo(name, ¶m); 01871 if (err != NULL) { 01872 *err = result; 01873 } 01874 return param; 01875 } 01876 01877 template <typename T> 01878 cl_int getProfilingInfo(cl_profiling_info name, T* param) const 01879 { 01880 return detail::errHandler(detail::getInfo( 01881 &::clGetEventProfilingInfo, object_, name, param), 01882 __GET_EVENT_PROFILE_INFO_ERR); 01883 } 01884 01885 template <cl_int name> typename 01886 detail::param_traits<detail::cl_profiling_info, name>::param_type 01887 getProfilingInfo(cl_int* err = NULL) const 01888 { 01889 typename detail::param_traits< 01890 detail::cl_profiling_info, name>::param_type param; 01891 cl_int result = getProfilingInfo(name, ¶m); 01892 if (err != NULL) { 01893 *err = result; 01894 } 01895 return param; 01896 } 01897 01898 cl_int wait() const 01899 { 01900 return detail::errHandler( 01901 ::clWaitForEvents(1, &object_), 01902 __WAIT_FOR_EVENTS_ERR); 01903 } 01904 01905 #if defined(CL_VERSION_1_1) 01906 cl_int setCallback( 01907 cl_int type, 01908 void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), 01909 void * user_data = NULL) 01910 { 01911 return detail::errHandler( 01912 ::clSetEventCallback( 01913 object_, 01914 type, 01915 pfn_notify, 01916 user_data), 01917 __SET_EVENT_CALLBACK_ERR); 01918 } 01919 #endif 01920 01921 static cl_int 01922 waitForEvents(const VECTOR_CLASS<Event>& events) 01923 { 01924 return detail::errHandler( 01925 ::clWaitForEvents( 01926 (cl_uint) events.size(), (cl_event*)&events.front()), 01927 __WAIT_FOR_EVENTS_ERR); 01928 } 01929 }; 01930 01931 __GET_INFO_HELPER_WITH_RETAIN(cl::Event) 01932 01933 #if defined(CL_VERSION_1_1) 01934 01937 class UserEvent : public Event 01938 { 01939 public: 01940 UserEvent( 01941 const Context& context, 01942 cl_int * err = NULL) 01943 { 01944 cl_int error; 01945 object_ = ::clCreateUserEvent( 01946 context(), 01947 &error); 01948 01949 detail::errHandler(error, __CREATE_USER_EVENT_ERR); 01950 if (err != NULL) { 01951 *err = error; 01952 } 01953 } 01954 01955 UserEvent() : Event() { } 01956 01957 UserEvent(const UserEvent& event) : Event(event) { } 01958 01959 UserEvent& operator = (const UserEvent& rhs) 01960 { 01961 if (this != &rhs) { 01962 Event::operator=(rhs); 01963 } 01964 return *this; 01965 } 01966 01967 cl_int setStatus(cl_int status) 01968 { 01969 return detail::errHandler( 01970 ::clSetUserEventStatus(object_,status), 01971 __SET_USER_EVENT_STATUS_ERR); 01972 } 01973 }; 01974 #endif 01975 01976 inline static cl_int 01977 WaitForEvents(const VECTOR_CLASS<Event>& events) 01978 { 01979 return detail::errHandler( 01980 ::clWaitForEvents( 01981 (cl_uint) events.size(), (cl_event*)&events.front()), 01982 __WAIT_FOR_EVENTS_ERR); 01983 } 01984 01988 class Memory : public detail::Wrapper<cl_mem> 01989 { 01990 public: 01991 Memory() : detail::Wrapper<cl_type>() { } 01992 01993 Memory(const Memory& memory) : detail::Wrapper<cl_type>(memory) { } 01994 01995 Memory(const cl_mem& memory) : detail::Wrapper<cl_type>(memory) { } 01996 01997 Memory& operator = (const Memory& rhs) 01998 { 01999 if (this != &rhs) { 02000 detail::Wrapper<cl_type>::operator=(rhs); 02001 } 02002 return *this; 02003 } 02004 02005 Memory& operator = (const cl_mem& rhs) 02006 { 02007 detail::Wrapper<cl_type>::operator=(rhs); 02008 return *this; 02009 } 02010 02011 template <typename T> 02012 cl_int getInfo(cl_mem_info name, T* param) const 02013 { 02014 return detail::errHandler( 02015 detail::getInfo(&::clGetMemObjectInfo, object_, name, param), 02016 __GET_MEM_OBJECT_INFO_ERR); 02017 } 02018 02019 template <cl_int name> typename 02020 detail::param_traits<detail::cl_mem_info, name>::param_type 02021 getInfo(cl_int* err = NULL) const 02022 { 02023 typename detail::param_traits< 02024 detail::cl_mem_info, name>::param_type param; 02025 cl_int result = getInfo(name, ¶m); 02026 if (err != NULL) { 02027 *err = result; 02028 } 02029 return param; 02030 } 02031 02032 #if defined(CL_VERSION_1_1) 02033 cl_int setDestructorCallback( 02034 void (CL_CALLBACK * pfn_notify)(cl_mem, void *), 02035 void * user_data = NULL) 02036 { 02037 return detail::errHandler( 02038 ::clSetMemObjectDestructorCallback( 02039 object_, 02040 pfn_notify, 02041 user_data), 02042 __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); 02043 } 02044 #endif 02045 02046 }; 02047 02048 __GET_INFO_HELPER_WITH_RETAIN(cl::Memory) 02049 02050 02053 class Buffer : public Memory 02054 { 02055 public: 02056 Buffer( 02057 const Context& context, 02058 cl_mem_flags flags, 02059 ::size_t size, 02060 void* host_ptr = NULL, 02061 cl_int* err = NULL) 02062 { 02063 cl_int error; 02064 object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); 02065 02066 detail::errHandler(error, __CREATE_BUFFER_ERR); 02067 if (err != NULL) { 02068 *err = error; 02069 } 02070 } 02071 02072 Buffer( 02073 cl_mem_flags flags, 02074 ::size_t size, 02075 void* host_ptr = NULL, 02076 cl_int* err = NULL) 02077 { 02078 cl_int error; 02079 02080 Context context = Context::getDefault(err); 02081 02082 object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); 02083 02084 detail::errHandler(error, __CREATE_BUFFER_ERR); 02085 if (err != NULL) { 02086 *err = error; 02087 } 02088 } 02089 02090 02091 Buffer() : Memory() { } 02092 02093 Buffer(const Buffer& buffer) : Memory(buffer) { } 02094 02095 Buffer(const cl_mem& buffer) : Memory(buffer) { } 02096 02097 Buffer& operator = (const Buffer& rhs) 02098 { 02099 if (this != &rhs) { 02100 Memory::operator=(rhs); 02101 } 02102 return *this; 02103 } 02104 02105 Buffer& operator = (const cl_mem& rhs) 02106 { 02107 Memory::operator=(rhs); 02108 return *this; 02109 } 02110 02111 #if defined(CL_VERSION_1_1) 02112 Buffer createSubBuffer( 02113 cl_mem_flags flags, 02114 cl_buffer_create_type buffer_create_type, 02115 const void * buffer_create_info, 02116 cl_int * err = NULL) 02117 { 02118 Buffer result; 02119 cl_int error; 02120 result.object_ = ::clCreateSubBuffer( 02121 object_, 02122 flags, 02123 buffer_create_type, 02124 buffer_create_info, 02125 &error); 02126 02127 detail::errHandler(error, __CREATE_SUBBUFFER_ERR); 02128 if (err != NULL) { 02129 *err = error; 02130 } 02131 02132 return result; 02133 } 02134 #endif 02135 }; 02136 02137 #if defined (USE_DX_INTEROP) 02138 class BufferD3D10 : public Buffer 02139 { 02140 public: 02141 typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( 02142 cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, 02143 cl_int* errcode_ret); 02144 02145 BufferD3D10( 02146 const Context& context, 02147 cl_mem_flags flags, 02148 ID3D10Buffer* bufobj, 02149 cl_int * err = NULL) 02150 { 02151 static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; 02152 __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); 02153 02154 cl_int error; 02155 object_ = pfn_clCreateFromD3D10BufferKHR( 02156 context(), 02157 flags, 02158 bufobj, 02159 &error); 02160 02161 detail::errHandler(error, __CREATE_GL_BUFFER_ERR); 02162 if (err != NULL) { 02163 *err = error; 02164 } 02165 } 02166 02167 BufferD3D10() : Buffer() { } 02168 02169 BufferD3D10(const BufferD3D10& buffer) : Buffer(buffer) { } 02170 02171 BufferD3D10(const cl_mem& buffer) : Buffer(buffer) { } 02172 02173 BufferD3D10& operator = (const BufferD3D10& rhs) 02174 { 02175 if (this != &rhs) { 02176 Buffer::operator=(rhs); 02177 } 02178 return *this; 02179 } 02180 02181 BufferD3D10& operator = (const cl_mem& rhs) 02182 { 02183 Buffer::operator=(rhs); 02184 return *this; 02185 } 02186 }; 02187 #endif 02188 02192 class BufferGL : public Buffer 02193 { 02194 public: 02195 BufferGL( 02196 const Context& context, 02197 cl_mem_flags flags, 02198 GLuint bufobj, 02199 cl_int * err = NULL) 02200 { 02201 cl_int error; 02202 object_ = ::clCreateFromGLBuffer( 02203 context(), 02204 flags, 02205 bufobj, 02206 &error); 02207 02208 detail::errHandler(error, __CREATE_GL_BUFFER_ERR); 02209 if (err != NULL) { 02210 *err = error; 02211 } 02212 } 02213 02214 BufferGL() : Buffer() { } 02215 02216 BufferGL(const BufferGL& buffer) : Buffer(buffer) { } 02217 02218 BufferGL(const cl_mem& buffer) : Buffer(buffer) { } 02219 02220 BufferGL& operator = (const BufferGL& rhs) 02221 { 02222 if (this != &rhs) { 02223 Buffer::operator=(rhs); 02224 } 02225 return *this; 02226 } 02227 02228 BufferGL& operator = (const cl_mem& rhs) 02229 { 02230 Buffer::operator=(rhs); 02231 return *this; 02232 } 02233 02234 cl_int getObjectInfo( 02235 cl_gl_object_type *type, 02236 GLuint * gl_object_name) 02237 { 02238 return detail::errHandler( 02239 ::clGetGLObjectInfo(object_,type,gl_object_name), 02240 __GET_GL_OBJECT_INFO_ERR); 02241 } 02242 }; 02243 02247 class BufferRenderGL : public Buffer 02248 { 02249 public: 02250 BufferRenderGL( 02251 const Context& context, 02252 cl_mem_flags flags, 02253 GLuint bufobj, 02254 cl_int * err = NULL) 02255 { 02256 cl_int error; 02257 object_ = ::clCreateFromGLRenderbuffer( 02258 context(), 02259 flags, 02260 bufobj, 02261 &error); 02262 02263 detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); 02264 if (err != NULL) { 02265 *err = error; 02266 } 02267 } 02268 02269 BufferRenderGL() : Buffer() { } 02270 02271 BufferRenderGL(const BufferGL& buffer) : Buffer(buffer) { } 02272 02273 BufferRenderGL(const cl_mem& buffer) : Buffer(buffer) { } 02274 02275 BufferRenderGL& operator = (const BufferRenderGL& rhs) 02276 { 02277 if (this != &rhs) { 02278 Buffer::operator=(rhs); 02279 } 02280 return *this; 02281 } 02282 02283 BufferRenderGL& operator = (const cl_mem& rhs) 02284 { 02285 Buffer::operator=(rhs); 02286 return *this; 02287 } 02288 02289 cl_int getObjectInfo( 02290 cl_gl_object_type *type, 02291 GLuint * gl_object_name) 02292 { 02293 return detail::errHandler( 02294 ::clGetGLObjectInfo(object_,type,gl_object_name), 02295 __GET_GL_OBJECT_INFO_ERR); 02296 } 02297 }; 02298 02302 class Image : public Memory 02303 { 02304 protected: 02305 Image() : Memory() { } 02306 02307 Image(const Image& image) : Memory(image) { } 02308 02309 Image(const cl_mem& image) : Memory(image) { } 02310 02311 Image& operator = (const Image& rhs) 02312 { 02313 if (this != &rhs) { 02314 Memory::operator=(rhs); 02315 } 02316 return *this; 02317 } 02318 02319 Image& operator = (const cl_mem& rhs) 02320 { 02321 Memory::operator=(rhs); 02322 return *this; 02323 } 02324 02325 public: 02326 template <typename T> 02327 cl_int getImageInfo(cl_image_info name, T* param) const 02328 { 02329 return detail::errHandler( 02330 detail::getInfo(&::clGetImageInfo, object_, name, param), 02331 __GET_IMAGE_INFO_ERR); 02332 } 02333 02334 template <cl_int name> typename 02335 detail::param_traits<detail::cl_image_info, name>::param_type 02336 getImageInfo(cl_int* err = NULL) const 02337 { 02338 typename detail::param_traits< 02339 detail::cl_image_info, name>::param_type param; 02340 cl_int result = getImageInfo(name, ¶m); 02341 if (err != NULL) { 02342 *err = result; 02343 } 02344 return param; 02345 } 02346 }; 02347 02351 class Image2D : public Image 02352 { 02353 public: 02354 Image2D( 02355 const Context& context, 02356 cl_mem_flags flags, 02357 ImageFormat format, 02358 ::size_t width, 02359 ::size_t height, 02360 ::size_t row_pitch = 0, 02361 void* host_ptr = NULL, 02362 cl_int* err = NULL) 02363 { 02364 cl_int error; 02365 object_ = ::clCreateImage2D( 02366 context(), flags,&format, width, height, row_pitch, host_ptr, &error); 02367 02368 detail::errHandler(error, __CREATE_IMAGE2D_ERR); 02369 if (err != NULL) { 02370 *err = error; 02371 } 02372 } 02373 02374 Image2D() { } 02375 02376 Image2D(const Image2D& image2D) : Image(image2D) { } 02377 02378 Image2D(const cl_mem& image2D) : Image(image2D) { } 02379 02380 Image2D& operator = (const Image2D& rhs) 02381 { 02382 if (this != &rhs) { 02383 Image::operator=(rhs); 02384 } 02385 return *this; 02386 } 02387 02388 Image2D& operator = (const cl_mem& rhs) 02389 { 02390 Image::operator=(rhs); 02391 return *this; 02392 } 02393 }; 02394 02398 class Image2DGL : public Image2D 02399 { 02400 public: 02401 Image2DGL( 02402 const Context& context, 02403 cl_mem_flags flags, 02404 GLenum target, 02405 GLint miplevel, 02406 GLuint texobj, 02407 cl_int * err = NULL) 02408 { 02409 cl_int error; 02410 object_ = ::clCreateFromGLTexture2D( 02411 context(), 02412 flags, 02413 target, 02414 miplevel, 02415 texobj, 02416 &error); 02417 02418 detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); 02419 if (err != NULL) { 02420 *err = error; 02421 } 02422 } 02423 02424 Image2DGL() : Image2D() { } 02425 02426 Image2DGL(const Image2DGL& image) : Image2D(image) { } 02427 02428 Image2DGL(const cl_mem& image) : Image2D(image) { } 02429 02430 Image2DGL& operator = (const Image2DGL& rhs) 02431 { 02432 if (this != &rhs) { 02433 Image2D::operator=(rhs); 02434 } 02435 return *this; 02436 } 02437 02438 Image2DGL& operator = (const cl_mem& rhs) 02439 { 02440 Image2D::operator=(rhs); 02441 return *this; 02442 } 02443 }; 02444 02448 class Image3D : public Image 02449 { 02450 public: 02451 Image3D( 02452 const Context& context, 02453 cl_mem_flags flags, 02454 ImageFormat format, 02455 ::size_t width, 02456 ::size_t height, 02457 ::size_t depth, 02458 ::size_t row_pitch = 0, 02459 ::size_t slice_pitch = 0, 02460 void* host_ptr = NULL, 02461 cl_int* err = NULL) 02462 { 02463 cl_int error; 02464 object_ = ::clCreateImage3D( 02465 context(), flags, &format, width, height, depth, row_pitch, 02466 slice_pitch, host_ptr, &error); 02467 02468 detail::errHandler(error, __CREATE_IMAGE3D_ERR); 02469 if (err != NULL) { 02470 *err = error; 02471 } 02472 } 02473 02474 Image3D() { } 02475 02476 Image3D(const Image3D& image3D) : Image(image3D) { } 02477 02478 Image3D(const cl_mem& image3D) : Image(image3D) { } 02479 02480 Image3D& operator = (const Image3D& rhs) 02481 { 02482 if (this != &rhs) { 02483 Image::operator=(rhs); 02484 } 02485 return *this; 02486 } 02487 02488 Image3D& operator = (const cl_mem& rhs) 02489 { 02490 Image::operator=(rhs); 02491 return *this; 02492 } 02493 }; 02494 02498 class Image3DGL : public Image3D 02499 { 02500 public: 02501 Image3DGL( 02502 const Context& context, 02503 cl_mem_flags flags, 02504 GLenum target, 02505 GLint miplevel, 02506 GLuint texobj, 02507 cl_int * err = NULL) 02508 { 02509 cl_int error; 02510 object_ = ::clCreateFromGLTexture3D( 02511 context(), 02512 flags, 02513 target, 02514 miplevel, 02515 texobj, 02516 &error); 02517 02518 detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); 02519 if (err != NULL) { 02520 *err = error; 02521 } 02522 } 02523 02524 Image3DGL() : Image3D() { } 02525 02526 Image3DGL(const Image3DGL& image) : Image3D(image) { } 02527 02528 Image3DGL(const cl_mem& image) : Image3D(image) { } 02529 02530 Image3DGL& operator = (const Image3DGL& rhs) 02531 { 02532 if (this != &rhs) { 02533 Image3D::operator=(rhs); 02534 } 02535 return *this; 02536 } 02537 02538 Image3DGL& operator = (const cl_mem& rhs) 02539 { 02540 Image3D::operator=(rhs); 02541 return *this; 02542 } 02543 }; 02544 02548 class Sampler : public detail::Wrapper<cl_sampler> 02549 { 02550 public: 02551 Sampler() { } 02552 02553 Sampler( 02554 const Context& context, 02555 cl_bool normalized_coords, 02556 cl_addressing_mode addressing_mode, 02557 cl_filter_mode filter_mode, 02558 cl_int* err = NULL) 02559 { 02560 cl_int error; 02561 object_ = ::clCreateSampler( 02562 context(), 02563 normalized_coords, 02564 addressing_mode, 02565 filter_mode, 02566 &error); 02567 02568 detail::errHandler(error, __CREATE_SAMPLER_ERR); 02569 if (err != NULL) { 02570 *err = error; 02571 } 02572 } 02573 02574 Sampler(const Sampler& sampler) : detail::Wrapper<cl_type>(sampler) { } 02575 02576 Sampler(const cl_sampler& sampler) : detail::Wrapper<cl_type>(sampler) { } 02577 02578 Sampler& operator = (const Sampler& rhs) 02579 { 02580 if (this != &rhs) { 02581 detail::Wrapper<cl_type>::operator=(rhs); 02582 } 02583 return *this; 02584 } 02585 02586 Sampler& operator = (const cl_sampler& rhs) 02587 { 02588 detail::Wrapper<cl_type>::operator=(rhs); 02589 return *this; 02590 } 02591 02592 template <typename T> 02593 cl_int getInfo(cl_sampler_info name, T* param) const 02594 { 02595 return detail::errHandler( 02596 detail::getInfo(&::clGetSamplerInfo, object_, name, param), 02597 __GET_SAMPLER_INFO_ERR); 02598 } 02599 02600 template <cl_int name> typename 02601 detail::param_traits<detail::cl_sampler_info, name>::param_type 02602 getInfo(cl_int* err = NULL) const 02603 { 02604 typename detail::param_traits< 02605 detail::cl_sampler_info, name>::param_type param; 02606 cl_int result = getInfo(name, ¶m); 02607 if (err != NULL) { 02608 *err = result; 02609 } 02610 return param; 02611 } 02612 }; 02613 02614 __GET_INFO_HELPER_WITH_RETAIN(cl::Sampler) 02615 02616 class Program; 02617 class CommandQueue; 02618 class Kernel; 02619 02623 class NDRange 02624 { 02625 private: 02626 size_t<3> sizes_; 02627 cl_uint dimensions_; 02628 02629 public: 02630 NDRange() 02631 : dimensions_(0) 02632 { } 02633 02634 NDRange(::size_t size0) 02635 : dimensions_(1) 02636 { 02637 sizes_.push_back(size0); 02638 } 02639 02640 NDRange(::size_t size0, ::size_t size1) 02641 : dimensions_(2) 02642 { 02643 sizes_.push_back(size0); 02644 sizes_.push_back(size1); 02645 } 02646 02647 NDRange(::size_t size0, ::size_t size1, ::size_t size2) 02648 : dimensions_(3) 02649 { 02650 sizes_.push_back(size0); 02651 sizes_.push_back(size1); 02652 sizes_.push_back(size2); 02653 } 02654 02655 operator const ::size_t*() const { return (const ::size_t*) sizes_; } 02656 ::size_t dimensions() const { return dimensions_; } 02657 }; 02658 02659 static const NDRange NullRange; 02660 02665 struct LocalSpaceArg 02666 { 02667 ::size_t size_; 02668 }; 02669 02670 namespace detail { 02671 02672 template <typename T> 02673 struct KernelArgumentHandler 02674 { 02675 static ::size_t size(const T&) { return sizeof(T); } 02676 static T* ptr(T& value) { return &value; } 02677 }; 02678 02679 template <> 02680 struct KernelArgumentHandler<LocalSpaceArg> 02681 { 02682 static ::size_t size(const LocalSpaceArg& value) { return value.size_; } 02683 static void* ptr(LocalSpaceArg&) { return NULL; } 02684 }; 02685 02686 } 02688 02689 inline LocalSpaceArg 02690 __local(::size_t size) 02691 { 02692 LocalSpaceArg ret = { size }; 02693 return ret; 02694 } 02695 02696 //class KernelFunctor; 02697 02701 class Kernel : public detail::Wrapper<cl_kernel> 02702 { 02703 public: 02704 inline Kernel(const Program& program, const char* name, cl_int* err = NULL); 02705 02706 Kernel() { } 02707 02708 Kernel(const Kernel& kernel) : detail::Wrapper<cl_type>(kernel) { } 02709 02710 Kernel(const cl_kernel& kernel) : detail::Wrapper<cl_type>(kernel) { } 02711 02712 Kernel& operator = (const Kernel& rhs) 02713 { 02714 if (this != &rhs) { 02715 detail::Wrapper<cl_type>::operator=(rhs); 02716 } 02717 return *this; 02718 } 02719 02720 Kernel& operator = (const cl_kernel& rhs) 02721 { 02722 detail::Wrapper<cl_type>::operator=(rhs); 02723 return *this; 02724 } 02725 02726 template <typename T> 02727 cl_int getInfo(cl_kernel_info name, T* param) const 02728 { 02729 return detail::errHandler( 02730 detail::getInfo(&::clGetKernelInfo, object_, name, param), 02731 __GET_KERNEL_INFO_ERR); 02732 } 02733 02734 template <cl_int name> typename 02735 detail::param_traits<detail::cl_kernel_info, name>::param_type 02736 getInfo(cl_int* err = NULL) const 02737 { 02738 typename detail::param_traits< 02739 detail::cl_kernel_info, name>::param_type param; 02740 cl_int result = getInfo(name, ¶m); 02741 if (err != NULL) { 02742 *err = result; 02743 } 02744 return param; 02745 } 02746 02747 template <typename T> 02748 cl_int getWorkGroupInfo( 02749 const Device& device, cl_kernel_work_group_info name, T* param) const 02750 { 02751 return detail::errHandler( 02752 detail::getInfo( 02753 &::clGetKernelWorkGroupInfo, object_, device(), name, param), 02754 __GET_KERNEL_WORK_GROUP_INFO_ERR); 02755 } 02756 02757 template <cl_int name> typename 02758 detail::param_traits<detail::cl_kernel_work_group_info, name>::param_type 02759 getWorkGroupInfo(const Device& device, cl_int* err = NULL) const 02760 { 02761 typename detail::param_traits< 02762 detail::cl_kernel_work_group_info, name>::param_type param; 02763 cl_int result = getWorkGroupInfo(device, name, ¶m); 02764 if (err != NULL) { 02765 *err = result; 02766 } 02767 return param; 02768 } 02769 02770 template <typename T> 02771 cl_int setArg(cl_uint index, T value) 02772 { 02773 return detail::errHandler( 02774 ::clSetKernelArg( 02775 object_, 02776 index, 02777 detail::KernelArgumentHandler<T>::size(value), 02778 detail::KernelArgumentHandler<T>::ptr(value)), 02779 __SET_KERNEL_ARGS_ERR); 02780 } 02781 02782 cl_int setArg(cl_uint index, ::size_t size, void* argPtr) 02783 { 02784 return detail::errHandler( 02785 ::clSetKernelArg(object_, index, size, argPtr), 02786 __SET_KERNEL_ARGS_ERR); 02787 } 02788 }; 02789 02790 __GET_INFO_HELPER_WITH_RETAIN(cl::Kernel) 02791 02792 02795 class Program : public detail::Wrapper<cl_program> 02796 { 02797 public: 02798 typedef VECTOR_CLASS<std::pair<const void*, ::size_t> > Binaries; 02799 typedef VECTOR_CLASS<std::pair<const char*, ::size_t> > Sources; 02800 02801 Program( 02802 const STRING_CLASS& source, 02803 cl_int* err = NULL) 02804 { 02805 cl_int error; 02806 02807 const char * strings = source.c_str(); 02808 const ::size_t length = source.size(); 02809 02810 Context context = Context::getDefault(err); 02811 02812 object_ = ::clCreateProgramWithSource( 02813 context(), (cl_uint)1, &strings, &length, &error); 02814 02815 detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); 02816 02817 if (error == CL_SUCCESS) { 02818 02819 error = ::clBuildProgram( 02820 object_, 02821 0, 02822 NULL, 02823 "", 02824 NULL, 02825 NULL); 02826 02827 detail::errHandler(error, __BUILD_PROGRAM_ERR); 02828 } 02829 02830 if (err != NULL) { 02831 *err = error; 02832 } 02833 } 02834 02835 Program( 02836 const STRING_CLASS& source, 02837 bool build, 02838 cl_int* err = NULL) 02839 { 02840 cl_int error; 02841 02842 const char * strings = source.c_str(); 02843 const ::size_t length = source.size(); 02844 02845 Context context = Context::getDefault(err); 02846 02847 object_ = ::clCreateProgramWithSource( 02848 context(), (cl_uint)1, &strings, &length, &error); 02849 02850 detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); 02851 02852 if (error == CL_SUCCESS && build) { 02853 02854 error = ::clBuildProgram( 02855 object_, 02856 0, 02857 NULL, 02858 "", 02859 NULL, 02860 NULL); 02861 02862 detail::errHandler(error, __BUILD_PROGRAM_ERR); 02863 } 02864 02865 if (err != NULL) { 02866 *err = error; 02867 } 02868 } 02869 02870 Program( 02871 const Context& context, 02872 const STRING_CLASS& source, 02873 bool build = false, 02874 cl_int* err = NULL) 02875 { 02876 cl_int error; 02877 02878 const char * strings = source.c_str(); 02879 const ::size_t length = source.size(); 02880 02881 object_ = ::clCreateProgramWithSource( 02882 context(), (cl_uint)1, &strings, &length, &error); 02883 02884 detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); 02885 02886 if (error == CL_SUCCESS && build) { 02887 02888 error = ::clBuildProgram( 02889 object_, 02890 0, 02891 NULL, 02892 "", 02893 NULL, 02894 NULL); 02895 02896 detail::errHandler(error, __BUILD_PROGRAM_ERR); 02897 } 02898 02899 if (err != NULL) { 02900 *err = error; 02901 } 02902 } 02903 02904 Program( 02905 const Context& context, 02906 const Sources& sources, 02907 cl_int* err = NULL) 02908 { 02909 cl_int error; 02910 02911 const ::size_t n = (::size_t)sources.size(); 02912 ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); 02913 const char** strings = (const char**) alloca(n * sizeof(const char*)); 02914 02915 for (::size_t i = 0; i < n; ++i) { 02916 strings[i] = sources[(int)i].first; 02917 lengths[i] = sources[(int)i].second; 02918 } 02919 02920 object_ = ::clCreateProgramWithSource( 02921 context(), (cl_uint)n, strings, lengths, &error); 02922 02923 detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); 02924 if (err != NULL) { 02925 *err = error; 02926 } 02927 } 02928 02929 Program( 02930 const Context& context, 02931 const VECTOR_CLASS<Device>& devices, 02932 const Binaries& binaries, 02933 VECTOR_CLASS<cl_int>* binaryStatus = NULL, 02934 cl_int* err = NULL) 02935 { 02936 cl_int error; 02937 const ::size_t n = binaries.size(); 02938 ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); 02939 const unsigned char** images = (const unsigned char**) alloca(n * sizeof(const void*)); 02940 02941 for (::size_t i = 0; i < n; ++i) { 02942 images[i] = (const unsigned char*)binaries[(int)i].first; 02943 lengths[i] = binaries[(int)i].second; 02944 } 02945 02946 object_ = ::clCreateProgramWithBinary( 02947 context(), (cl_uint) devices.size(), 02948 (cl_device_id*)&devices.front(), 02949 lengths, images, binaryStatus != NULL 02950 ? (cl_int*) &binaryStatus->front() 02951 : NULL, &error); 02952 02953 detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); 02954 if (err != NULL) { 02955 *err = error; 02956 } 02957 } 02958 02959 Program() { } 02960 02961 Program(const Program& program) : detail::Wrapper<cl_type>(program) { } 02962 02963 Program(const cl_program& program) : detail::Wrapper<cl_type>(program) { } 02964 02965 Program& operator = (const Program& rhs) 02966 { 02967 if (this != &rhs) { 02968 detail::Wrapper<cl_type>::operator=(rhs); 02969 } 02970 return *this; 02971 } 02972 02973 Program& operator = (const cl_program& rhs) 02974 { 02975 detail::Wrapper<cl_type>::operator=(rhs); 02976 return *this; 02977 } 02978 02979 cl_int build( 02980 const VECTOR_CLASS<Device>& devices, 02981 const char* options = NULL, 02982 void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, 02983 void* data = NULL) const 02984 { 02985 return detail::errHandler( 02986 ::clBuildProgram( 02987 object_, 02988 (cl_uint) 02989 devices.size(), 02990 (cl_device_id*)&devices.front(), 02991 options, 02992 notifyFptr, 02993 data), 02994 __BUILD_PROGRAM_ERR); 02995 } 02996 02997 cl_int build( 02998 const char* options = NULL, 02999 void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, 03000 void* data = NULL) const 03001 { 03002 return detail::errHandler( 03003 ::clBuildProgram( 03004 object_, 03005 0, 03006 NULL, 03007 options, 03008 notifyFptr, 03009 data), 03010 __BUILD_PROGRAM_ERR); 03011 } 03012 03013 template <typename T> 03014 cl_int getInfo(cl_program_info name, T* param) const 03015 { 03016 return detail::errHandler( 03017 detail::getInfo(&::clGetProgramInfo, object_, name, param), 03018 __GET_PROGRAM_INFO_ERR); 03019 } 03020 03021 template <cl_int name> typename 03022 detail::param_traits<detail::cl_program_info, name>::param_type 03023 getInfo(cl_int* err = NULL) const 03024 { 03025 typename detail::param_traits< 03026 detail::cl_program_info, name>::param_type param; 03027 cl_int result = getInfo(name, ¶m); 03028 if (err != NULL) { 03029 *err = result; 03030 } 03031 return param; 03032 } 03033 03034 template <typename T> 03035 cl_int getBuildInfo( 03036 const Device& device, cl_program_build_info name, T* param) const 03037 { 03038 return detail::errHandler( 03039 detail::getInfo( 03040 &::clGetProgramBuildInfo, object_, device(), name, param), 03041 __GET_PROGRAM_BUILD_INFO_ERR); 03042 } 03043 03044 template <cl_int name> typename 03045 detail::param_traits<detail::cl_program_build_info, name>::param_type 03046 getBuildInfo(const Device& device, cl_int* err = NULL) const 03047 { 03048 typename detail::param_traits< 03049 detail::cl_program_build_info, name>::param_type param; 03050 cl_int result = getBuildInfo(device, name, ¶m); 03051 if (err != NULL) { 03052 *err = result; 03053 } 03054 return param; 03055 } 03056 03057 cl_int createKernels(VECTOR_CLASS<Kernel>* kernels) 03058 { 03059 cl_uint numKernels; 03060 cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); 03061 if (err != CL_SUCCESS) { 03062 return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); 03063 } 03064 03065 Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); 03066 err = ::clCreateKernelsInProgram( 03067 object_, numKernels, (cl_kernel*) value, NULL); 03068 if (err != CL_SUCCESS) { 03069 return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); 03070 } 03071 03072 kernels->assign(&value[0], &value[numKernels]); 03073 return CL_SUCCESS; 03074 } 03075 }; 03076 03077 template<> 03078 inline VECTOR_CLASS<char *> cl::Program::getInfo<CL_PROGRAM_BINARIES>(cl_int* err) const 03079 { 03080 VECTOR_CLASS< ::size_t> sizes = getInfo<CL_PROGRAM_BINARY_SIZES>(); 03081 VECTOR_CLASS<char *> binaries; 03082 for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) 03083 { 03084 char *ptr = NULL; 03085 if (*s != 0) 03086 ptr = new char[*s]; 03087 binaries.push_back(ptr); 03088 } 03089 03090 cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); 03091 if (err != NULL) { 03092 *err = result; 03093 } 03094 return binaries; 03095 } 03096 03097 __GET_INFO_HELPER_WITH_RETAIN(cl::Program) 03098 03099 inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) 03100 { 03101 cl_int error; 03102 03103 object_ = ::clCreateKernel(program(), name, &error); 03104 detail::errHandler(error, __CREATE_KERNEL_ERR); 03105 03106 if (err != NULL) { 03107 *err = error; 03108 } 03109 03110 } 03111 03115 class CommandQueue : public detail::Wrapper<cl_command_queue> 03116 { 03117 private: 03118 static volatile int default_initialized_; 03119 static CommandQueue default_; 03120 static volatile cl_int default_error_; 03121 public: 03122 CommandQueue( 03123 cl_command_queue_properties properties, 03124 cl_int* err = NULL) 03125 { 03126 cl_int error; 03127 03128 Context context = Context::getDefault(&error); 03129 detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); 03130 03131 if (error != CL_SUCCESS) { 03132 if (err != NULL) { 03133 *err = error; 03134 } 03135 } 03136 else { 03137 Device device = context.getInfo<CL_CONTEXT_DEVICES>()[0]; 03138 03139 object_ = ::clCreateCommandQueue( 03140 context(), device(), properties, &error); 03141 03142 detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); 03143 if (err != NULL) { 03144 *err = error; 03145 } 03146 } 03147 } 03148 03149 CommandQueue( 03150 const Context& context, 03151 const Device& device, 03152 cl_command_queue_properties properties = 0, 03153 cl_int* err = NULL) 03154 { 03155 cl_int error; 03156 object_ = ::clCreateCommandQueue( 03157 context(), device(), properties, &error); 03158 03159 detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); 03160 if (err != NULL) { 03161 *err = error; 03162 } 03163 } 03164 03165 static CommandQueue getDefault(cl_int * err = NULL) 03166 { 03167 int state = detail::compare_exchange( 03168 &default_initialized_, 03169 __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); 03170 03171 if (state & __DEFAULT_INITIALIZED) { 03172 if (err != NULL) { 03173 *err = default_error_; 03174 } 03175 return default_; 03176 } 03177 03178 if (state & __DEFAULT_BEING_INITIALIZED) { 03179 // Assume writes will propagate eventually... 03180 while(default_initialized_ != __DEFAULT_INITIALIZED) { 03181 ; 03182 } 03183 03184 if (err != NULL) { 03185 *err = default_error_; 03186 } 03187 return default_; 03188 } 03189 03190 cl_int error; 03191 03192 Context context = Context::getDefault(&error); 03193 detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); 03194 03195 if (error != CL_SUCCESS) { 03196 if (err != NULL) { 03197 *err = error; 03198 } 03199 } 03200 else { 03201 Device device = context.getInfo<CL_CONTEXT_DEVICES>()[0]; 03202 03203 03204 default_ = CommandQueue(context, device, 0, &error); 03205 03206 detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); 03207 if (err != NULL) { 03208 *err = error; 03209 } 03210 } 03211 03212 default_error_ = error; 03213 // Assume writes will propagate eventually... 03214 default_initialized_ = __DEFAULT_INITIALIZED; 03215 if (err != NULL) { 03216 *err = default_error_; 03217 } 03218 return default_; 03219 03220 } 03221 03222 CommandQueue() { } 03223 03224 CommandQueue(const CommandQueue& commandQueue) : detail::Wrapper<cl_type>(commandQueue) { } 03225 03226 CommandQueue(const cl_command_queue& commandQueue) : detail::Wrapper<cl_type>(commandQueue) { } 03227 03228 CommandQueue& operator = (const CommandQueue& rhs) 03229 { 03230 if (this != &rhs) { 03231 detail::Wrapper<cl_type>::operator=(rhs); 03232 } 03233 return *this; 03234 } 03235 03236 CommandQueue& operator = (const cl_command_queue& rhs) 03237 { 03238 detail::Wrapper<cl_type>::operator=(rhs); 03239 return *this; 03240 } 03241 03242 template <typename T> 03243 cl_int getInfo(cl_command_queue_info name, T* param) const 03244 { 03245 return detail::errHandler( 03246 detail::getInfo( 03247 &::clGetCommandQueueInfo, object_, name, param), 03248 __GET_COMMAND_QUEUE_INFO_ERR); 03249 } 03250 03251 template <cl_int name> typename 03252 detail::param_traits<detail::cl_command_queue_info, name>::param_type 03253 getInfo(cl_int* err = NULL) const 03254 { 03255 typename detail::param_traits< 03256 detail::cl_command_queue_info, name>::param_type param; 03257 cl_int result = getInfo(name, ¶m); 03258 if (err != NULL) { 03259 *err = result; 03260 } 03261 return param; 03262 } 03263 03264 cl_int enqueueReadBuffer( 03265 const Buffer& buffer, 03266 cl_bool blocking, 03267 ::size_t offset, 03268 ::size_t size, 03269 void* ptr, 03270 const VECTOR_CLASS<Event>* events = NULL, 03271 Event* event = NULL) const 03272 { 03273 cl_event tmp; 03274 cl_int err = detail::errHandler( 03275 ::clEnqueueReadBuffer( 03276 object_, buffer(), blocking, offset, size, 03277 ptr, 03278 (events != NULL) ? (cl_uint) events->size() : 0, 03279 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03280 (event != NULL) ? &tmp : NULL), 03281 __ENQUEUE_READ_BUFFER_ERR); 03282 03283 if (event != NULL && err == CL_SUCCESS) 03284 *event = tmp; 03285 03286 return err; 03287 } 03288 03289 cl_int enqueueWriteBuffer( 03290 const Buffer& buffer, 03291 cl_bool blocking, 03292 ::size_t offset, 03293 ::size_t size, 03294 const void* ptr, 03295 const VECTOR_CLASS<Event>* events = NULL, 03296 Event* event = NULL) const 03297 { 03298 cl_event tmp; 03299 cl_int err = detail::errHandler( 03300 ::clEnqueueWriteBuffer( 03301 object_, buffer(), blocking, offset, size, 03302 ptr, 03303 (events != NULL) ? (cl_uint) events->size() : 0, 03304 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03305 (event != NULL) ? &tmp : NULL), 03306 __ENQUEUE_WRITE_BUFFER_ERR); 03307 03308 if (event != NULL && err == CL_SUCCESS) 03309 *event = tmp; 03310 03311 return err; 03312 } 03313 03314 cl_int enqueueCopyBuffer( 03315 const Buffer& src, 03316 const Buffer& dst, 03317 ::size_t src_offset, 03318 ::size_t dst_offset, 03319 ::size_t size, 03320 const VECTOR_CLASS<Event>* events = NULL, 03321 Event* event = NULL) const 03322 { 03323 cl_event tmp; 03324 cl_int err = detail::errHandler( 03325 ::clEnqueueCopyBuffer( 03326 object_, src(), dst(), src_offset, dst_offset, size, 03327 (events != NULL) ? (cl_uint) events->size() : 0, 03328 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03329 (event != NULL) ? &tmp : NULL), 03330 __ENQEUE_COPY_BUFFER_ERR); 03331 03332 if (event != NULL && err == CL_SUCCESS) 03333 *event = tmp; 03334 03335 return err; 03336 } 03337 03338 #if defined(CL_VERSION_1_1) 03339 cl_int enqueueReadBufferRect( 03340 const Buffer& buffer, 03341 cl_bool blocking, 03342 const size_t<3>& buffer_offset, 03343 const size_t<3>& host_offset, 03344 const size_t<3>& region, 03345 ::size_t buffer_row_pitch, 03346 ::size_t buffer_slice_pitch, 03347 ::size_t host_row_pitch, 03348 ::size_t host_slice_pitch, 03349 void *ptr, 03350 const VECTOR_CLASS<Event>* events = NULL, 03351 Event* event = NULL) const 03352 { 03353 cl_event tmp; 03354 cl_int err = detail::errHandler( 03355 ::clEnqueueReadBufferRect( 03356 object_, 03357 buffer(), 03358 blocking, 03359 (const ::size_t *)buffer_offset, 03360 (const ::size_t *)host_offset, 03361 (const ::size_t *)region, 03362 buffer_row_pitch, 03363 buffer_slice_pitch, 03364 host_row_pitch, 03365 host_slice_pitch, 03366 ptr, 03367 (events != NULL) ? (cl_uint) events->size() : 0, 03368 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03369 (event != NULL) ? &tmp : NULL), 03370 __ENQUEUE_READ_BUFFER_RECT_ERR); 03371 03372 if (event != NULL && err == CL_SUCCESS) 03373 *event = tmp; 03374 03375 return err; 03376 } 03377 03378 03379 cl_int enqueueWriteBufferRect( 03380 const Buffer& buffer, 03381 cl_bool blocking, 03382 const size_t<3>& buffer_offset, 03383 const size_t<3>& host_offset, 03384 const size_t<3>& region, 03385 ::size_t buffer_row_pitch, 03386 ::size_t buffer_slice_pitch, 03387 ::size_t host_row_pitch, 03388 ::size_t host_slice_pitch, 03389 void *ptr, 03390 const VECTOR_CLASS<Event>* events = NULL, 03391 Event* event = NULL) const 03392 { 03393 cl_event tmp; 03394 cl_int err = detail::errHandler( 03395 ::clEnqueueWriteBufferRect( 03396 object_, 03397 buffer(), 03398 blocking, 03399 (const ::size_t *)buffer_offset, 03400 (const ::size_t *)host_offset, 03401 (const ::size_t *)region, 03402 buffer_row_pitch, 03403 buffer_slice_pitch, 03404 host_row_pitch, 03405 host_slice_pitch, 03406 ptr, 03407 (events != NULL) ? (cl_uint) events->size() : 0, 03408 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03409 (event != NULL) ? &tmp : NULL), 03410 __ENQUEUE_WRITE_BUFFER_RECT_ERR); 03411 03412 if (event != NULL && err == CL_SUCCESS) 03413 *event = tmp; 03414 03415 return err; 03416 } 03417 03418 cl_int enqueueCopyBufferRect( 03419 const Buffer& src, 03420 const Buffer& dst, 03421 const size_t<3>& src_origin, 03422 const size_t<3>& dst_origin, 03423 const size_t<3>& region, 03424 ::size_t src_row_pitch, 03425 ::size_t src_slice_pitch, 03426 ::size_t dst_row_pitch, 03427 ::size_t dst_slice_pitch, 03428 const VECTOR_CLASS<Event>* events = NULL, 03429 Event* event = NULL) const 03430 { 03431 cl_event tmp; 03432 cl_int err = detail::errHandler( 03433 ::clEnqueueCopyBufferRect( 03434 object_, 03435 src(), 03436 dst(), 03437 (const ::size_t *)src_origin, 03438 (const ::size_t *)dst_origin, 03439 (const ::size_t *)region, 03440 src_row_pitch, 03441 src_slice_pitch, 03442 dst_row_pitch, 03443 dst_slice_pitch, 03444 (events != NULL) ? (cl_uint) events->size() : 0, 03445 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03446 (event != NULL) ? &tmp : NULL), 03447 __ENQEUE_COPY_BUFFER_RECT_ERR); 03448 03449 if (event != NULL && err == CL_SUCCESS) 03450 *event = tmp; 03451 03452 return err; 03453 } 03454 #endif 03455 03456 cl_int enqueueReadImage( 03457 const Image& image, 03458 cl_bool blocking, 03459 const size_t<3>& origin, 03460 const size_t<3>& region, 03461 ::size_t row_pitch, 03462 ::size_t slice_pitch, 03463 void* ptr, 03464 const VECTOR_CLASS<Event>* events = NULL, 03465 Event* event = NULL) const 03466 { 03467 cl_event tmp; 03468 cl_int err = detail::errHandler( 03469 ::clEnqueueReadImage( 03470 object_, image(), blocking, (const ::size_t *) origin, 03471 (const ::size_t *) region, row_pitch, slice_pitch, ptr, 03472 (events != NULL) ? (cl_uint) events->size() : 0, 03473 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03474 (event != NULL) ? &tmp : NULL), 03475 __ENQUEUE_READ_IMAGE_ERR); 03476 03477 if (event != NULL && err == CL_SUCCESS) 03478 *event = tmp; 03479 03480 return err; 03481 } 03482 03483 cl_int enqueueWriteImage( 03484 const Image& image, 03485 cl_bool blocking, 03486 const size_t<3>& origin, 03487 const size_t<3>& region, 03488 ::size_t row_pitch, 03489 ::size_t slice_pitch, 03490 void* ptr, 03491 const VECTOR_CLASS<Event>* events = NULL, 03492 Event* event = NULL) const 03493 { 03494 cl_event tmp; 03495 cl_int err = detail::errHandler( 03496 ::clEnqueueWriteImage( 03497 object_, image(), blocking, (const ::size_t *) origin, 03498 (const ::size_t *) region, row_pitch, slice_pitch, ptr, 03499 (events != NULL) ? (cl_uint) events->size() : 0, 03500 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03501 (event != NULL) ? &tmp : NULL), 03502 __ENQUEUE_WRITE_IMAGE_ERR); 03503 03504 if (event != NULL && err == CL_SUCCESS) 03505 *event = tmp; 03506 03507 return err; 03508 } 03509 03510 cl_int enqueueCopyImage( 03511 const Image& src, 03512 const Image& dst, 03513 const size_t<3>& src_origin, 03514 const size_t<3>& dst_origin, 03515 const size_t<3>& region, 03516 const VECTOR_CLASS<Event>* events = NULL, 03517 Event* event = NULL) const 03518 { 03519 cl_event tmp; 03520 cl_int err = detail::errHandler( 03521 ::clEnqueueCopyImage( 03522 object_, src(), dst(), (const ::size_t *) src_origin, 03523 (const ::size_t *)dst_origin, (const ::size_t *) region, 03524 (events != NULL) ? (cl_uint) events->size() : 0, 03525 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03526 (event != NULL) ? &tmp : NULL), 03527 __ENQUEUE_COPY_IMAGE_ERR); 03528 03529 if (event != NULL && err == CL_SUCCESS) 03530 *event = tmp; 03531 03532 return err; 03533 } 03534 03535 cl_int enqueueCopyImageToBuffer( 03536 const Image& src, 03537 const Buffer& dst, 03538 const size_t<3>& src_origin, 03539 const size_t<3>& region, 03540 ::size_t dst_offset, 03541 const VECTOR_CLASS<Event>* events = NULL, 03542 Event* event = NULL) const 03543 { 03544 cl_event tmp; 03545 cl_int err = detail::errHandler( 03546 ::clEnqueueCopyImageToBuffer( 03547 object_, src(), dst(), (const ::size_t *) src_origin, 03548 (const ::size_t *) region, dst_offset, 03549 (events != NULL) ? (cl_uint) events->size() : 0, 03550 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03551 (event != NULL) ? &tmp : NULL), 03552 __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); 03553 03554 if (event != NULL && err == CL_SUCCESS) 03555 *event = tmp; 03556 03557 return err; 03558 } 03559 03560 cl_int enqueueCopyBufferToImage( 03561 const Buffer& src, 03562 const Image& dst, 03563 ::size_t src_offset, 03564 const size_t<3>& dst_origin, 03565 const size_t<3>& region, 03566 const VECTOR_CLASS<Event>* events = NULL, 03567 Event* event = NULL) const 03568 { 03569 cl_event tmp; 03570 cl_int err = detail::errHandler( 03571 ::clEnqueueCopyBufferToImage( 03572 object_, src(), dst(), src_offset, 03573 (const ::size_t *) dst_origin, (const ::size_t *) region, 03574 (events != NULL) ? (cl_uint) events->size() : 0, 03575 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03576 (event != NULL) ? &tmp : NULL), 03577 __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); 03578 03579 if (event != NULL && err == CL_SUCCESS) 03580 *event = tmp; 03581 03582 return err; 03583 } 03584 03585 void* enqueueMapBuffer( 03586 const Buffer& buffer, 03587 cl_bool blocking, 03588 cl_map_flags flags, 03589 ::size_t offset, 03590 ::size_t size, 03591 const VECTOR_CLASS<Event>* events = NULL, 03592 Event* event = NULL, 03593 cl_int* err = NULL) const 03594 { 03595 cl_int error; 03596 void * result = ::clEnqueueMapBuffer( 03597 object_, buffer(), blocking, flags, offset, size, 03598 (events != NULL) ? (cl_uint) events->size() : 0, 03599 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03600 (cl_event*) event, 03601 &error); 03602 03603 detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); 03604 if (err != NULL) { 03605 *err = error; 03606 } 03607 return result; 03608 } 03609 03610 void* enqueueMapImage( 03611 const Image& buffer, 03612 cl_bool blocking, 03613 cl_map_flags flags, 03614 const size_t<3>& origin, 03615 const size_t<3>& region, 03616 ::size_t * row_pitch, 03617 ::size_t * slice_pitch, 03618 const VECTOR_CLASS<Event>* events = NULL, 03619 Event* event = NULL, 03620 cl_int* err = NULL) const 03621 { 03622 cl_int error; 03623 void * result = ::clEnqueueMapImage( 03624 object_, buffer(), blocking, flags, 03625 (const ::size_t *) origin, (const ::size_t *) region, 03626 row_pitch, slice_pitch, 03627 (events != NULL) ? (cl_uint) events->size() : 0, 03628 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03629 (cl_event*) event, 03630 &error); 03631 03632 detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); 03633 if (err != NULL) { 03634 *err = error; 03635 } 03636 return result; 03637 } 03638 03639 cl_int enqueueUnmapMemObject( 03640 const Memory& memory, 03641 void* mapped_ptr, 03642 const VECTOR_CLASS<Event>* events = NULL, 03643 Event* event = NULL) const 03644 { 03645 cl_event tmp; 03646 cl_int err = detail::errHandler( 03647 ::clEnqueueUnmapMemObject( 03648 object_, memory(), mapped_ptr, 03649 (events != NULL) ? (cl_uint) events->size() : 0, 03650 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03651 (event != NULL) ? &tmp : NULL), 03652 __ENQUEUE_UNMAP_MEM_OBJECT_ERR); 03653 03654 if (event != NULL && err == CL_SUCCESS) 03655 *event = tmp; 03656 03657 return err; 03658 } 03659 03660 cl_int enqueueNDRangeKernel( 03661 const Kernel& kernel, 03662 const NDRange& offset, 03663 const NDRange& global, 03664 const NDRange& local = NullRange, 03665 const VECTOR_CLASS<Event>* events = NULL, 03666 Event* event = NULL) const 03667 { 03668 cl_event tmp; 03669 cl_int err = detail::errHandler( 03670 ::clEnqueueNDRangeKernel( 03671 object_, kernel(), (cl_uint) global.dimensions(), 03672 offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, 03673 (const ::size_t*) global, 03674 local.dimensions() != 0 ? (const ::size_t*) local : NULL, 03675 (events != NULL) ? (cl_uint) events->size() : 0, 03676 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03677 (event != NULL) ? &tmp : NULL), 03678 __ENQUEUE_NDRANGE_KERNEL_ERR); 03679 03680 if (event != NULL && err == CL_SUCCESS) 03681 *event = tmp; 03682 03683 return err; 03684 } 03685 03686 cl_int enqueueTask( 03687 const Kernel& kernel, 03688 const VECTOR_CLASS<Event>* events = NULL, 03689 Event* event = NULL) const 03690 { 03691 cl_event tmp; 03692 cl_int err = detail::errHandler( 03693 ::clEnqueueTask( 03694 object_, kernel(), 03695 (events != NULL) ? (cl_uint) events->size() : 0, 03696 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03697 (event != NULL) ? &tmp : NULL), 03698 __ENQUEUE_TASK_ERR); 03699 03700 if (event != NULL && err == CL_SUCCESS) 03701 *event = tmp; 03702 03703 return err; 03704 } 03705 03706 cl_int enqueueNativeKernel( 03707 void (*userFptr)(void *), 03708 std::pair<void*, ::size_t> args, 03709 const VECTOR_CLASS<Memory>* mem_objects = NULL, 03710 const VECTOR_CLASS<const void*>* mem_locs = NULL, 03711 const VECTOR_CLASS<Event>* events = NULL, 03712 Event* event = NULL) const 03713 { 03714 cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) 03715 ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) 03716 : NULL; 03717 03718 if (mems != NULL) { 03719 for (unsigned int i = 0; i < mem_objects->size(); i++) { 03720 mems[i] = ((*mem_objects)[i])(); 03721 } 03722 } 03723 03724 cl_event tmp; 03725 cl_int err = detail::errHandler( 03726 ::clEnqueueNativeKernel( 03727 object_, userFptr, args.first, args.second, 03728 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, 03729 mems, 03730 (mem_locs != NULL) ? (const void **) &mem_locs->front() : NULL, 03731 (events != NULL) ? (cl_uint) events->size() : 0, 03732 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03733 (event != NULL) ? &tmp : NULL), 03734 __ENQUEUE_NATIVE_KERNEL); 03735 03736 if (event != NULL && err == CL_SUCCESS) 03737 *event = tmp; 03738 03739 return err; 03740 } 03741 03742 cl_int enqueueMarker(Event* event = NULL) const 03743 { 03744 return detail::errHandler( 03745 ::clEnqueueMarker(object_, (cl_event*) event), 03746 __ENQUEUE_MARKER_ERR); 03747 } 03748 03749 cl_int enqueueWaitForEvents(const VECTOR_CLASS<Event>& events) const 03750 { 03751 return detail::errHandler( 03752 ::clEnqueueWaitForEvents( 03753 object_, 03754 (cl_uint) events.size(), 03755 (const cl_event*) &events.front()), 03756 __ENQUEUE_WAIT_FOR_EVENTS_ERR); 03757 } 03758 03759 cl_int enqueueAcquireGLObjects( 03760 const VECTOR_CLASS<Memory>* mem_objects = NULL, 03761 const VECTOR_CLASS<Event>* events = NULL, 03762 Event* event = NULL) const 03763 { 03764 cl_event tmp; 03765 cl_int err = detail::errHandler( 03766 ::clEnqueueAcquireGLObjects( 03767 object_, 03768 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, 03769 (mem_objects != NULL) ? (const cl_mem *) &mem_objects->front(): NULL, 03770 (events != NULL) ? (cl_uint) events->size() : 0, 03771 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03772 (event != NULL) ? &tmp : NULL), 03773 __ENQUEUE_ACQUIRE_GL_ERR); 03774 03775 if (event != NULL && err == CL_SUCCESS) 03776 *event = tmp; 03777 03778 return err; 03779 } 03780 03781 cl_int enqueueReleaseGLObjects( 03782 const VECTOR_CLASS<Memory>* mem_objects = NULL, 03783 const VECTOR_CLASS<Event>* events = NULL, 03784 Event* event = NULL) const 03785 { 03786 cl_event tmp; 03787 cl_int err = detail::errHandler( 03788 ::clEnqueueReleaseGLObjects( 03789 object_, 03790 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, 03791 (mem_objects != NULL) ? (const cl_mem *) &mem_objects->front(): NULL, 03792 (events != NULL) ? (cl_uint) events->size() : 0, 03793 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, 03794 (event != NULL) ? &tmp : NULL), 03795 __ENQUEUE_RELEASE_GL_ERR); 03796 03797 if (event != NULL && err == CL_SUCCESS) 03798 *event = tmp; 03799 03800 return err; 03801 } 03802 03803 #if defined (USE_DX_INTEROP) 03804 typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( 03805 cl_command_queue command_queue, cl_uint num_objects, 03806 const cl_mem* mem_objects, cl_uint num_events_in_wait_list, 03807 const cl_event* event_wait_list, cl_event* event); 03808 typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( 03809 cl_command_queue command_queue, cl_uint num_objects, 03810 const cl_mem* mem_objects, cl_uint num_events_in_wait_list, 03811 const cl_event* event_wait_list, cl_event* event); 03812 03813 cl_int enqueueAcquireD3D10Objects( 03814 const VECTOR_CLASS<Memory>* mem_objects = NULL, 03815 const VECTOR_CLASS<Event>* events = NULL, 03816 Event* event = NULL) const 03817 { 03818 static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; 03819 __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); 03820 03821 cl_event tmp; 03822 cl_int err = detail::errHandler( 03823 pfn_clEnqueueAcquireD3D10ObjectsKHR( 03824 object_, 03825 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, 03826 (mem_objects != NULL) ? (const cl_mem *) &mem_objects->front(): NULL, 03827 (events != NULL) ? (cl_uint) events->size() : 0, 03828 (events != NULL) ? (cl_event*) &events->front() : NULL, 03829 (event != NULL) ? &tmp : NULL), 03830 __ENQUEUE_ACQUIRE_GL_ERR); 03831 03832 if (event != NULL && err == CL_SUCCESS) 03833 *event = tmp; 03834 03835 return err; 03836 } 03837 03838 cl_int enqueueReleaseD3D10Objects( 03839 const VECTOR_CLASS<Memory>* mem_objects = NULL, 03840 const VECTOR_CLASS<Event>* events = NULL, 03841 Event* event = NULL) const 03842 { 03843 static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; 03844 __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); 03845 03846 cl_event tmp; 03847 cl_int err = detail::errHandler( 03848 pfn_clEnqueueReleaseD3D10ObjectsKHR( 03849 object_, 03850 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, 03851 (mem_objects != NULL) ? (const cl_mem *) &mem_objects->front(): NULL, 03852 (events != NULL) ? (cl_uint) events->size() : 0, 03853 (events != NULL) ? (cl_event*) &events->front() : NULL, 03854 (event != NULL) ? &tmp : NULL), 03855 __ENQUEUE_RELEASE_GL_ERR); 03856 03857 if (event != NULL && err == CL_SUCCESS) 03858 *event = tmp; 03859 03860 return err; 03861 } 03862 #endif 03863 03864 cl_int enqueueBarrier() const 03865 { 03866 return detail::errHandler( 03867 ::clEnqueueBarrier(object_), 03868 __ENQUEUE_BARRIER_ERR); 03869 } 03870 03871 cl_int flush() const 03872 { 03873 return detail::errHandler(::clFlush(object_), __FLUSH_ERR); 03874 } 03875 03876 cl_int finish() const 03877 { 03878 return detail::errHandler(::clFinish(object_), __FINISH_ERR); 03879 } 03880 }; 03881 03882 __GET_INFO_HELPER_WITH_RETAIN(cl::CommandQueue) 03883 03884 #ifdef _WIN32 03885 __declspec(selectany) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; 03886 __declspec(selectany) CommandQueue CommandQueue::default_; 03887 __declspec(selectany) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; 03888 #else 03889 __attribute__((weak)) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; 03890 __attribute__((weak)) CommandQueue CommandQueue::default_; 03891 __attribute__((weak)) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; 03892 #endif 03893 03894 inline cl_int enqueueReadBuffer( 03895 const Buffer& buffer, 03896 cl_bool blocking, 03897 ::size_t offset, 03898 ::size_t size, 03899 void* ptr, 03900 const VECTOR_CLASS<Event>* events = NULL, 03901 Event* event = NULL) 03902 { 03903 cl_int error; 03904 CommandQueue queue = CommandQueue::getDefault(&error); 03905 03906 if (error != CL_SUCCESS) { 03907 return error; 03908 } 03909 03910 return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); 03911 } 03912 03913 inline cl_int enqueueWriteBuffer( 03914 const Buffer& buffer, 03915 cl_bool blocking, 03916 ::size_t offset, 03917 ::size_t size, 03918 const void* ptr, 03919 const VECTOR_CLASS<Event>* events = NULL, 03920 Event* event = NULL) 03921 { 03922 cl_int error; 03923 CommandQueue queue = CommandQueue::getDefault(&error); 03924 03925 if (error != CL_SUCCESS) { 03926 return error; 03927 } 03928 03929 return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); 03930 } 03931 03932 inline cl_int enqueueCopyBuffer( 03933 const Buffer& src, 03934 const Buffer& dst, 03935 ::size_t src_offset, 03936 ::size_t dst_offset, 03937 ::size_t size, 03938 const VECTOR_CLASS<Event>* events = NULL, 03939 Event* event = NULL) 03940 { 03941 cl_int error; 03942 CommandQueue queue = CommandQueue::getDefault(&error); 03943 03944 if (error != CL_SUCCESS) { 03945 return error; 03946 } 03947 03948 return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); 03949 } 03950 03951 #if defined(CL_VERSION_1_1) 03952 inline cl_int enqueueReadBufferRect( 03953 const Buffer& buffer, 03954 cl_bool blocking, 03955 const size_t<3>& buffer_offset, 03956 const size_t<3>& host_offset, 03957 const size_t<3>& region, 03958 ::size_t buffer_row_pitch, 03959 ::size_t buffer_slice_pitch, 03960 ::size_t host_row_pitch, 03961 ::size_t host_slice_pitch, 03962 void *ptr, 03963 const VECTOR_CLASS<Event>* events = NULL, 03964 Event* event = NULL) 03965 { 03966 cl_int error; 03967 CommandQueue queue = CommandQueue::getDefault(&error); 03968 03969 if (error != CL_SUCCESS) { 03970 return error; 03971 } 03972 03973 return queue.enqueueReadBufferRect( 03974 buffer, 03975 blocking, 03976 buffer_offset, 03977 host_offset, 03978 region, 03979 buffer_row_pitch, 03980 host_slice_pitch, 03981 host_row_pitch, 03982 host_slice_pitch, 03983 ptr, 03984 events, 03985 event); 03986 } 03987 03988 inline cl_int enqueueWriteBufferRect( 03989 const Buffer& buffer, 03990 cl_bool blocking, 03991 const size_t<3>& buffer_offset, 03992 const size_t<3>& host_offset, 03993 const size_t<3>& region, 03994 ::size_t buffer_row_pitch, 03995 ::size_t buffer_slice_pitch, 03996 ::size_t host_row_pitch, 03997 ::size_t host_slice_pitch, 03998 void *ptr, 03999 const VECTOR_CLASS<Event>* events = NULL, 04000 Event* event = NULL) 04001 { 04002 cl_int error; 04003 CommandQueue queue = CommandQueue::getDefault(&error); 04004 04005 if (error != CL_SUCCESS) { 04006 return error; 04007 } 04008 04009 return queue.enqueueWriteBufferRect( 04010 buffer, 04011 blocking, 04012 buffer_offset, 04013 host_offset, 04014 region, 04015 buffer_row_pitch, 04016 buffer_slice_pitch, 04017 host_row_pitch, 04018 host_slice_pitch, 04019 ptr, 04020 events, 04021 event); 04022 } 04023 04024 inline cl_int enqueueCopyBufferRect( 04025 const Buffer& src, 04026 const Buffer& dst, 04027 const size_t<3>& src_origin, 04028 const size_t<3>& dst_origin, 04029 const size_t<3>& region, 04030 ::size_t src_row_pitch, 04031 ::size_t src_slice_pitch, 04032 ::size_t dst_row_pitch, 04033 ::size_t dst_slice_pitch, 04034 const VECTOR_CLASS<Event>* events = NULL, 04035 Event* event = NULL) 04036 { 04037 cl_int error; 04038 CommandQueue queue = CommandQueue::getDefault(&error); 04039 04040 if (error != CL_SUCCESS) { 04041 return error; 04042 } 04043 04044 return queue.enqueueCopyBufferRect( 04045 src, 04046 dst, 04047 src_origin, 04048 dst_origin, 04049 region, 04050 src_row_pitch, 04051 src_slice_pitch, 04052 dst_row_pitch, 04053 dst_slice_pitch, 04054 events, 04055 event); 04056 } 04057 #endif 04058 04059 inline cl_int enqueueReadImage( 04060 const Image& image, 04061 cl_bool blocking, 04062 const size_t<3>& origin, 04063 const size_t<3>& region, 04064 ::size_t row_pitch, 04065 ::size_t slice_pitch, 04066 void* ptr, 04067 const VECTOR_CLASS<Event>* events = NULL, 04068 Event* event = NULL) 04069 { 04070 cl_int error; 04071 CommandQueue queue = CommandQueue::getDefault(&error); 04072 04073 if (error != CL_SUCCESS) { 04074 return error; 04075 } 04076 04077 return queue.enqueueReadImage( 04078 image, 04079 blocking, 04080 origin, 04081 region, 04082 row_pitch, 04083 slice_pitch, 04084 ptr, 04085 events, 04086 event); 04087 } 04088 04089 inline cl_int enqueueWriteImage( 04090 const Image& image, 04091 cl_bool blocking, 04092 const size_t<3>& origin, 04093 const size_t<3>& region, 04094 ::size_t row_pitch, 04095 ::size_t slice_pitch, 04096 void* ptr, 04097 const VECTOR_CLASS<Event>* events = NULL, 04098 Event* event = NULL) 04099 { 04100 cl_int error; 04101 CommandQueue queue = CommandQueue::getDefault(&error); 04102 04103 if (error != CL_SUCCESS) { 04104 return error; 04105 } 04106 04107 return queue.enqueueWriteImage( 04108 image, 04109 blocking, 04110 origin, 04111 region, 04112 row_pitch, 04113 slice_pitch, 04114 ptr, 04115 events, 04116 event); 04117 } 04118 04119 inline cl_int enqueueCopyImage( 04120 const Image& src, 04121 const Image& dst, 04122 const size_t<3>& src_origin, 04123 const size_t<3>& dst_origin, 04124 const size_t<3>& region, 04125 const VECTOR_CLASS<Event>* events = NULL, 04126 Event* event = NULL) 04127 { 04128 cl_int error; 04129 CommandQueue queue = CommandQueue::getDefault(&error); 04130 04131 if (error != CL_SUCCESS) { 04132 return error; 04133 } 04134 04135 return queue.enqueueCopyImage( 04136 src, 04137 dst, 04138 src_origin, 04139 dst_origin, 04140 region, 04141 events, 04142 event); 04143 } 04144 04145 inline cl_int enqueueCopyImageToBuffer( 04146 const Image& src, 04147 const Buffer& dst, 04148 const size_t<3>& src_origin, 04149 const size_t<3>& region, 04150 ::size_t dst_offset, 04151 const VECTOR_CLASS<Event>* events = NULL, 04152 Event* event = NULL) 04153 { 04154 cl_int error; 04155 CommandQueue queue = CommandQueue::getDefault(&error); 04156 04157 if (error != CL_SUCCESS) { 04158 return error; 04159 } 04160 04161 return queue.enqueueCopyImageToBuffer( 04162 src, 04163 dst, 04164 src_origin, 04165 region, 04166 dst_offset, 04167 events, 04168 event); 04169 } 04170 04171 inline cl_int enqueueCopyBufferToImage( 04172 const Buffer& src, 04173 const Image& dst, 04174 ::size_t src_offset, 04175 const size_t<3>& dst_origin, 04176 const size_t<3>& region, 04177 const VECTOR_CLASS<Event>* events = NULL, 04178 Event* event = NULL) 04179 { 04180 cl_int error; 04181 CommandQueue queue = CommandQueue::getDefault(&error); 04182 04183 if (error != CL_SUCCESS) { 04184 return error; 04185 } 04186 04187 return queue.enqueueCopyBufferToImage( 04188 src, 04189 dst, 04190 src_offset, 04191 dst_origin, 04192 region, 04193 events, 04194 event); 04195 } 04196 04197 04198 inline cl_int flush(void) 04199 { 04200 cl_int error; 04201 CommandQueue queue = CommandQueue::getDefault(&error); 04202 04203 if (error != CL_SUCCESS) { 04204 return error; 04205 } 04206 04207 return queue.flush(); 04208 } 04209 04210 inline cl_int finish(void) 04211 { 04212 cl_int error; 04213 CommandQueue queue = CommandQueue::getDefault(&error); 04214 04215 if (error != CL_SUCCESS) { 04216 return error; 04217 } 04218 04219 04220 return queue.finish(); 04221 } 04222 04223 04224 // Kernel Functor support 04225 // New interface as of September 2011 04226 // Requires the C++11 std::tr1::function (note do not support TR1) 04227 // Visual Studio 2010 and GCC 4.2 04228 04229 #if (defined(_WIN32) && (_MSC_VER >= 1600)) || defined(linux) || defined(__APPLE__) || defined(__MACOSX) 04230 struct EnqueueArgs 04231 { 04232 CommandQueue queue_; 04233 NDRange offset_; 04234 NDRange global_; 04235 NDRange local_; 04236 04237 EnqueueArgs(NDRange global) : 04238 queue_(CommandQueue::getDefault()), 04239 offset_(NullRange), 04240 global_(global), 04241 local_(NullRange) 04242 { 04243 04244 } 04245 04246 EnqueueArgs(NDRange global, NDRange local) : 04247 queue_(CommandQueue::getDefault()), 04248 offset_(NullRange), 04249 global_(global), 04250 local_(local) 04251 { 04252 04253 } 04254 04255 EnqueueArgs(NDRange offset, NDRange global, NDRange local) : 04256 queue_(CommandQueue::getDefault()), 04257 offset_(offset), 04258 global_(global), 04259 local_(local) 04260 { 04261 04262 } 04263 04264 EnqueueArgs(CommandQueue queue, NDRange global) : 04265 queue_(queue), 04266 offset_(NullRange), 04267 global_(global), 04268 local_(NullRange) 04269 { 04270 04271 } 04272 04273 EnqueueArgs(CommandQueue queue, NDRange global, NDRange local) : 04274 queue_(queue), 04275 offset_(NullRange), 04276 global_(global), 04277 local_(local) 04278 { 04279 04280 } 04281 04282 EnqueueArgs(CommandQueue queue, NDRange offset, NDRange global, NDRange local) : 04283 queue_(queue), 04284 offset_(offset), 04285 global_(global), 04286 local_(local) 04287 { 04288 04289 } 04290 }; 04291 04292 namespace detail { 04293 04294 class NullType {}; 04295 04296 template<int index, typename T0> 04297 struct SetArg 04298 { 04299 static void set (Kernel kernel, T0 arg) 04300 { 04301 kernel.setArg(index, arg); 04302 } 04303 }; 04304 04305 04306 template<int index> 04307 struct SetArg<index, NullType> 04308 { 04309 static void set (Kernel kernel, NullType) 04310 { 04311 } 04312 }; 04313 04314 template<typename T> 04315 struct MoveToDevice 04316 { 04317 static void move(CommandQueue, T) 04318 { 04319 } 04320 }; 04321 04322 04323 template<typename T> 04324 struct MoveFromDevice 04325 { 04326 static void move(CommandQueue, T) 04327 { 04328 } 04329 }; 04330 04331 04332 template < 04333 typename T0, typename T1, typename T2, typename T3, 04334 typename T4, typename T5, typename T6, typename T7, 04335 typename T8, typename T9, typename T10, typename T11, 04336 typename T12, typename T13, typename T14, typename T15, 04337 typename T16, typename T17, typename T18, typename T19, 04338 typename T20, typename T21, typename T22, typename T23, 04339 typename T24, typename T25, typename T26, typename T27, 04340 typename T28, typename T29, typename T30, typename T31, 04341 typename T32, typename T33, typename T34, typename T35, 04342 typename T36, typename T37, typename T38, typename T39, 04343 typename T40, typename T41, typename T42, typename T43, 04344 typename T44, typename T45, typename T46, typename T47, 04345 typename T48, typename T49, typename T50, typename T51, 04346 typename T52, typename T53, typename T54, typename T55, 04347 typename T56, typename T57, typename T58, typename T59, 04348 typename T60, typename T61, typename T62, typename T63, 04349 typename T64, typename T65, typename T66, typename T67, 04350 typename T68, typename T69, typename T70, typename T71, 04351 typename T72, typename T73, typename T74, typename T75, 04352 typename T76, typename T77, typename T78, typename T79, 04353 typename T80, typename T81, typename T82, typename T83, 04354 typename T84, typename T85, typename T86, typename T87, 04355 typename T88, typename T89, typename T90, typename T91, 04356 typename T92, typename T93, typename T94, typename T95, 04357 typename T96, typename T97, typename T98, typename T99, 04358 typename T100, typename T101, typename T102, typename T103, 04359 typename T104, typename T105, typename T106, typename T107, 04360 typename T108, typename T109, typename T110, typename T111, 04361 typename T112, typename T113, typename T114, typename T115, 04362 typename T116, typename T117, typename T118, typename T119, 04363 typename T120, typename T121, typename T122, typename T123, 04364 typename T124, typename T125, typename T126, typename T127> 04365 class KernelFunctorGlobal 04366 { 04367 private: 04368 Kernel kernel_; 04369 04370 public: 04371 KernelFunctorGlobal( 04372 Kernel kernel, 04373 cl_int * err = NULL) : 04374 kernel_(kernel) 04375 {} 04376 04377 KernelFunctorGlobal( 04378 const Program& program, 04379 const STRING_CLASS name, 04380 cl_int * err = NULL) : 04381 kernel_(program, name.c_str(), err) 04382 {} 04383 04384 Event operator() ( 04385 const EnqueueArgs& args, 04386 T0 t0, 04387 T1 t1 = NullType(), 04388 T2 t2 = NullType(), 04389 T3 t3 = NullType(), 04390 T4 t4 = NullType(), 04391 T5 t5 = NullType(), 04392 T6 t6 = NullType(), 04393 T7 t7 = NullType(), 04394 T8 t8 = NullType(), 04395 T9 t9 = NullType(), 04396 T10 t10 = NullType(), 04397 T11 t11 = NullType(), 04398 T12 t12 = NullType(), 04399 T13 t13 = NullType(), 04400 T14 t14 = NullType(), 04401 T15 t15 = NullType(), 04402 T16 t16 = NullType(), 04403 T17 t17 = NullType(), 04404 T18 t18 = NullType(), 04405 T19 t19 = NullType(), 04406 T20 t20 = NullType(), 04407 T21 t21 = NullType(), 04408 T22 t22 = NullType(), 04409 T23 t23 = NullType(), 04410 T24 t24 = NullType(), 04411 T25 t25 = NullType(), 04412 T26 t26 = NullType(), 04413 T27 t27 = NullType(), 04414 T28 t28 = NullType(), 04415 T29 t29 = NullType(), 04416 T30 t30 = NullType(), 04417 T31 t31 = NullType(), 04418 T32 t32 = NullType(), 04419 T33 t33 = NullType(), 04420 T34 t34 = NullType(), 04421 T35 t35 = NullType(), 04422 T36 t36 = NullType(), 04423 T37 t37 = NullType(), 04424 T38 t38 = NullType(), 04425 T39 t39 = NullType(), 04426 T40 t40 = NullType(), 04427 T41 t41 = NullType(), 04428 T42 t42 = NullType(), 04429 T43 t43 = NullType(), 04430 T44 t44 = NullType(), 04431 T45 t45 = NullType(), 04432 T46 t46 = NullType(), 04433 T47 t47 = NullType(), 04434 T48 t48 = NullType(), 04435 T49 t49 = NullType(), 04436 T50 t50 = NullType(), 04437 T51 t51 = NullType(), 04438 T52 t52 = NullType(), 04439 T53 t53 = NullType(), 04440 T54 t54 = NullType(), 04441 T55 t55 = NullType(), 04442 T56 t56 = NullType(), 04443 T57 t57 = NullType(), 04444 T58 t58 = NullType(), 04445 T59 t59 = NullType(), 04446 T60 t60 = NullType(), 04447 T61 t61 = NullType(), 04448 T62 t62 = NullType(), 04449 T63 t63 = NullType(), 04450 T64 t64 = NullType(), 04451 T65 t65 = NullType(), 04452 T66 t66 = NullType(), 04453 T67 t67 = NullType(), 04454 T68 t68 = NullType(), 04455 T69 t69 = NullType(), 04456 T70 t70 = NullType(), 04457 T71 t71 = NullType(), 04458 T72 t72 = NullType(), 04459 T73 t73 = NullType(), 04460 T74 t74 = NullType(), 04461 T75 t75 = NullType(), 04462 T76 t76 = NullType(), 04463 T77 t77 = NullType(), 04464 T78 t78 = NullType(), 04465 T79 t79 = NullType(), 04466 T80 t80 = NullType(), 04467 T81 t81 = NullType(), 04468 T82 t82 = NullType(), 04469 T83 t83 = NullType(), 04470 T84 t84 = NullType(), 04471 T85 t85 = NullType(), 04472 T86 t86 = NullType(), 04473 T87 t87 = NullType(), 04474 T88 t88 = NullType(), 04475 T89 t89 = NullType(), 04476 T90 t90 = NullType(), 04477 T91 t91 = NullType(), 04478 T92 t92 = NullType(), 04479 T93 t93 = NullType(), 04480 T94 t94 = NullType(), 04481 T95 t95 = NullType(), 04482 T96 t96 = NullType(), 04483 T97 t97 = NullType(), 04484 T98 t98 = NullType(), 04485 T99 t99 = NullType(), 04486 T100 t100 = NullType(), 04487 T101 t101 = NullType(), 04488 T102 t102 = NullType(), 04489 T103 t103 = NullType(), 04490 T104 t104 = NullType(), 04491 T105 t105 = NullType(), 04492 T106 t106 = NullType(), 04493 T107 t107 = NullType(), 04494 T108 t108 = NullType(), 04495 T109 t109 = NullType(), 04496 T110 t110 = NullType(), 04497 T111 t111 = NullType(), 04498 T112 t112 = NullType(), 04499 T113 t113 = NullType(), 04500 T114 t114 = NullType(), 04501 T115 t115 = NullType(), 04502 T116 t116 = NullType(), 04503 T117 t117 = NullType(), 04504 T118 t118 = NullType(), 04505 T119 t119 = NullType(), 04506 T120 t120 = NullType(), 04507 T121 t121 = NullType(), 04508 T122 t122 = NullType(), 04509 T123 t123 = NullType(), 04510 T124 t124 = NullType(), 04511 T125 t125 = NullType(), 04512 T126 t126 = NullType(), 04513 T127 t127 = NullType()) 04514 { 04515 Event event; 04516 SetArg<0, T0>::set(kernel_, t0); 04517 SetArg<1, T1>::set(kernel_, t1); 04518 SetArg<2, T2>::set(kernel_, t2); 04519 SetArg<3, T3>::set(kernel_, t3); 04520 SetArg<4, T4>::set(kernel_, t4); 04521 SetArg<5, T5>::set(kernel_, t5); 04522 SetArg<6, T6>::set(kernel_, t6); 04523 SetArg<7, T7>::set(kernel_, t7); 04524 SetArg<8, T8>::set(kernel_, t8); 04525 SetArg<9, T9>::set(kernel_, t9); 04526 SetArg<10, T10>::set(kernel_, t10); 04527 SetArg<11, T11>::set(kernel_, t11); 04528 SetArg<12, T12>::set(kernel_, t12); 04529 SetArg<13, T13>::set(kernel_, t13); 04530 SetArg<14, T14>::set(kernel_, t14); 04531 SetArg<15, T15>::set(kernel_, t15); 04532 SetArg<16, T16>::set(kernel_, t16); 04533 SetArg<17, T17>::set(kernel_, t17); 04534 SetArg<18, T18>::set(kernel_, t18); 04535 SetArg<19, T19>::set(kernel_, t19); 04536 SetArg<20, T20>::set(kernel_, t20); 04537 SetArg<21, T21>::set(kernel_, t21); 04538 SetArg<22, T22>::set(kernel_, t22); 04539 SetArg<23, T23>::set(kernel_, t23); 04540 SetArg<24, T24>::set(kernel_, t24); 04541 SetArg<25, T25>::set(kernel_, t25); 04542 SetArg<26, T26>::set(kernel_, t26); 04543 SetArg<27, T27>::set(kernel_, t27); 04544 SetArg<28, T28>::set(kernel_, t28); 04545 SetArg<29, T29>::set(kernel_, t29); 04546 SetArg<30, T30>::set(kernel_, t30); 04547 SetArg<31, T31>::set(kernel_, t31); 04548 SetArg<32, T32>::set(kernel_, t32); 04549 SetArg<33, T33>::set(kernel_, t33); 04550 SetArg<34, T34>::set(kernel_, t34); 04551 SetArg<35, T35>::set(kernel_, t35); 04552 SetArg<36, T36>::set(kernel_, t36); 04553 SetArg<37, T37>::set(kernel_, t37); 04554 SetArg<38, T38>::set(kernel_, t38); 04555 SetArg<39, T39>::set(kernel_, t39); 04556 SetArg<40, T40>::set(kernel_, t40); 04557 SetArg<41, T41>::set(kernel_, t41); 04558 SetArg<42, T42>::set(kernel_, t42); 04559 SetArg<43, T43>::set(kernel_, t43); 04560 SetArg<44, T44>::set(kernel_, t44); 04561 SetArg<45, T45>::set(kernel_, t45); 04562 SetArg<46, T46>::set(kernel_, t46); 04563 SetArg<47, T47>::set(kernel_, t47); 04564 SetArg<48, T48>::set(kernel_, t48); 04565 SetArg<49, T49>::set(kernel_, t49); 04566 SetArg<50, T50>::set(kernel_, t50); 04567 SetArg<51, T51>::set(kernel_, t51); 04568 SetArg<52, T52>::set(kernel_, t52); 04569 SetArg<53, T53>::set(kernel_, t53); 04570 SetArg<54, T54>::set(kernel_, t54); 04571 SetArg<55, T55>::set(kernel_, t55); 04572 SetArg<56, T56>::set(kernel_, t56); 04573 SetArg<57, T57>::set(kernel_, t57); 04574 SetArg<58, T58>::set(kernel_, t58); 04575 SetArg<59, T59>::set(kernel_, t59); 04576 SetArg<60, T60>::set(kernel_, t60); 04577 SetArg<61, T61>::set(kernel_, t61); 04578 SetArg<62, T62>::set(kernel_, t62); 04579 SetArg<63, T63>::set(kernel_, t63); 04580 SetArg<64, T64>::set(kernel_, t64); 04581 SetArg<65, T65>::set(kernel_, t65); 04582 SetArg<66, T66>::set(kernel_, t66); 04583 SetArg<67, T67>::set(kernel_, t67); 04584 SetArg<68, T68>::set(kernel_, t68); 04585 SetArg<69, T69>::set(kernel_, t69); 04586 SetArg<70, T70>::set(kernel_, t70); 04587 SetArg<71, T71>::set(kernel_, t71); 04588 SetArg<72, T72>::set(kernel_, t72); 04589 SetArg<73, T73>::set(kernel_, t73); 04590 SetArg<74, T74>::set(kernel_, t74); 04591 SetArg<75, T75>::set(kernel_, t75); 04592 SetArg<76, T76>::set(kernel_, t76); 04593 SetArg<77, T77>::set(kernel_, t77); 04594 SetArg<78, T78>::set(kernel_, t78); 04595 SetArg<79, T79>::set(kernel_, t79); 04596 SetArg<80, T80>::set(kernel_, t80); 04597 SetArg<81, T81>::set(kernel_, t81); 04598 SetArg<82, T82>::set(kernel_, t82); 04599 SetArg<83, T83>::set(kernel_, t83); 04600 SetArg<84, T84>::set(kernel_, t84); 04601 SetArg<85, T85>::set(kernel_, t85); 04602 SetArg<86, T86>::set(kernel_, t86); 04603 SetArg<87, T87>::set(kernel_, t87); 04604 SetArg<88, T88>::set(kernel_, t88); 04605 SetArg<89, T89>::set(kernel_, t89); 04606 SetArg<90, T90>::set(kernel_, t90); 04607 SetArg<91, T91>::set(kernel_, t91); 04608 SetArg<92, T92>::set(kernel_, t92); 04609 SetArg<93, T93>::set(kernel_, t93); 04610 SetArg<94, T94>::set(kernel_, t94); 04611 SetArg<95, T95>::set(kernel_, t95); 04612 SetArg<96, T96>::set(kernel_, t96); 04613 SetArg<97, T97>::set(kernel_, t97); 04614 SetArg<98, T98>::set(kernel_, t98); 04615 SetArg<99, T99>::set(kernel_, t99); 04616 SetArg<100, T100>::set(kernel_, t100); 04617 SetArg<101, T101>::set(kernel_, t101); 04618 SetArg<102, T102>::set(kernel_, t102); 04619 SetArg<103, T103>::set(kernel_, t103); 04620 SetArg<104, T104>::set(kernel_, t104); 04621 SetArg<105, T105>::set(kernel_, t105); 04622 SetArg<106, T106>::set(kernel_, t106); 04623 SetArg<107, T107>::set(kernel_, t107); 04624 SetArg<108, T108>::set(kernel_, t108); 04625 SetArg<109, T109>::set(kernel_, t109); 04626 SetArg<110, T110>::set(kernel_, t110); 04627 SetArg<111, T111>::set(kernel_, t111); 04628 SetArg<112, T112>::set(kernel_, t112); 04629 SetArg<113, T113>::set(kernel_, t113); 04630 SetArg<114, T114>::set(kernel_, t114); 04631 SetArg<115, T115>::set(kernel_, t115); 04632 SetArg<116, T116>::set(kernel_, t116); 04633 SetArg<117, T117>::set(kernel_, t117); 04634 SetArg<118, T118>::set(kernel_, t118); 04635 SetArg<119, T119>::set(kernel_, t119); 04636 SetArg<120, T120>::set(kernel_, t120); 04637 SetArg<121, T121>::set(kernel_, t121); 04638 SetArg<122, T122>::set(kernel_, t122); 04639 SetArg<123, T123>::set(kernel_, t123); 04640 SetArg<124, T124>::set(kernel_, t124); 04641 SetArg<125, T125>::set(kernel_, t125); 04642 SetArg<126, T126>::set(kernel_, t126); 04643 SetArg<127, T127>::set(kernel_, t127); 04644 04645 // Move any arguments that need moving 04646 MoveToDevice<T0>::move(args.queue_, t0); 04647 MoveToDevice<T1>::move(args.queue_, t1); 04648 MoveToDevice<T2>::move(args.queue_, t2); 04649 MoveToDevice<T3>::move(args.queue_, t3); 04650 MoveToDevice<T4>::move(args.queue_, t4); 04651 MoveToDevice<T5>::move(args.queue_, t5); 04652 MoveToDevice<T6>::move(args.queue_, t6); 04653 MoveToDevice<T7>::move(args.queue_, t7); 04654 MoveToDevice<T8>::move(args.queue_, t8); 04655 MoveToDevice<T9>::move(args.queue_, t9); 04656 MoveToDevice<T10>::move(args.queue_, t10); 04657 MoveToDevice<T11>::move(args.queue_, t11); 04658 MoveToDevice<T12>::move(args.queue_, t12); 04659 MoveToDevice<T13>::move(args.queue_, t13); 04660 MoveToDevice<T14>::move(args.queue_, t14); 04661 MoveToDevice<T15>::move(args.queue_, t15); 04662 MoveToDevice<T16>::move(args.queue_, t16); 04663 MoveToDevice<T17>::move(args.queue_, t17); 04664 MoveToDevice<T18>::move(args.queue_, t18); 04665 MoveToDevice<T19>::move(args.queue_, t19); 04666 MoveToDevice<T20>::move(args.queue_, t20); 04667 MoveToDevice<T21>::move(args.queue_, t21); 04668 MoveToDevice<T22>::move(args.queue_, t22); 04669 MoveToDevice<T23>::move(args.queue_, t23); 04670 MoveToDevice<T24>::move(args.queue_, t24); 04671 MoveToDevice<T25>::move(args.queue_, t25); 04672 MoveToDevice<T26>::move(args.queue_, t26); 04673 MoveToDevice<T27>::move(args.queue_, t27); 04674 MoveToDevice<T28>::move(args.queue_, t28); 04675 MoveToDevice<T29>::move(args.queue_, t29); 04676 MoveToDevice<T30>::move(args.queue_, t30); 04677 MoveToDevice<T31>::move(args.queue_, t31); 04678 MoveToDevice<T32>::move(args.queue_, t32); 04679 MoveToDevice<T33>::move(args.queue_, t33); 04680 MoveToDevice<T34>::move(args.queue_, t34); 04681 MoveToDevice<T35>::move(args.queue_, t35); 04682 MoveToDevice<T36>::move(args.queue_, t36); 04683 MoveToDevice<T37>::move(args.queue_, t37); 04684 MoveToDevice<T38>::move(args.queue_, t38); 04685 MoveToDevice<T39>::move(args.queue_, t39); 04686 MoveToDevice<T40>::move(args.queue_, t40); 04687 MoveToDevice<T41>::move(args.queue_, t41); 04688 MoveToDevice<T42>::move(args.queue_, t42); 04689 MoveToDevice<T43>::move(args.queue_, t43); 04690 MoveToDevice<T44>::move(args.queue_, t44); 04691 MoveToDevice<T45>::move(args.queue_, t45); 04692 MoveToDevice<T46>::move(args.queue_, t46); 04693 MoveToDevice<T47>::move(args.queue_, t47); 04694 MoveToDevice<T48>::move(args.queue_, t48); 04695 MoveToDevice<T49>::move(args.queue_, t49); 04696 MoveToDevice<T50>::move(args.queue_, t50); 04697 MoveToDevice<T51>::move(args.queue_, t51); 04698 MoveToDevice<T52>::move(args.queue_, t52); 04699 MoveToDevice<T53>::move(args.queue_, t53); 04700 MoveToDevice<T54>::move(args.queue_, t54); 04701 MoveToDevice<T55>::move(args.queue_, t55); 04702 MoveToDevice<T56>::move(args.queue_, t56); 04703 MoveToDevice<T57>::move(args.queue_, t57); 04704 MoveToDevice<T58>::move(args.queue_, t58); 04705 MoveToDevice<T59>::move(args.queue_, t59); 04706 MoveToDevice<T60>::move(args.queue_, t60); 04707 MoveToDevice<T61>::move(args.queue_, t61); 04708 MoveToDevice<T62>::move(args.queue_, t62); 04709 MoveToDevice<T63>::move(args.queue_, t63); 04710 MoveToDevice<T64>::move(args.queue_, t64); 04711 MoveToDevice<T65>::move(args.queue_, t65); 04712 MoveToDevice<T66>::move(args.queue_, t66); 04713 MoveToDevice<T67>::move(args.queue_, t67); 04714 MoveToDevice<T68>::move(args.queue_, t68); 04715 MoveToDevice<T69>::move(args.queue_, t69); 04716 MoveToDevice<T70>::move(args.queue_, t70); 04717 MoveToDevice<T71>::move(args.queue_, t71); 04718 MoveToDevice<T72>::move(args.queue_, t72); 04719 MoveToDevice<T73>::move(args.queue_, t73); 04720 MoveToDevice<T74>::move(args.queue_, t74); 04721 MoveToDevice<T75>::move(args.queue_, t75); 04722 MoveToDevice<T76>::move(args.queue_, t76); 04723 MoveToDevice<T77>::move(args.queue_, t77); 04724 MoveToDevice<T78>::move(args.queue_, t78); 04725 MoveToDevice<T79>::move(args.queue_, t79); 04726 MoveToDevice<T80>::move(args.queue_, t80); 04727 MoveToDevice<T81>::move(args.queue_, t81); 04728 MoveToDevice<T82>::move(args.queue_, t82); 04729 MoveToDevice<T83>::move(args.queue_, t83); 04730 MoveToDevice<T84>::move(args.queue_, t84); 04731 MoveToDevice<T85>::move(args.queue_, t85); 04732 MoveToDevice<T86>::move(args.queue_, t86); 04733 MoveToDevice<T87>::move(args.queue_, t87); 04734 MoveToDevice<T88>::move(args.queue_, t88); 04735 MoveToDevice<T89>::move(args.queue_, t89); 04736 MoveToDevice<T90>::move(args.queue_, t90); 04737 MoveToDevice<T91>::move(args.queue_, t91); 04738 MoveToDevice<T92>::move(args.queue_, t92); 04739 MoveToDevice<T93>::move(args.queue_, t93); 04740 MoveToDevice<T94>::move(args.queue_, t94); 04741 MoveToDevice<T95>::move(args.queue_, t95); 04742 MoveToDevice<T96>::move(args.queue_, t96); 04743 MoveToDevice<T97>::move(args.queue_, t97); 04744 MoveToDevice<T98>::move(args.queue_, t98); 04745 MoveToDevice<T99>::move(args.queue_, t99); 04746 MoveToDevice<T100>::move(args.queue_, t100); 04747 MoveToDevice<T101>::move(args.queue_, t101); 04748 MoveToDevice<T102>::move(args.queue_, t102); 04749 MoveToDevice<T103>::move(args.queue_, t103); 04750 MoveToDevice<T104>::move(args.queue_, t104); 04751 MoveToDevice<T105>::move(args.queue_, t105); 04752 MoveToDevice<T106>::move(args.queue_, t106); 04753 MoveToDevice<T107>::move(args.queue_, t107); 04754 MoveToDevice<T108>::move(args.queue_, t108); 04755 MoveToDevice<T109>::move(args.queue_, t109); 04756 MoveToDevice<T110>::move(args.queue_, t110); 04757 MoveToDevice<T111>::move(args.queue_, t111); 04758 MoveToDevice<T112>::move(args.queue_, t112); 04759 MoveToDevice<T113>::move(args.queue_, t113); 04760 MoveToDevice<T114>::move(args.queue_, t114); 04761 MoveToDevice<T115>::move(args.queue_, t115); 04762 MoveToDevice<T116>::move(args.queue_, t116); 04763 MoveToDevice<T117>::move(args.queue_, t117); 04764 MoveToDevice<T118>::move(args.queue_, t118); 04765 MoveToDevice<T119>::move(args.queue_, t119); 04766 MoveToDevice<T120>::move(args.queue_, t120); 04767 MoveToDevice<T121>::move(args.queue_, t121); 04768 MoveToDevice<T122>::move(args.queue_, t122); 04769 MoveToDevice<T123>::move(args.queue_, t123); 04770 MoveToDevice<T124>::move(args.queue_, t124); 04771 MoveToDevice<T125>::move(args.queue_, t125); 04772 MoveToDevice<T126>::move(args.queue_, t126); 04773 MoveToDevice<T127>::move(args.queue_, t127); 04774 04775 args.queue_.enqueueNDRangeKernel( 04776 kernel_, 04777 args.offset_, 04778 args.global_, 04779 args.local_, 04780 NULL, 04781 &event); 04782 04783 // Move any arguments that need moving 04784 MoveFromDevice<T0>::move(args.queue_, t0); 04785 MoveFromDevice<T1>::move(args.queue_, t1); 04786 MoveFromDevice<T2>::move(args.queue_, t2); 04787 MoveFromDevice<T3>::move(args.queue_, t3); 04788 MoveFromDevice<T4>::move(args.queue_, t4); 04789 MoveFromDevice<T5>::move(args.queue_, t5); 04790 MoveFromDevice<T6>::move(args.queue_, t6); 04791 MoveFromDevice<T7>::move(args.queue_, t7); 04792 MoveFromDevice<T8>::move(args.queue_, t8); 04793 MoveFromDevice<T9>::move(args.queue_, t9); 04794 MoveFromDevice<T10>::move(args.queue_, t10); 04795 MoveFromDevice<T11>::move(args.queue_, t11); 04796 MoveFromDevice<T12>::move(args.queue_, t12); 04797 MoveFromDevice<T13>::move(args.queue_, t13); 04798 MoveFromDevice<T14>::move(args.queue_, t14); 04799 MoveFromDevice<T15>::move(args.queue_, t15); 04800 MoveFromDevice<T16>::move(args.queue_, t16); 04801 MoveFromDevice<T17>::move(args.queue_, t17); 04802 MoveFromDevice<T18>::move(args.queue_, t18); 04803 MoveFromDevice<T19>::move(args.queue_, t19); 04804 MoveFromDevice<T20>::move(args.queue_, t20); 04805 MoveFromDevice<T21>::move(args.queue_, t21); 04806 MoveFromDevice<T22>::move(args.queue_, t22); 04807 MoveFromDevice<T23>::move(args.queue_, t23); 04808 MoveFromDevice<T24>::move(args.queue_, t24); 04809 MoveFromDevice<T25>::move(args.queue_, t25); 04810 MoveFromDevice<T26>::move(args.queue_, t26); 04811 MoveFromDevice<T27>::move(args.queue_, t27); 04812 MoveFromDevice<T28>::move(args.queue_, t28); 04813 MoveFromDevice<T29>::move(args.queue_, t29); 04814 MoveFromDevice<T30>::move(args.queue_, t30); 04815 MoveFromDevice<T31>::move(args.queue_, t31); 04816 MoveFromDevice<T32>::move(args.queue_, t32); 04817 MoveFromDevice<T33>::move(args.queue_, t33); 04818 MoveFromDevice<T34>::move(args.queue_, t34); 04819 MoveFromDevice<T35>::move(args.queue_, t35); 04820 MoveFromDevice<T36>::move(args.queue_, t36); 04821 MoveFromDevice<T37>::move(args.queue_, t37); 04822 MoveFromDevice<T38>::move(args.queue_, t38); 04823 MoveFromDevice<T39>::move(args.queue_, t39); 04824 MoveFromDevice<T40>::move(args.queue_, t40); 04825 MoveFromDevice<T41>::move(args.queue_, t41); 04826 MoveFromDevice<T42>::move(args.queue_, t42); 04827 MoveFromDevice<T43>::move(args.queue_, t43); 04828 MoveFromDevice<T44>::move(args.queue_, t44); 04829 MoveFromDevice<T45>::move(args.queue_, t45); 04830 MoveFromDevice<T46>::move(args.queue_, t46); 04831 MoveFromDevice<T47>::move(args.queue_, t47); 04832 MoveFromDevice<T48>::move(args.queue_, t48); 04833 MoveFromDevice<T49>::move(args.queue_, t49); 04834 MoveFromDevice<T50>::move(args.queue_, t50); 04835 MoveFromDevice<T51>::move(args.queue_, t51); 04836 MoveFromDevice<T52>::move(args.queue_, t52); 04837 MoveFromDevice<T53>::move(args.queue_, t53); 04838 MoveFromDevice<T54>::move(args.queue_, t54); 04839 MoveFromDevice<T55>::move(args.queue_, t55); 04840 MoveFromDevice<T56>::move(args.queue_, t56); 04841 MoveFromDevice<T57>::move(args.queue_, t57); 04842 MoveFromDevice<T58>::move(args.queue_, t58); 04843 MoveFromDevice<T59>::move(args.queue_, t59); 04844 MoveFromDevice<T60>::move(args.queue_, t60); 04845 MoveFromDevice<T61>::move(args.queue_, t61); 04846 MoveFromDevice<T62>::move(args.queue_, t62); 04847 MoveFromDevice<T63>::move(args.queue_, t63); 04848 MoveFromDevice<T64>::move(args.queue_, t64); 04849 MoveFromDevice<T65>::move(args.queue_, t65); 04850 MoveFromDevice<T66>::move(args.queue_, t66); 04851 MoveFromDevice<T67>::move(args.queue_, t67); 04852 MoveFromDevice<T68>::move(args.queue_, t68); 04853 MoveFromDevice<T69>::move(args.queue_, t69); 04854 MoveFromDevice<T70>::move(args.queue_, t70); 04855 MoveFromDevice<T71>::move(args.queue_, t71); 04856 MoveFromDevice<T72>::move(args.queue_, t72); 04857 MoveFromDevice<T73>::move(args.queue_, t73); 04858 MoveFromDevice<T74>::move(args.queue_, t74); 04859 MoveFromDevice<T75>::move(args.queue_, t75); 04860 MoveFromDevice<T76>::move(args.queue_, t76); 04861 MoveFromDevice<T77>::move(args.queue_, t77); 04862 MoveFromDevice<T78>::move(args.queue_, t78); 04863 MoveFromDevice<T79>::move(args.queue_, t79); 04864 MoveFromDevice<T80>::move(args.queue_, t80); 04865 MoveFromDevice<T81>::move(args.queue_, t81); 04866 MoveFromDevice<T82>::move(args.queue_, t82); 04867 MoveFromDevice<T83>::move(args.queue_, t83); 04868 MoveFromDevice<T84>::move(args.queue_, t84); 04869 MoveFromDevice<T85>::move(args.queue_, t85); 04870 MoveFromDevice<T86>::move(args.queue_, t86); 04871 MoveFromDevice<T87>::move(args.queue_, t87); 04872 MoveFromDevice<T88>::move(args.queue_, t88); 04873 MoveFromDevice<T89>::move(args.queue_, t89); 04874 MoveFromDevice<T90>::move(args.queue_, t90); 04875 MoveFromDevice<T91>::move(args.queue_, t91); 04876 MoveFromDevice<T92>::move(args.queue_, t92); 04877 MoveFromDevice<T93>::move(args.queue_, t93); 04878 MoveFromDevice<T94>::move(args.queue_, t94); 04879 MoveFromDevice<T95>::move(args.queue_, t95); 04880 MoveFromDevice<T96>::move(args.queue_, t96); 04881 MoveFromDevice<T97>::move(args.queue_, t97); 04882 MoveFromDevice<T98>::move(args.queue_, t98); 04883 MoveFromDevice<T99>::move(args.queue_, t99); 04884 MoveFromDevice<T100>::move(args.queue_, t100); 04885 MoveFromDevice<T101>::move(args.queue_, t101); 04886 MoveFromDevice<T102>::move(args.queue_, t102); 04887 MoveFromDevice<T103>::move(args.queue_, t103); 04888 MoveFromDevice<T104>::move(args.queue_, t104); 04889 MoveFromDevice<T105>::move(args.queue_, t105); 04890 MoveFromDevice<T106>::move(args.queue_, t106); 04891 MoveFromDevice<T107>::move(args.queue_, t107); 04892 MoveFromDevice<T108>::move(args.queue_, t108); 04893 MoveFromDevice<T109>::move(args.queue_, t109); 04894 MoveFromDevice<T110>::move(args.queue_, t110); 04895 MoveFromDevice<T111>::move(args.queue_, t111); 04896 MoveFromDevice<T112>::move(args.queue_, t112); 04897 MoveFromDevice<T113>::move(args.queue_, t113); 04898 MoveFromDevice<T114>::move(args.queue_, t114); 04899 MoveFromDevice<T115>::move(args.queue_, t115); 04900 MoveFromDevice<T116>::move(args.queue_, t116); 04901 MoveFromDevice<T117>::move(args.queue_, t117); 04902 MoveFromDevice<T118>::move(args.queue_, t118); 04903 MoveFromDevice<T119>::move(args.queue_, t119); 04904 MoveFromDevice<T120>::move(args.queue_, t120); 04905 MoveFromDevice<T121>::move(args.queue_, t121); 04906 MoveFromDevice<T122>::move(args.queue_, t122); 04907 MoveFromDevice<T123>::move(args.queue_, t123); 04908 MoveFromDevice<T124>::move(args.queue_, t124); 04909 MoveFromDevice<T125>::move(args.queue_, t125); 04910 MoveFromDevice<T126>::move(args.queue_, t126); 04911 MoveFromDevice<T127>::move(args.queue_, t127); 04912 04913 return event; 04914 } 04915 04916 Event operator() ( 04917 const EnqueueArgs& args, 04918 const Event& waitEvent, 04919 T0 t0, 04920 T1 t1 = NullType(), 04921 T2 t2 = NullType(), 04922 T3 t3 = NullType(), 04923 T4 t4 = NullType(), 04924 T5 t5 = NullType(), 04925 T6 t6 = NullType(), 04926 T7 t7 = NullType(), 04927 T8 t8 = NullType(), 04928 T9 t9 = NullType(), 04929 T10 t10 = NullType(), 04930 T11 t11 = NullType(), 04931 T12 t12 = NullType(), 04932 T13 t13 = NullType(), 04933 T14 t14 = NullType(), 04934 T15 t15 = NullType(), 04935 T16 t16 = NullType(), 04936 T17 t17 = NullType(), 04937 T18 t18 = NullType(), 04938 T19 t19 = NullType(), 04939 T20 t20 = NullType(), 04940 T21 t21 = NullType(), 04941 T22 t22 = NullType(), 04942 T23 t23 = NullType(), 04943 T24 t24 = NullType(), 04944 T25 t25 = NullType(), 04945 T26 t26 = NullType(), 04946 T27 t27 = NullType(), 04947 T28 t28 = NullType(), 04948 T29 t29 = NullType(), 04949 T30 t30 = NullType(), 04950 T31 t31 = NullType(), 04951 T32 t32 = NullType(), 04952 T33 t33 = NullType(), 04953 T34 t34 = NullType(), 04954 T35 t35 = NullType(), 04955 T36 t36 = NullType(), 04956 T37 t37 = NullType(), 04957 T38 t38 = NullType(), 04958 T39 t39 = NullType(), 04959 T40 t40 = NullType(), 04960 T41 t41 = NullType(), 04961 T42 t42 = NullType(), 04962 T43 t43 = NullType(), 04963 T44 t44 = NullType(), 04964 T45 t45 = NullType(), 04965 T46 t46 = NullType(), 04966 T47 t47 = NullType(), 04967 T48 t48 = NullType(), 04968 T49 t49 = NullType(), 04969 T50 t50 = NullType(), 04970 T51 t51 = NullType(), 04971 T52 t52 = NullType(), 04972 T53 t53 = NullType(), 04973 T54 t54 = NullType(), 04974 T55 t55 = NullType(), 04975 T56 t56 = NullType(), 04976 T57 t57 = NullType(), 04977 T58 t58 = NullType(), 04978 T59 t59 = NullType(), 04979 T60 t60 = NullType(), 04980 T61 t61 = NullType(), 04981 T62 t62 = NullType(), 04982 T63 t63 = NullType(), 04983 T64 t64 = NullType(), 04984 T65 t65 = NullType(), 04985 T66 t66 = NullType(), 04986 T67 t67 = NullType(), 04987 T68 t68 = NullType(), 04988 T69 t69 = NullType(), 04989 T70 t70 = NullType(), 04990 T71 t71 = NullType(), 04991 T72 t72 = NullType(), 04992 T73 t73 = NullType(), 04993 T74 t74 = NullType(), 04994 T75 t75 = NullType(), 04995 T76 t76 = NullType(), 04996 T77 t77 = NullType(), 04997 T78 t78 = NullType(), 04998 T79 t79 = NullType(), 04999 T80 t80 = NullType(), 05000 T81 t81 = NullType(), 05001 T82 t82 = NullType(), 05002 T83 t83 = NullType(), 05003 T84 t84 = NullType(), 05004 T85 t85 = NullType(), 05005 T86 t86 = NullType(), 05006 T87 t87 = NullType(), 05007 T88 t88 = NullType(), 05008 T89 t89 = NullType(), 05009 T90 t90 = NullType(), 05010 T91 t91 = NullType(), 05011 T92 t92 = NullType(), 05012 T93 t93 = NullType(), 05013 T94 t94 = NullType(), 05014 T95 t95 = NullType(), 05015 T96 t96 = NullType(), 05016 T97 t97 = NullType(), 05017 T98 t98 = NullType(), 05018 T99 t99 = NullType(), 05019 T100 t100 = NullType(), 05020 T101 t101 = NullType(), 05021 T102 t102 = NullType(), 05022 T103 t103 = NullType(), 05023 T104 t104 = NullType(), 05024 T105 t105 = NullType(), 05025 T106 t106 = NullType(), 05026 T107 t107 = NullType(), 05027 T108 t108 = NullType(), 05028 T109 t109 = NullType(), 05029 T110 t110 = NullType(), 05030 T111 t111 = NullType(), 05031 T112 t112 = NullType(), 05032 T113 t113 = NullType(), 05033 T114 t114 = NullType(), 05034 T115 t115 = NullType(), 05035 T116 t116 = NullType(), 05036 T117 t117 = NullType(), 05037 T118 t118 = NullType(), 05038 T119 t119 = NullType(), 05039 T120 t120 = NullType(), 05040 T121 t121 = NullType(), 05041 T122 t122 = NullType(), 05042 T123 t123 = NullType(), 05043 T124 t124 = NullType(), 05044 T125 t125 = NullType(), 05045 T126 t126 = NullType(), 05046 T127 t127 = NullType()) 05047 { 05048 Event event; 05049 SetArg<0, T0>::set(kernel_, t0); 05050 SetArg<1, T1>::set(kernel_, t1); 05051 SetArg<2, T2>::set(kernel_, t2); 05052 SetArg<3, T3>::set(kernel_, t3); 05053 SetArg<4, T4>::set(kernel_, t4); 05054 SetArg<5, T5>::set(kernel_, t5); 05055 SetArg<6, T6>::set(kernel_, t6); 05056 SetArg<7, T7>::set(kernel_, t7); 05057 SetArg<8, T8>::set(kernel_, t8); 05058 SetArg<9, T9>::set(kernel_, t9); 05059 SetArg<10, T10>::set(kernel_, t10); 05060 SetArg<11, T11>::set(kernel_, t11); 05061 SetArg<12, T12>::set(kernel_, t12); 05062 SetArg<13, T13>::set(kernel_, t13); 05063 SetArg<14, T14>::set(kernel_, t14); 05064 SetArg<15, T15>::set(kernel_, t15); 05065 SetArg<16, T16>::set(kernel_, t16); 05066 SetArg<17, T17>::set(kernel_, t17); 05067 SetArg<18, T18>::set(kernel_, t18); 05068 SetArg<19, T19>::set(kernel_, t19); 05069 SetArg<20, T20>::set(kernel_, t20); 05070 SetArg<21, T21>::set(kernel_, t21); 05071 SetArg<22, T22>::set(kernel_, t22); 05072 SetArg<23, T23>::set(kernel_, t23); 05073 SetArg<24, T24>::set(kernel_, t24); 05074 SetArg<25, T25>::set(kernel_, t25); 05075 SetArg<26, T26>::set(kernel_, t26); 05076 SetArg<27, T27>::set(kernel_, t27); 05077 SetArg<28, T28>::set(kernel_, t28); 05078 SetArg<29, T29>::set(kernel_, t29); 05079 SetArg<30, T30>::set(kernel_, t30); 05080 SetArg<31, T31>::set(kernel_, t31); 05081 SetArg<32, T32>::set(kernel_, t32); 05082 SetArg<33, T33>::set(kernel_, t33); 05083 SetArg<34, T34>::set(kernel_, t34); 05084 SetArg<35, T35>::set(kernel_, t35); 05085 SetArg<36, T36>::set(kernel_, t36); 05086 SetArg<37, T37>::set(kernel_, t37); 05087 SetArg<38, T38>::set(kernel_, t38); 05088 SetArg<39, T39>::set(kernel_, t39); 05089 SetArg<40, T40>::set(kernel_, t40); 05090 SetArg<41, T41>::set(kernel_, t41); 05091 SetArg<42, T42>::set(kernel_, t42); 05092 SetArg<43, T43>::set(kernel_, t43); 05093 SetArg<44, T44>::set(kernel_, t44); 05094 SetArg<45, T45>::set(kernel_, t45); 05095 SetArg<46, T46>::set(kernel_, t46); 05096 SetArg<47, T47>::set(kernel_, t47); 05097 SetArg<48, T48>::set(kernel_, t48); 05098 SetArg<49, T49>::set(kernel_, t49); 05099 SetArg<50, T50>::set(kernel_, t50); 05100 SetArg<51, T51>::set(kernel_, t51); 05101 SetArg<52, T52>::set(kernel_, t52); 05102 SetArg<53, T53>::set(kernel_, t53); 05103 SetArg<54, T54>::set(kernel_, t54); 05104 SetArg<55, T55>::set(kernel_, t55); 05105 SetArg<56, T56>::set(kernel_, t56); 05106 SetArg<57, T57>::set(kernel_, t57); 05107 SetArg<58, T58>::set(kernel_, t58); 05108 SetArg<59, T59>::set(kernel_, t59); 05109 SetArg<60, T60>::set(kernel_, t60); 05110 SetArg<61, T61>::set(kernel_, t61); 05111 SetArg<62, T62>::set(kernel_, t62); 05112 SetArg<63, T63>::set(kernel_, t63); 05113 SetArg<64, T64>::set(kernel_, t64); 05114 SetArg<65, T65>::set(kernel_, t65); 05115 SetArg<66, T66>::set(kernel_, t66); 05116 SetArg<67, T67>::set(kernel_, t67); 05117 SetArg<68, T68>::set(kernel_, t68); 05118 SetArg<69, T69>::set(kernel_, t69); 05119 SetArg<70, T70>::set(kernel_, t70); 05120 SetArg<71, T71>::set(kernel_, t71); 05121 SetArg<72, T72>::set(kernel_, t72); 05122 SetArg<73, T73>::set(kernel_, t73); 05123 SetArg<74, T74>::set(kernel_, t74); 05124 SetArg<75, T75>::set(kernel_, t75); 05125 SetArg<76, T76>::set(kernel_, t76); 05126 SetArg<77, T77>::set(kernel_, t77); 05127 SetArg<78, T78>::set(kernel_, t78); 05128 SetArg<79, T79>::set(kernel_, t79); 05129 SetArg<80, T80>::set(kernel_, t80); 05130 SetArg<81, T81>::set(kernel_, t81); 05131 SetArg<82, T82>::set(kernel_, t82); 05132 SetArg<83, T83>::set(kernel_, t83); 05133 SetArg<84, T84>::set(kernel_, t84); 05134 SetArg<85, T85>::set(kernel_, t85); 05135 SetArg<86, T86>::set(kernel_, t86); 05136 SetArg<87, T87>::set(kernel_, t87); 05137 SetArg<88, T88>::set(kernel_, t88); 05138 SetArg<89, T89>::set(kernel_, t89); 05139 SetArg<90, T90>::set(kernel_, t90); 05140 SetArg<91, T91>::set(kernel_, t91); 05141 SetArg<92, T92>::set(kernel_, t92); 05142 SetArg<93, T93>::set(kernel_, t93); 05143 SetArg<94, T94>::set(kernel_, t94); 05144 SetArg<95, T95>::set(kernel_, t95); 05145 SetArg<96, T96>::set(kernel_, t96); 05146 SetArg<97, T97>::set(kernel_, t97); 05147 SetArg<98, T98>::set(kernel_, t98); 05148 SetArg<99, T99>::set(kernel_, t99); 05149 SetArg<100, T100>::set(kernel_, t100); 05150 SetArg<101, T101>::set(kernel_, t101); 05151 SetArg<102, T102>::set(kernel_, t102); 05152 SetArg<103, T103>::set(kernel_, t103); 05153 SetArg<104, T104>::set(kernel_, t104); 05154 SetArg<105, T105>::set(kernel_, t105); 05155 SetArg<106, T106>::set(kernel_, t106); 05156 SetArg<107, T107>::set(kernel_, t107); 05157 SetArg<108, T108>::set(kernel_, t108); 05158 SetArg<109, T109>::set(kernel_, t109); 05159 SetArg<110, T110>::set(kernel_, t110); 05160 SetArg<111, T111>::set(kernel_, t111); 05161 SetArg<112, T112>::set(kernel_, t112); 05162 SetArg<113, T113>::set(kernel_, t113); 05163 SetArg<114, T114>::set(kernel_, t114); 05164 SetArg<115, T115>::set(kernel_, t115); 05165 SetArg<116, T116>::set(kernel_, t116); 05166 SetArg<117, T117>::set(kernel_, t117); 05167 SetArg<118, T118>::set(kernel_, t118); 05168 SetArg<119, T119>::set(kernel_, t119); 05169 SetArg<120, T120>::set(kernel_, t120); 05170 SetArg<121, T121>::set(kernel_, t121); 05171 SetArg<122, T122>::set(kernel_, t122); 05172 SetArg<123, T123>::set(kernel_, t123); 05173 SetArg<124, T124>::set(kernel_, t124); 05174 SetArg<125, T125>::set(kernel_, t125); 05175 SetArg<126, T126>::set(kernel_, t126); 05176 SetArg<127, T127>::set(kernel_, t127); 05177 05178 // Move any arguments that need moving 05179 MoveToDevice<T0>::move(args.queue_, t0); 05180 MoveToDevice<T1>::move(args.queue_, t1); 05181 MoveToDevice<T2>::move(args.queue_, t2); 05182 MoveToDevice<T3>::move(args.queue_, t3); 05183 MoveToDevice<T4>::move(args.queue_, t4); 05184 MoveToDevice<T5>::move(args.queue_, t5); 05185 MoveToDevice<T6>::move(args.queue_, t6); 05186 MoveToDevice<T7>::move(args.queue_, t7); 05187 MoveToDevice<T8>::move(args.queue_, t8); 05188 MoveToDevice<T9>::move(args.queue_, t9); 05189 MoveToDevice<T10>::move(args.queue_, t10); 05190 MoveToDevice<T11>::move(args.queue_, t11); 05191 MoveToDevice<T12>::move(args.queue_, t12); 05192 MoveToDevice<T13>::move(args.queue_, t13); 05193 MoveToDevice<T14>::move(args.queue_, t14); 05194 MoveToDevice<T15>::move(args.queue_, t15); 05195 MoveToDevice<T16>::move(args.queue_, t16); 05196 MoveToDevice<T17>::move(args.queue_, t17); 05197 MoveToDevice<T18>::move(args.queue_, t18); 05198 MoveToDevice<T19>::move(args.queue_, t19); 05199 MoveToDevice<T20>::move(args.queue_, t20); 05200 MoveToDevice<T21>::move(args.queue_, t21); 05201 MoveToDevice<T22>::move(args.queue_, t22); 05202 MoveToDevice<T23>::move(args.queue_, t23); 05203 MoveToDevice<T24>::move(args.queue_, t24); 05204 MoveToDevice<T25>::move(args.queue_, t25); 05205 MoveToDevice<T26>::move(args.queue_, t26); 05206 MoveToDevice<T27>::move(args.queue_, t27); 05207 MoveToDevice<T28>::move(args.queue_, t28); 05208 MoveToDevice<T29>::move(args.queue_, t29); 05209 MoveToDevice<T30>::move(args.queue_, t30); 05210 MoveToDevice<T31>::move(args.queue_, t31); 05211 MoveToDevice<T32>::move(args.queue_, t32); 05212 MoveToDevice<T33>::move(args.queue_, t33); 05213 MoveToDevice<T34>::move(args.queue_, t34); 05214 MoveToDevice<T35>::move(args.queue_, t35); 05215 MoveToDevice<T36>::move(args.queue_, t36); 05216 MoveToDevice<T37>::move(args.queue_, t37); 05217 MoveToDevice<T38>::move(args.queue_, t38); 05218 MoveToDevice<T39>::move(args.queue_, t39); 05219 MoveToDevice<T40>::move(args.queue_, t40); 05220 MoveToDevice<T41>::move(args.queue_, t41); 05221 MoveToDevice<T42>::move(args.queue_, t42); 05222 MoveToDevice<T43>::move(args.queue_, t43); 05223 MoveToDevice<T44>::move(args.queue_, t44); 05224 MoveToDevice<T45>::move(args.queue_, t45); 05225 MoveToDevice<T46>::move(args.queue_, t46); 05226 MoveToDevice<T47>::move(args.queue_, t47); 05227 MoveToDevice<T48>::move(args.queue_, t48); 05228 MoveToDevice<T49>::move(args.queue_, t49); 05229 MoveToDevice<T50>::move(args.queue_, t50); 05230 MoveToDevice<T51>::move(args.queue_, t51); 05231 MoveToDevice<T52>::move(args.queue_, t52); 05232 MoveToDevice<T53>::move(args.queue_, t53); 05233 MoveToDevice<T54>::move(args.queue_, t54); 05234 MoveToDevice<T55>::move(args.queue_, t55); 05235 MoveToDevice<T56>::move(args.queue_, t56); 05236 MoveToDevice<T57>::move(args.queue_, t57); 05237 MoveToDevice<T58>::move(args.queue_, t58); 05238 MoveToDevice<T59>::move(args.queue_, t59); 05239 MoveToDevice<T60>::move(args.queue_, t60); 05240 MoveToDevice<T61>::move(args.queue_, t61); 05241 MoveToDevice<T62>::move(args.queue_, t62); 05242 MoveToDevice<T63>::move(args.queue_, t63); 05243 MoveToDevice<T64>::move(args.queue_, t64); 05244 MoveToDevice<T65>::move(args.queue_, t65); 05245 MoveToDevice<T66>::move(args.queue_, t66); 05246 MoveToDevice<T67>::move(args.queue_, t67); 05247 MoveToDevice<T68>::move(args.queue_, t68); 05248 MoveToDevice<T69>::move(args.queue_, t69); 05249 MoveToDevice<T70>::move(args.queue_, t70); 05250 MoveToDevice<T71>::move(args.queue_, t71); 05251 MoveToDevice<T72>::move(args.queue_, t72); 05252 MoveToDevice<T73>::move(args.queue_, t73); 05253 MoveToDevice<T74>::move(args.queue_, t74); 05254 MoveToDevice<T75>::move(args.queue_, t75); 05255 MoveToDevice<T76>::move(args.queue_, t76); 05256 MoveToDevice<T77>::move(args.queue_, t77); 05257 MoveToDevice<T78>::move(args.queue_, t78); 05258 MoveToDevice<T79>::move(args.queue_, t79); 05259 MoveToDevice<T80>::move(args.queue_, t80); 05260 MoveToDevice<T81>::move(args.queue_, t81); 05261 MoveToDevice<T82>::move(args.queue_, t82); 05262 MoveToDevice<T83>::move(args.queue_, t83); 05263 MoveToDevice<T84>::move(args.queue_, t84); 05264 MoveToDevice<T85>::move(args.queue_, t85); 05265 MoveToDevice<T86>::move(args.queue_, t86); 05266 MoveToDevice<T87>::move(args.queue_, t87); 05267 MoveToDevice<T88>::move(args.queue_, t88); 05268 MoveToDevice<T89>::move(args.queue_, t89); 05269 MoveToDevice<T90>::move(args.queue_, t90); 05270 MoveToDevice<T91>::move(args.queue_, t91); 05271 MoveToDevice<T92>::move(args.queue_, t92); 05272 MoveToDevice<T93>::move(args.queue_, t93); 05273 MoveToDevice<T94>::move(args.queue_, t94); 05274 MoveToDevice<T95>::move(args.queue_, t95); 05275 MoveToDevice<T96>::move(args.queue_, t96); 05276 MoveToDevice<T97>::move(args.queue_, t97); 05277 MoveToDevice<T98>::move(args.queue_, t98); 05278 MoveToDevice<T99>::move(args.queue_, t99); 05279 MoveToDevice<T100>::move(args.queue_, t100); 05280 MoveToDevice<T101>::move(args.queue_, t101); 05281 MoveToDevice<T102>::move(args.queue_, t102); 05282 MoveToDevice<T103>::move(args.queue_, t103); 05283 MoveToDevice<T104>::move(args.queue_, t104); 05284 MoveToDevice<T105>::move(args.queue_, t105); 05285 MoveToDevice<T106>::move(args.queue_, t106); 05286 MoveToDevice<T107>::move(args.queue_, t107); 05287 MoveToDevice<T108>::move(args.queue_, t108); 05288 MoveToDevice<T109>::move(args.queue_, t109); 05289 MoveToDevice<T110>::move(args.queue_, t110); 05290 MoveToDevice<T111>::move(args.queue_, t111); 05291 MoveToDevice<T112>::move(args.queue_, t112); 05292 MoveToDevice<T113>::move(args.queue_, t113); 05293 MoveToDevice<T114>::move(args.queue_, t114); 05294 MoveToDevice<T115>::move(args.queue_, t115); 05295 MoveToDevice<T116>::move(args.queue_, t116); 05296 MoveToDevice<T117>::move(args.queue_, t117); 05297 MoveToDevice<T118>::move(args.queue_, t118); 05298 MoveToDevice<T119>::move(args.queue_, t119); 05299 MoveToDevice<T120>::move(args.queue_, t120); 05300 MoveToDevice<T121>::move(args.queue_, t121); 05301 MoveToDevice<T122>::move(args.queue_, t122); 05302 MoveToDevice<T123>::move(args.queue_, t123); 05303 MoveToDevice<T124>::move(args.queue_, t124); 05304 MoveToDevice<T125>::move(args.queue_, t125); 05305 MoveToDevice<T126>::move(args.queue_, t126); 05306 MoveToDevice<T127>::move(args.queue_, t127); 05307 05308 VECTOR_CLASS<Event> events(&waitEvent, &waitEvent); 05309 05310 args.queue_.enqueueNDRangeKernel( 05311 kernel_, 05312 args.offset_, 05313 args.global_, 05314 args.local_, 05315 &events, 05316 &event); 05317 05318 // Move any arguments that need moving 05319 MoveFromDevice<T0>::move(args.queue_, t0); 05320 MoveFromDevice<T1>::move(args.queue_, t1); 05321 MoveFromDevice<T2>::move(args.queue_, t2); 05322 MoveFromDevice<T3>::move(args.queue_, t3); 05323 MoveFromDevice<T4>::move(args.queue_, t4); 05324 MoveFromDevice<T5>::move(args.queue_, t5); 05325 MoveFromDevice<T6>::move(args.queue_, t6); 05326 MoveFromDevice<T7>::move(args.queue_, t7); 05327 MoveFromDevice<T8>::move(args.queue_, t8); 05328 MoveFromDevice<T9>::move(args.queue_, t9); 05329 MoveFromDevice<T10>::move(args.queue_, t10); 05330 MoveFromDevice<T11>::move(args.queue_, t11); 05331 MoveFromDevice<T12>::move(args.queue_, t12); 05332 MoveFromDevice<T13>::move(args.queue_, t13); 05333 MoveFromDevice<T14>::move(args.queue_, t14); 05334 MoveFromDevice<T15>::move(args.queue_, t15); 05335 MoveFromDevice<T16>::move(args.queue_, t16); 05336 MoveFromDevice<T17>::move(args.queue_, t17); 05337 MoveFromDevice<T18>::move(args.queue_, t18); 05338 MoveFromDevice<T19>::move(args.queue_, t19); 05339 MoveFromDevice<T20>::move(args.queue_, t20); 05340 MoveFromDevice<T21>::move(args.queue_, t21); 05341 MoveFromDevice<T22>::move(args.queue_, t22); 05342 MoveFromDevice<T23>::move(args.queue_, t23); 05343 MoveFromDevice<T24>::move(args.queue_, t24); 05344 MoveFromDevice<T25>::move(args.queue_, t25); 05345 MoveFromDevice<T26>::move(args.queue_, t26); 05346 MoveFromDevice<T27>::move(args.queue_, t27); 05347 MoveFromDevice<T28>::move(args.queue_, t28); 05348 MoveFromDevice<T29>::move(args.queue_, t29); 05349 MoveFromDevice<T30>::move(args.queue_, t30); 05350 MoveFromDevice<T31>::move(args.queue_, t31); 05351 MoveFromDevice<T32>::move(args.queue_, t32); 05352 MoveFromDevice<T33>::move(args.queue_, t33); 05353 MoveFromDevice<T34>::move(args.queue_, t34); 05354 MoveFromDevice<T35>::move(args.queue_, t35); 05355 MoveFromDevice<T36>::move(args.queue_, t36); 05356 MoveFromDevice<T37>::move(args.queue_, t37); 05357 MoveFromDevice<T38>::move(args.queue_, t38); 05358 MoveFromDevice<T39>::move(args.queue_, t39); 05359 MoveFromDevice<T40>::move(args.queue_, t40); 05360 MoveFromDevice<T41>::move(args.queue_, t41); 05361 MoveFromDevice<T42>::move(args.queue_, t42); 05362 MoveFromDevice<T43>::move(args.queue_, t43); 05363 MoveFromDevice<T44>::move(args.queue_, t44); 05364 MoveFromDevice<T45>::move(args.queue_, t45); 05365 MoveFromDevice<T46>::move(args.queue_, t46); 05366 MoveFromDevice<T47>::move(args.queue_, t47); 05367 MoveFromDevice<T48>::move(args.queue_, t48); 05368 MoveFromDevice<T49>::move(args.queue_, t49); 05369 MoveFromDevice<T50>::move(args.queue_, t50); 05370 MoveFromDevice<T51>::move(args.queue_, t51); 05371 MoveFromDevice<T52>::move(args.queue_, t52); 05372 MoveFromDevice<T53>::move(args.queue_, t53); 05373 MoveFromDevice<T54>::move(args.queue_, t54); 05374 MoveFromDevice<T55>::move(args.queue_, t55); 05375 MoveFromDevice<T56>::move(args.queue_, t56); 05376 MoveFromDevice<T57>::move(args.queue_, t57); 05377 MoveFromDevice<T58>::move(args.queue_, t58); 05378 MoveFromDevice<T59>::move(args.queue_, t59); 05379 MoveFromDevice<T60>::move(args.queue_, t60); 05380 MoveFromDevice<T61>::move(args.queue_, t61); 05381 MoveFromDevice<T62>::move(args.queue_, t62); 05382 MoveFromDevice<T63>::move(args.queue_, t63); 05383 MoveFromDevice<T64>::move(args.queue_, t64); 05384 MoveFromDevice<T65>::move(args.queue_, t65); 05385 MoveFromDevice<T66>::move(args.queue_, t66); 05386 MoveFromDevice<T67>::move(args.queue_, t67); 05387 MoveFromDevice<T68>::move(args.queue_, t68); 05388 MoveFromDevice<T69>::move(args.queue_, t69); 05389 MoveFromDevice<T70>::move(args.queue_, t70); 05390 MoveFromDevice<T71>::move(args.queue_, t71); 05391 MoveFromDevice<T72>::move(args.queue_, t72); 05392 MoveFromDevice<T73>::move(args.queue_, t73); 05393 MoveFromDevice<T74>::move(args.queue_, t74); 05394 MoveFromDevice<T75>::move(args.queue_, t75); 05395 MoveFromDevice<T76>::move(args.queue_, t76); 05396 MoveFromDevice<T77>::move(args.queue_, t77); 05397 MoveFromDevice<T78>::move(args.queue_, t78); 05398 MoveFromDevice<T79>::move(args.queue_, t79); 05399 MoveFromDevice<T80>::move(args.queue_, t80); 05400 MoveFromDevice<T81>::move(args.queue_, t81); 05401 MoveFromDevice<T82>::move(args.queue_, t82); 05402 MoveFromDevice<T83>::move(args.queue_, t83); 05403 MoveFromDevice<T84>::move(args.queue_, t84); 05404 MoveFromDevice<T85>::move(args.queue_, t85); 05405 MoveFromDevice<T86>::move(args.queue_, t86); 05406 MoveFromDevice<T87>::move(args.queue_, t87); 05407 MoveFromDevice<T88>::move(args.queue_, t88); 05408 MoveFromDevice<T89>::move(args.queue_, t89); 05409 MoveFromDevice<T90>::move(args.queue_, t90); 05410 MoveFromDevice<T91>::move(args.queue_, t91); 05411 MoveFromDevice<T92>::move(args.queue_, t92); 05412 MoveFromDevice<T93>::move(args.queue_, t93); 05413 MoveFromDevice<T94>::move(args.queue_, t94); 05414 MoveFromDevice<T95>::move(args.queue_, t95); 05415 MoveFromDevice<T96>::move(args.queue_, t96); 05416 MoveFromDevice<T97>::move(args.queue_, t97); 05417 MoveFromDevice<T98>::move(args.queue_, t98); 05418 MoveFromDevice<T99>::move(args.queue_, t99); 05419 MoveFromDevice<T100>::move(args.queue_, t100); 05420 MoveFromDevice<T101>::move(args.queue_, t101); 05421 MoveFromDevice<T102>::move(args.queue_, t102); 05422 MoveFromDevice<T103>::move(args.queue_, t103); 05423 MoveFromDevice<T104>::move(args.queue_, t104); 05424 MoveFromDevice<T105>::move(args.queue_, t105); 05425 MoveFromDevice<T106>::move(args.queue_, t106); 05426 MoveFromDevice<T107>::move(args.queue_, t107); 05427 MoveFromDevice<T108>::move(args.queue_, t108); 05428 MoveFromDevice<T109>::move(args.queue_, t109); 05429 MoveFromDevice<T110>::move(args.queue_, t110); 05430 MoveFromDevice<T111>::move(args.queue_, t111); 05431 MoveFromDevice<T112>::move(args.queue_, t112); 05432 MoveFromDevice<T113>::move(args.queue_, t113); 05433 MoveFromDevice<T114>::move(args.queue_, t114); 05434 MoveFromDevice<T115>::move(args.queue_, t115); 05435 MoveFromDevice<T116>::move(args.queue_, t116); 05436 MoveFromDevice<T117>::move(args.queue_, t117); 05437 MoveFromDevice<T118>::move(args.queue_, t118); 05438 MoveFromDevice<T119>::move(args.queue_, t119); 05439 MoveFromDevice<T120>::move(args.queue_, t120); 05440 MoveFromDevice<T121>::move(args.queue_, t121); 05441 MoveFromDevice<T122>::move(args.queue_, t122); 05442 MoveFromDevice<T123>::move(args.queue_, t123); 05443 MoveFromDevice<T124>::move(args.queue_, t124); 05444 MoveFromDevice<T125>::move(args.queue_, t125); 05445 MoveFromDevice<T126>::move(args.queue_, t126); 05446 MoveFromDevice<T127>::move(args.queue_, t127); 05447 return event; 05448 } 05449 05450 Event operator() ( 05451 const EnqueueArgs& args, 05452 const VECTOR_CLASS<Event>& waitEvents, 05453 T0 t0, 05454 T1 t1 = NullType(), 05455 T2 t2 = NullType(), 05456 T3 t3 = NullType(), 05457 T4 t4 = NullType(), 05458 T5 t5 = NullType(), 05459 T6 t6 = NullType(), 05460 T7 t7 = NullType(), 05461 T8 t8 = NullType(), 05462 T9 t9 = NullType(), 05463 T10 t10 = NullType(), 05464 T11 t11 = NullType(), 05465 T12 t12 = NullType(), 05466 T13 t13 = NullType(), 05467 T14 t14 = NullType(), 05468 T15 t15 = NullType(), 05469 T16 t16 = NullType(), 05470 T17 t17 = NullType(), 05471 T18 t18 = NullType(), 05472 T19 t19 = NullType(), 05473 T20 t20 = NullType(), 05474 T21 t21 = NullType(), 05475 T22 t22 = NullType(), 05476 T23 t23 = NullType(), 05477 T24 t24 = NullType(), 05478 T25 t25 = NullType(), 05479 T26 t26 = NullType(), 05480 T27 t27 = NullType(), 05481 T28 t28 = NullType(), 05482 T29 t29 = NullType(), 05483 T30 t30 = NullType(), 05484 T31 t31 = NullType(), 05485 T32 t32 = NullType(), 05486 T33 t33 = NullType(), 05487 T34 t34 = NullType(), 05488 T35 t35 = NullType(), 05489 T36 t36 = NullType(), 05490 T37 t37 = NullType(), 05491 T38 t38 = NullType(), 05492 T39 t39 = NullType(), 05493 T40 t40 = NullType(), 05494 T41 t41 = NullType(), 05495 T42 t42 = NullType(), 05496 T43 t43 = NullType(), 05497 T44 t44 = NullType(), 05498 T45 t45 = NullType(), 05499 T46 t46 = NullType(), 05500 T47 t47 = NullType(), 05501 T48 t48 = NullType(), 05502 T49 t49 = NullType(), 05503 T50 t50 = NullType(), 05504 T51 t51 = NullType(), 05505 T52 t52 = NullType(), 05506 T53 t53 = NullType(), 05507 T54 t54 = NullType(), 05508 T55 t55 = NullType(), 05509 T56 t56 = NullType(), 05510 T57 t57 = NullType(), 05511 T58 t58 = NullType(), 05512 T59 t59 = NullType(), 05513 T60 t60 = NullType(), 05514 T61 t61 = NullType(), 05515 T62 t62 = NullType(), 05516 T63 t63 = NullType(), 05517 T64 t64 = NullType(), 05518 T65 t65 = NullType(), 05519 T66 t66 = NullType(), 05520 T67 t67 = NullType(), 05521 T68 t68 = NullType(), 05522 T69 t69 = NullType(), 05523 T70 t70 = NullType(), 05524 T71 t71 = NullType(), 05525 T72 t72 = NullType(), 05526 T73 t73 = NullType(), 05527 T74 t74 = NullType(), 05528 T75 t75 = NullType(), 05529 T76 t76 = NullType(), 05530 T77 t77 = NullType(), 05531 T78 t78 = NullType(), 05532 T79 t79 = NullType(), 05533 T80 t80 = NullType(), 05534 T81 t81 = NullType(), 05535 T82 t82 = NullType(), 05536 T83 t83 = NullType(), 05537 T84 t84 = NullType(), 05538 T85 t85 = NullType(), 05539 T86 t86 = NullType(), 05540 T87 t87 = NullType(), 05541 T88 t88 = NullType(), 05542 T89 t89 = NullType(), 05543 T90 t90 = NullType(), 05544 T91 t91 = NullType(), 05545 T92 t92 = NullType(), 05546 T93 t93 = NullType(), 05547 T94 t94 = NullType(), 05548 T95 t95 = NullType(), 05549 T96 t96 = NullType(), 05550 T97 t97 = NullType(), 05551 T98 t98 = NullType(), 05552 T99 t99 = NullType(), 05553 T100 t100 = NullType(), 05554 T101 t101 = NullType(), 05555 T102 t102 = NullType(), 05556 T103 t103 = NullType(), 05557 T104 t104 = NullType(), 05558 T105 t105 = NullType(), 05559 T106 t106 = NullType(), 05560 T107 t107 = NullType(), 05561 T108 t108 = NullType(), 05562 T109 t109 = NullType(), 05563 T110 t110 = NullType(), 05564 T111 t111 = NullType(), 05565 T112 t112 = NullType(), 05566 T113 t113 = NullType(), 05567 T114 t114 = NullType(), 05568 T115 t115 = NullType(), 05569 T116 t116 = NullType(), 05570 T117 t117 = NullType(), 05571 T118 t118 = NullType(), 05572 T119 t119 = NullType(), 05573 T120 t120 = NullType(), 05574 T121 t121 = NullType(), 05575 T122 t122 = NullType(), 05576 T123 t123 = NullType(), 05577 T124 t124 = NullType(), 05578 T125 t125 = NullType(), 05579 T126 t126 = NullType(), 05580 T127 t127 = NullType()) 05581 { 05582 Event event; 05583 SetArg<0, T0>::set(kernel_, t0); 05584 SetArg<1, T1>::set(kernel_, t1); 05585 SetArg<2, T2>::set(kernel_, t2); 05586 SetArg<3, T3>::set(kernel_, t3); 05587 SetArg<4, T4>::set(kernel_, t4); 05588 SetArg<5, T5>::set(kernel_, t5); 05589 SetArg<6, T6>::set(kernel_, t6); 05590 SetArg<7, T7>::set(kernel_, t7); 05591 SetArg<8, T8>::set(kernel_, t8); 05592 SetArg<9, T9>::set(kernel_, t9); 05593 SetArg<10, T10>::set(kernel_, t10); 05594 SetArg<11, T11>::set(kernel_, t11); 05595 SetArg<12, T12>::set(kernel_, t12); 05596 SetArg<13, T13>::set(kernel_, t13); 05597 SetArg<14, T14>::set(kernel_, t14); 05598 SetArg<15, T15>::set(kernel_, t15); 05599 SetArg<16, T16>::set(kernel_, t16); 05600 SetArg<17, T17>::set(kernel_, t17); 05601 SetArg<18, T18>::set(kernel_, t18); 05602 SetArg<19, T19>::set(kernel_, t19); 05603 SetArg<20, T20>::set(kernel_, t20); 05604 SetArg<21, T21>::set(kernel_, t21); 05605 SetArg<22, T22>::set(kernel_, t22); 05606 SetArg<23, T23>::set(kernel_, t23); 05607 SetArg<24, T24>::set(kernel_, t24); 05608 SetArg<25, T25>::set(kernel_, t25); 05609 SetArg<26, T26>::set(kernel_, t26); 05610 SetArg<27, T27>::set(kernel_, t27); 05611 SetArg<28, T28>::set(kernel_, t28); 05612 SetArg<29, T29>::set(kernel_, t29); 05613 SetArg<30, T30>::set(kernel_, t30); 05614 SetArg<31, T31>::set(kernel_, t31); 05615 SetArg<32, T32>::set(kernel_, t32); 05616 SetArg<33, T33>::set(kernel_, t33); 05617 SetArg<34, T34>::set(kernel_, t34); 05618 SetArg<35, T35>::set(kernel_, t35); 05619 SetArg<36, T36>::set(kernel_, t36); 05620 SetArg<37, T37>::set(kernel_, t37); 05621 SetArg<38, T38>::set(kernel_, t38); 05622 SetArg<39, T39>::set(kernel_, t39); 05623 SetArg<40, T40>::set(kernel_, t40); 05624 SetArg<41, T41>::set(kernel_, t41); 05625 SetArg<42, T42>::set(kernel_, t42); 05626 SetArg<43, T43>::set(kernel_, t43); 05627 SetArg<44, T44>::set(kernel_, t44); 05628 SetArg<45, T45>::set(kernel_, t45); 05629 SetArg<46, T46>::set(kernel_, t46); 05630 SetArg<47, T47>::set(kernel_, t47); 05631 SetArg<48, T48>::set(kernel_, t48); 05632 SetArg<49, T49>::set(kernel_, t49); 05633 SetArg<50, T50>::set(kernel_, t50); 05634 SetArg<51, T51>::set(kernel_, t51); 05635 SetArg<52, T52>::set(kernel_, t52); 05636 SetArg<53, T53>::set(kernel_, t53); 05637 SetArg<54, T54>::set(kernel_, t54); 05638 SetArg<55, T55>::set(kernel_, t55); 05639 SetArg<56, T56>::set(kernel_, t56); 05640 SetArg<57, T57>::set(kernel_, t57); 05641 SetArg<58, T58>::set(kernel_, t58); 05642 SetArg<59, T59>::set(kernel_, t59); 05643 SetArg<60, T60>::set(kernel_, t60); 05644 SetArg<61, T61>::set(kernel_, t61); 05645 SetArg<62, T62>::set(kernel_, t62); 05646 SetArg<63, T63>::set(kernel_, t63); 05647 SetArg<64, T64>::set(kernel_, t64); 05648 SetArg<65, T65>::set(kernel_, t65); 05649 SetArg<66, T66>::set(kernel_, t66); 05650 SetArg<67, T67>::set(kernel_, t67); 05651 SetArg<68, T68>::set(kernel_, t68); 05652 SetArg<69, T69>::set(kernel_, t69); 05653 SetArg<70, T70>::set(kernel_, t70); 05654 SetArg<71, T71>::set(kernel_, t71); 05655 SetArg<72, T72>::set(kernel_, t72); 05656 SetArg<73, T73>::set(kernel_, t73); 05657 SetArg<74, T74>::set(kernel_, t74); 05658 SetArg<75, T75>::set(kernel_, t75); 05659 SetArg<76, T76>::set(kernel_, t76); 05660 SetArg<77, T77>::set(kernel_, t77); 05661 SetArg<78, T78>::set(kernel_, t78); 05662 SetArg<79, T79>::set(kernel_, t79); 05663 SetArg<80, T80>::set(kernel_, t80); 05664 SetArg<81, T81>::set(kernel_, t81); 05665 SetArg<82, T82>::set(kernel_, t82); 05666 SetArg<83, T83>::set(kernel_, t83); 05667 SetArg<84, T84>::set(kernel_, t84); 05668 SetArg<85, T85>::set(kernel_, t85); 05669 SetArg<86, T86>::set(kernel_, t86); 05670 SetArg<87, T87>::set(kernel_, t87); 05671 SetArg<88, T88>::set(kernel_, t88); 05672 SetArg<89, T89>::set(kernel_, t89); 05673 SetArg<90, T90>::set(kernel_, t90); 05674 SetArg<91, T91>::set(kernel_, t91); 05675 SetArg<92, T92>::set(kernel_, t92); 05676 SetArg<93, T93>::set(kernel_, t93); 05677 SetArg<94, T94>::set(kernel_, t94); 05678 SetArg<95, T95>::set(kernel_, t95); 05679 SetArg<96, T96>::set(kernel_, t96); 05680 SetArg<97, T97>::set(kernel_, t97); 05681 SetArg<98, T98>::set(kernel_, t98); 05682 SetArg<99, T99>::set(kernel_, t99); 05683 SetArg<100, T100>::set(kernel_, t100); 05684 SetArg<101, T101>::set(kernel_, t101); 05685 SetArg<102, T102>::set(kernel_, t102); 05686 SetArg<103, T103>::set(kernel_, t103); 05687 SetArg<104, T104>::set(kernel_, t104); 05688 SetArg<105, T105>::set(kernel_, t105); 05689 SetArg<106, T106>::set(kernel_, t106); 05690 SetArg<107, T107>::set(kernel_, t107); 05691 SetArg<108, T108>::set(kernel_, t108); 05692 SetArg<109, T109>::set(kernel_, t109); 05693 SetArg<110, T110>::set(kernel_, t110); 05694 SetArg<111, T111>::set(kernel_, t111); 05695 SetArg<112, T112>::set(kernel_, t112); 05696 SetArg<113, T113>::set(kernel_, t113); 05697 SetArg<114, T114>::set(kernel_, t114); 05698 SetArg<115, T115>::set(kernel_, t115); 05699 SetArg<116, T116>::set(kernel_, t116); 05700 SetArg<117, T117>::set(kernel_, t117); 05701 SetArg<118, T118>::set(kernel_, t118); 05702 SetArg<119, T119>::set(kernel_, t119); 05703 SetArg<120, T120>::set(kernel_, t120); 05704 SetArg<121, T121>::set(kernel_, t121); 05705 SetArg<122, T122>::set(kernel_, t122); 05706 SetArg<123, T123>::set(kernel_, t123); 05707 SetArg<124, T124>::set(kernel_, t124); 05708 SetArg<125, T125>::set(kernel_, t125); 05709 SetArg<126, T126>::set(kernel_, t126); 05710 SetArg<127, T127>::set(kernel_, t127); 05711 05712 // Move any arguments that need moving 05713 MoveToDevice<T0>::move(args.queue_, t0); 05714 MoveToDevice<T1>::move(args.queue_, t1); 05715 MoveToDevice<T2>::move(args.queue_, t2); 05716 MoveToDevice<T3>::move(args.queue_, t3); 05717 MoveToDevice<T4>::move(args.queue_, t4); 05718 MoveToDevice<T5>::move(args.queue_, t5); 05719 MoveToDevice<T6>::move(args.queue_, t6); 05720 MoveToDevice<T7>::move(args.queue_, t7); 05721 MoveToDevice<T8>::move(args.queue_, t8); 05722 MoveToDevice<T9>::move(args.queue_, t9); 05723 MoveToDevice<T10>::move(args.queue_, t10); 05724 MoveToDevice<T11>::move(args.queue_, t11); 05725 MoveToDevice<T12>::move(args.queue_, t12); 05726 MoveToDevice<T13>::move(args.queue_, t13); 05727 MoveToDevice<T14>::move(args.queue_, t14); 05728 MoveToDevice<T15>::move(args.queue_, t15); 05729 MoveToDevice<T16>::move(args.queue_, t16); 05730 MoveToDevice<T17>::move(args.queue_, t17); 05731 MoveToDevice<T18>::move(args.queue_, t18); 05732 MoveToDevice<T19>::move(args.queue_, t19); 05733 MoveToDevice<T20>::move(args.queue_, t20); 05734 MoveToDevice<T21>::move(args.queue_, t21); 05735 MoveToDevice<T22>::move(args.queue_, t22); 05736 MoveToDevice<T23>::move(args.queue_, t23); 05737 MoveToDevice<T24>::move(args.queue_, t24); 05738 MoveToDevice<T25>::move(args.queue_, t25); 05739 MoveToDevice<T26>::move(args.queue_, t26); 05740 MoveToDevice<T27>::move(args.queue_, t27); 05741 MoveToDevice<T28>::move(args.queue_, t28); 05742 MoveToDevice<T29>::move(args.queue_, t29); 05743 MoveToDevice<T30>::move(args.queue_, t30); 05744 MoveToDevice<T31>::move(args.queue_, t31); 05745 MoveToDevice<T32>::move(args.queue_, t32); 05746 MoveToDevice<T33>::move(args.queue_, t33); 05747 MoveToDevice<T34>::move(args.queue_, t34); 05748 MoveToDevice<T35>::move(args.queue_, t35); 05749 MoveToDevice<T36>::move(args.queue_, t36); 05750 MoveToDevice<T37>::move(args.queue_, t37); 05751 MoveToDevice<T38>::move(args.queue_, t38); 05752 MoveToDevice<T39>::move(args.queue_, t39); 05753 MoveToDevice<T40>::move(args.queue_, t40); 05754 MoveToDevice<T41>::move(args.queue_, t41); 05755 MoveToDevice<T42>::move(args.queue_, t42); 05756 MoveToDevice<T43>::move(args.queue_, t43); 05757 MoveToDevice<T44>::move(args.queue_, t44); 05758 MoveToDevice<T45>::move(args.queue_, t45); 05759 MoveToDevice<T46>::move(args.queue_, t46); 05760 MoveToDevice<T47>::move(args.queue_, t47); 05761 MoveToDevice<T48>::move(args.queue_, t48); 05762 MoveToDevice<T49>::move(args.queue_, t49); 05763 MoveToDevice<T50>::move(args.queue_, t50); 05764 MoveToDevice<T51>::move(args.queue_, t51); 05765 MoveToDevice<T52>::move(args.queue_, t52); 05766 MoveToDevice<T53>::move(args.queue_, t53); 05767 MoveToDevice<T54>::move(args.queue_, t54); 05768 MoveToDevice<T55>::move(args.queue_, t55); 05769 MoveToDevice<T56>::move(args.queue_, t56); 05770 MoveToDevice<T57>::move(args.queue_, t57); 05771 MoveToDevice<T58>::move(args.queue_, t58); 05772 MoveToDevice<T59>::move(args.queue_, t59); 05773 MoveToDevice<T60>::move(args.queue_, t60); 05774 MoveToDevice<T61>::move(args.queue_, t61); 05775 MoveToDevice<T62>::move(args.queue_, t62); 05776 MoveToDevice<T63>::move(args.queue_, t63); 05777 MoveToDevice<T64>::move(args.queue_, t64); 05778 MoveToDevice<T65>::move(args.queue_, t65); 05779 MoveToDevice<T66>::move(args.queue_, t66); 05780 MoveToDevice<T67>::move(args.queue_, t67); 05781 MoveToDevice<T68>::move(args.queue_, t68); 05782 MoveToDevice<T69>::move(args.queue_, t69); 05783 MoveToDevice<T70>::move(args.queue_, t70); 05784 MoveToDevice<T71>::move(args.queue_, t71); 05785 MoveToDevice<T72>::move(args.queue_, t72); 05786 MoveToDevice<T73>::move(args.queue_, t73); 05787 MoveToDevice<T74>::move(args.queue_, t74); 05788 MoveToDevice<T75>::move(args.queue_, t75); 05789 MoveToDevice<T76>::move(args.queue_, t76); 05790 MoveToDevice<T77>::move(args.queue_, t77); 05791 MoveToDevice<T78>::move(args.queue_, t78); 05792 MoveToDevice<T79>::move(args.queue_, t79); 05793 MoveToDevice<T80>::move(args.queue_, t80); 05794 MoveToDevice<T81>::move(args.queue_, t81); 05795 MoveToDevice<T82>::move(args.queue_, t82); 05796 MoveToDevice<T83>::move(args.queue_, t83); 05797 MoveToDevice<T84>::move(args.queue_, t84); 05798 MoveToDevice<T85>::move(args.queue_, t85); 05799 MoveToDevice<T86>::move(args.queue_, t86); 05800 MoveToDevice<T87>::move(args.queue_, t87); 05801 MoveToDevice<T88>::move(args.queue_, t88); 05802 MoveToDevice<T89>::move(args.queue_, t89); 05803 MoveToDevice<T90>::move(args.queue_, t90); 05804 MoveToDevice<T91>::move(args.queue_, t91); 05805 MoveToDevice<T92>::move(args.queue_, t92); 05806 MoveToDevice<T93>::move(args.queue_, t93); 05807 MoveToDevice<T94>::move(args.queue_, t94); 05808 MoveToDevice<T95>::move(args.queue_, t95); 05809 MoveToDevice<T96>::move(args.queue_, t96); 05810 MoveToDevice<T97>::move(args.queue_, t97); 05811 MoveToDevice<T98>::move(args.queue_, t98); 05812 MoveToDevice<T99>::move(args.queue_, t99); 05813 MoveToDevice<T100>::move(args.queue_, t100); 05814 MoveToDevice<T101>::move(args.queue_, t101); 05815 MoveToDevice<T102>::move(args.queue_, t102); 05816 MoveToDevice<T103>::move(args.queue_, t103); 05817 MoveToDevice<T104>::move(args.queue_, t104); 05818 MoveToDevice<T105>::move(args.queue_, t105); 05819 MoveToDevice<T106>::move(args.queue_, t106); 05820 MoveToDevice<T107>::move(args.queue_, t107); 05821 MoveToDevice<T108>::move(args.queue_, t108); 05822 MoveToDevice<T109>::move(args.queue_, t109); 05823 MoveToDevice<T110>::move(args.queue_, t110); 05824 MoveToDevice<T111>::move(args.queue_, t111); 05825 MoveToDevice<T112>::move(args.queue_, t112); 05826 MoveToDevice<T113>::move(args.queue_, t113); 05827 MoveToDevice<T114>::move(args.queue_, t114); 05828 MoveToDevice<T115>::move(args.queue_, t115); 05829 MoveToDevice<T116>::move(args.queue_, t116); 05830 MoveToDevice<T117>::move(args.queue_, t117); 05831 MoveToDevice<T118>::move(args.queue_, t118); 05832 MoveToDevice<T119>::move(args.queue_, t119); 05833 MoveToDevice<T120>::move(args.queue_, t120); 05834 MoveToDevice<T121>::move(args.queue_, t121); 05835 MoveToDevice<T122>::move(args.queue_, t122); 05836 MoveToDevice<T123>::move(args.queue_, t123); 05837 MoveToDevice<T124>::move(args.queue_, t124); 05838 MoveToDevice<T125>::move(args.queue_, t125); 05839 MoveToDevice<T126>::move(args.queue_, t126); 05840 MoveToDevice<T127>::move(args.queue_, t127); 05841 05842 args.queue_.enqueueNDRangeKernel( 05843 kernel_, 05844 args.offset_, 05845 args.global_, 05846 args.local_, 05847 &waitEvents, 05848 &event); 05849 05850 // Move any arguments that need moving 05851 MoveFromDevice<T0>::move(args.queue_, t0); 05852 MoveFromDevice<T1>::move(args.queue_, t1); 05853 MoveFromDevice<T2>::move(args.queue_, t2); 05854 MoveFromDevice<T3>::move(args.queue_, t3); 05855 MoveFromDevice<T4>::move(args.queue_, t4); 05856 MoveFromDevice<T5>::move(args.queue_, t5); 05857 MoveFromDevice<T6>::move(args.queue_, t6); 05858 MoveFromDevice<T7>::move(args.queue_, t7); 05859 MoveFromDevice<T8>::move(args.queue_, t8); 05860 MoveFromDevice<T9>::move(args.queue_, t9); 05861 MoveFromDevice<T10>::move(args.queue_, t10); 05862 MoveFromDevice<T11>::move(args.queue_, t11); 05863 MoveFromDevice<T12>::move(args.queue_, t12); 05864 MoveFromDevice<T13>::move(args.queue_, t13); 05865 MoveFromDevice<T14>::move(args.queue_, t14); 05866 MoveFromDevice<T15>::move(args.queue_, t15); 05867 MoveFromDevice<T16>::move(args.queue_, t16); 05868 MoveFromDevice<T17>::move(args.queue_, t17); 05869 MoveFromDevice<T18>::move(args.queue_, t18); 05870 MoveFromDevice<T19>::move(args.queue_, t19); 05871 MoveFromDevice<T20>::move(args.queue_, t20); 05872 MoveFromDevice<T21>::move(args.queue_, t21); 05873 MoveFromDevice<T22>::move(args.queue_, t22); 05874 MoveFromDevice<T23>::move(args.queue_, t23); 05875 MoveFromDevice<T24>::move(args.queue_, t24); 05876 MoveFromDevice<T25>::move(args.queue_, t25); 05877 MoveFromDevice<T26>::move(args.queue_, t26); 05878 MoveFromDevice<T27>::move(args.queue_, t27); 05879 MoveFromDevice<T28>::move(args.queue_, t28); 05880 MoveFromDevice<T29>::move(args.queue_, t29); 05881 MoveFromDevice<T30>::move(args.queue_, t30); 05882 MoveFromDevice<T31>::move(args.queue_, t31); 05883 MoveFromDevice<T32>::move(args.queue_, t32); 05884 MoveFromDevice<T33>::move(args.queue_, t33); 05885 MoveFromDevice<T34>::move(args.queue_, t34); 05886 MoveFromDevice<T35>::move(args.queue_, t35); 05887 MoveFromDevice<T36>::move(args.queue_, t36); 05888 MoveFromDevice<T37>::move(args.queue_, t37); 05889 MoveFromDevice<T38>::move(args.queue_, t38); 05890 MoveFromDevice<T39>::move(args.queue_, t39); 05891 MoveFromDevice<T40>::move(args.queue_, t40); 05892 MoveFromDevice<T41>::move(args.queue_, t41); 05893 MoveFromDevice<T42>::move(args.queue_, t42); 05894 MoveFromDevice<T43>::move(args.queue_, t43); 05895 MoveFromDevice<T44>::move(args.queue_, t44); 05896 MoveFromDevice<T45>::move(args.queue_, t45); 05897 MoveFromDevice<T46>::move(args.queue_, t46); 05898 MoveFromDevice<T47>::move(args.queue_, t47); 05899 MoveFromDevice<T48>::move(args.queue_, t48); 05900 MoveFromDevice<T49>::move(args.queue_, t49); 05901 MoveFromDevice<T50>::move(args.queue_, t50); 05902 MoveFromDevice<T51>::move(args.queue_, t51); 05903 MoveFromDevice<T52>::move(args.queue_, t52); 05904 MoveFromDevice<T53>::move(args.queue_, t53); 05905 MoveFromDevice<T54>::move(args.queue_, t54); 05906 MoveFromDevice<T55>::move(args.queue_, t55); 05907 MoveFromDevice<T56>::move(args.queue_, t56); 05908 MoveFromDevice<T57>::move(args.queue_, t57); 05909 MoveFromDevice<T58>::move(args.queue_, t58); 05910 MoveFromDevice<T59>::move(args.queue_, t59); 05911 MoveFromDevice<T60>::move(args.queue_, t60); 05912 MoveFromDevice<T61>::move(args.queue_, t61); 05913 MoveFromDevice<T62>::move(args.queue_, t62); 05914 MoveFromDevice<T63>::move(args.queue_, t63); 05915 MoveFromDevice<T64>::move(args.queue_, t64); 05916 MoveFromDevice<T65>::move(args.queue_, t65); 05917 MoveFromDevice<T66>::move(args.queue_, t66); 05918 MoveFromDevice<T67>::move(args.queue_, t67); 05919 MoveFromDevice<T68>::move(args.queue_, t68); 05920 MoveFromDevice<T69>::move(args.queue_, t69); 05921 MoveFromDevice<T70>::move(args.queue_, t70); 05922 MoveFromDevice<T71>::move(args.queue_, t71); 05923 MoveFromDevice<T72>::move(args.queue_, t72); 05924 MoveFromDevice<T73>::move(args.queue_, t73); 05925 MoveFromDevice<T74>::move(args.queue_, t74); 05926 MoveFromDevice<T75>::move(args.queue_, t75); 05927 MoveFromDevice<T76>::move(args.queue_, t76); 05928 MoveFromDevice<T77>::move(args.queue_, t77); 05929 MoveFromDevice<T78>::move(args.queue_, t78); 05930 MoveFromDevice<T79>::move(args.queue_, t79); 05931 MoveFromDevice<T80>::move(args.queue_, t80); 05932 MoveFromDevice<T81>::move(args.queue_, t81); 05933 MoveFromDevice<T82>::move(args.queue_, t82); 05934 MoveFromDevice<T83>::move(args.queue_, t83); 05935 MoveFromDevice<T84>::move(args.queue_, t84); 05936 MoveFromDevice<T85>::move(args.queue_, t85); 05937 MoveFromDevice<T86>::move(args.queue_, t86); 05938 MoveFromDevice<T87>::move(args.queue_, t87); 05939 MoveFromDevice<T88>::move(args.queue_, t88); 05940 MoveFromDevice<T89>::move(args.queue_, t89); 05941 MoveFromDevice<T90>::move(args.queue_, t90); 05942 MoveFromDevice<T91>::move(args.queue_, t91); 05943 MoveFromDevice<T92>::move(args.queue_, t92); 05944 MoveFromDevice<T93>::move(args.queue_, t93); 05945 MoveFromDevice<T94>::move(args.queue_, t94); 05946 MoveFromDevice<T95>::move(args.queue_, t95); 05947 MoveFromDevice<T96>::move(args.queue_, t96); 05948 MoveFromDevice<T97>::move(args.queue_, t97); 05949 MoveFromDevice<T98>::move(args.queue_, t98); 05950 MoveFromDevice<T99>::move(args.queue_, t99); 05951 MoveFromDevice<T100>::move(args.queue_, t100); 05952 MoveFromDevice<T101>::move(args.queue_, t101); 05953 MoveFromDevice<T102>::move(args.queue_, t102); 05954 MoveFromDevice<T103>::move(args.queue_, t103); 05955 MoveFromDevice<T104>::move(args.queue_, t104); 05956 MoveFromDevice<T105>::move(args.queue_, t105); 05957 MoveFromDevice<T106>::move(args.queue_, t106); 05958 MoveFromDevice<T107>::move(args.queue_, t107); 05959 MoveFromDevice<T108>::move(args.queue_, t108); 05960 MoveFromDevice<T109>::move(args.queue_, t109); 05961 MoveFromDevice<T110>::move(args.queue_, t110); 05962 MoveFromDevice<T111>::move(args.queue_, t111); 05963 MoveFromDevice<T112>::move(args.queue_, t112); 05964 MoveFromDevice<T113>::move(args.queue_, t113); 05965 MoveFromDevice<T114>::move(args.queue_, t114); 05966 MoveFromDevice<T115>::move(args.queue_, t115); 05967 MoveFromDevice<T116>::move(args.queue_, t116); 05968 MoveFromDevice<T117>::move(args.queue_, t117); 05969 MoveFromDevice<T118>::move(args.queue_, t118); 05970 MoveFromDevice<T119>::move(args.queue_, t119); 05971 MoveFromDevice<T120>::move(args.queue_, t120); 05972 MoveFromDevice<T121>::move(args.queue_, t121); 05973 MoveFromDevice<T122>::move(args.queue_, t122); 05974 MoveFromDevice<T123>::move(args.queue_, t123); 05975 MoveFromDevice<T124>::move(args.queue_, t124); 05976 MoveFromDevice<T125>::move(args.queue_, t125); 05977 MoveFromDevice<T126>::move(args.queue_, t126); 05978 MoveFromDevice<T127>::move(args.queue_, t127); 05979 05980 return event; 05981 } 05982 }; 05983 05984 //------------------------------------------------------------------------------------------------------ 05985 05986 05987 template< 05988 typename T0, 05989 typename T1, 05990 typename T2, 05991 typename T3, 05992 typename T4, 05993 typename T5, 05994 typename T6, 05995 typename T7, 05996 typename T8, 05997 typename T9, 05998 typename T10, 05999 typename T11, 06000 typename T12, 06001 typename T13, 06002 typename T14, 06003 typename T15, 06004 typename T16, 06005 typename T17, 06006 typename T18, 06007 typename T19, 06008 typename T20, 06009 typename T21, 06010 typename T22, 06011 typename T23, 06012 typename T24, 06013 typename T25, 06014 typename T26, 06015 typename T27, 06016 typename T28, 06017 typename T29, 06018 typename T30, 06019 typename T31, 06020 typename T32, 06021 typename T33, 06022 typename T34, 06023 typename T35, 06024 typename T36, 06025 typename T37, 06026 typename T38, 06027 typename T39, 06028 typename T40, 06029 typename T41, 06030 typename T42, 06031 typename T43, 06032 typename T44, 06033 typename T45, 06034 typename T46, 06035 typename T47, 06036 typename T48, 06037 typename T49, 06038 typename T50, 06039 typename T51, 06040 typename T52, 06041 typename T53, 06042 typename T54, 06043 typename T55, 06044 typename T56, 06045 typename T57, 06046 typename T58, 06047 typename T59, 06048 typename T60, 06049 typename T61, 06050 typename T62, 06051 typename T63, 06052 typename T64, 06053 typename T65, 06054 typename T66, 06055 typename T67, 06056 typename T68, 06057 typename T69, 06058 typename T70, 06059 typename T71, 06060 typename T72, 06061 typename T73, 06062 typename T74, 06063 typename T75, 06064 typename T76, 06065 typename T77, 06066 typename T78, 06067 typename T79, 06068 typename T80, 06069 typename T81, 06070 typename T82, 06071 typename T83, 06072 typename T84, 06073 typename T85, 06074 typename T86, 06075 typename T87, 06076 typename T88, 06077 typename T89, 06078 typename T90, 06079 typename T91, 06080 typename T92, 06081 typename T93, 06082 typename T94, 06083 typename T95, 06084 typename T96, 06085 typename T97, 06086 typename T98, 06087 typename T99, 06088 typename T100, 06089 typename T101, 06090 typename T102, 06091 typename T103, 06092 typename T104, 06093 typename T105, 06094 typename T106, 06095 typename T107, 06096 typename T108, 06097 typename T109, 06098 typename T110, 06099 typename T111, 06100 typename T112, 06101 typename T113, 06102 typename T114, 06103 typename T115, 06104 typename T116, 06105 typename T117, 06106 typename T118, 06107 typename T119, 06108 typename T120, 06109 typename T121, 06110 typename T122, 06111 typename T123, 06112 typename T124, 06113 typename T125, 06114 typename T126, 06115 typename T127> 06116 struct functionImplementation_ 06117 { 06118 }; 06119 06120 template< 06121 typename T0> 06122 struct functionImplementation_< 06123 T0, 06124 NullType, 06125 NullType, 06126 NullType, 06127 NullType, 06128 NullType, 06129 NullType, 06130 NullType, 06131 NullType, 06132 NullType, 06133 NullType, 06134 NullType, 06135 NullType, 06136 NullType, 06137 NullType, 06138 NullType, 06139 NullType, 06140 NullType, 06141 NullType, 06142 NullType, 06143 NullType, 06144 NullType, 06145 NullType, 06146 NullType, 06147 NullType, 06148 NullType, 06149 NullType, 06150 NullType, 06151 NullType, 06152 NullType, 06153 NullType, 06154 NullType, 06155 NullType, 06156 NullType, 06157 NullType, 06158 NullType, 06159 NullType, 06160 NullType, 06161 NullType, 06162 NullType, 06163 NullType, 06164 NullType, 06165 NullType, 06166 NullType, 06167 NullType, 06168 NullType, 06169 NullType, 06170 NullType, 06171 NullType, 06172 NullType, 06173 NullType, 06174 NullType, 06175 NullType, 06176 NullType, 06177 NullType, 06178 NullType, 06179 NullType, 06180 NullType, 06181 NullType, 06182 NullType, 06183 NullType, 06184 NullType, 06185 NullType, 06186 NullType, 06187 NullType, 06188 NullType, 06189 NullType, 06190 NullType, 06191 NullType, 06192 NullType, 06193 NullType, 06194 NullType, 06195 NullType, 06196 NullType, 06197 NullType, 06198 NullType, 06199 NullType, 06200 NullType, 06201 NullType, 06202 NullType, 06203 NullType, 06204 NullType, 06205 NullType, 06206 NullType, 06207 NullType, 06208 NullType, 06209 NullType, 06210 NullType, 06211 NullType, 06212 NullType, 06213 NullType, 06214 NullType, 06215 NullType, 06216 NullType, 06217 NullType, 06218 NullType, 06219 NullType, 06220 NullType, 06221 NullType, 06222 NullType, 06223 NullType, 06224 NullType, 06225 NullType, 06226 NullType, 06227 NullType, 06228 NullType, 06229 NullType, 06230 NullType, 06231 NullType, 06232 NullType, 06233 NullType, 06234 NullType, 06235 NullType, 06236 NullType, 06237 NullType, 06238 NullType, 06239 NullType, 06240 NullType, 06241 NullType, 06242 NullType, 06243 NullType, 06244 NullType, 06245 NullType, 06246 NullType, 06247 NullType, 06248 NullType, 06249 NullType, 06250 NullType> 06251 { 06252 typedef detail::KernelFunctorGlobal< 06253 T0, 06254 NullType, 06255 NullType, 06256 NullType, 06257 NullType, 06258 NullType, 06259 NullType, 06260 NullType, 06261 NullType, 06262 NullType, 06263 NullType, 06264 NullType, 06265 NullType, 06266 NullType, 06267 NullType, 06268 NullType, 06269 NullType, 06270 NullType, 06271 NullType, 06272 NullType, 06273 NullType, 06274 NullType, 06275 NullType, 06276 NullType, 06277 NullType, 06278 NullType, 06279 NullType, 06280 NullType, 06281 NullType, 06282 NullType, 06283 NullType, 06284 NullType, 06285 NullType, 06286 NullType, 06287 NullType, 06288 NullType, 06289 NullType, 06290 NullType, 06291 NullType, 06292 NullType, 06293 NullType, 06294 NullType, 06295 NullType, 06296 NullType, 06297 NullType, 06298 NullType, 06299 NullType, 06300 NullType, 06301 NullType, 06302 NullType, 06303 NullType, 06304 NullType, 06305 NullType, 06306 NullType, 06307 NullType, 06308 NullType, 06309 NullType, 06310 NullType, 06311 NullType, 06312 NullType, 06313 NullType, 06314 NullType, 06315 NullType, 06316 NullType, 06317 NullType, 06318 NullType, 06319 NullType, 06320 NullType, 06321 NullType, 06322 NullType, 06323 NullType, 06324 NullType, 06325 NullType, 06326 NullType, 06327 NullType, 06328 NullType, 06329 NullType, 06330 NullType, 06331 NullType, 06332 NullType, 06333 NullType, 06334 NullType, 06335 NullType, 06336 NullType, 06337 NullType, 06338 NullType, 06339 NullType, 06340 NullType, 06341 NullType, 06342 NullType, 06343 NullType, 06344 NullType, 06345 NullType, 06346 NullType, 06347 NullType, 06348 NullType, 06349 NullType, 06350 NullType, 06351 NullType, 06352 NullType, 06353 NullType, 06354 NullType, 06355 NullType, 06356 NullType, 06357 NullType, 06358 NullType, 06359 NullType, 06360 NullType, 06361 NullType, 06362 NullType, 06363 NullType, 06364 NullType, 06365 NullType, 06366 NullType, 06367 NullType, 06368 NullType, 06369 NullType, 06370 NullType, 06371 NullType, 06372 NullType, 06373 NullType, 06374 NullType, 06375 NullType, 06376 NullType, 06377 NullType, 06378 NullType, 06379 NullType, 06380 NullType> FunctorType; 06381 06382 FunctorType functor_; 06383 06384 functionImplementation_(const FunctorType &functor) : 06385 functor_(functor) 06386 { 06387 } 06388 06389 typedef std::tr1::function<Event ( 06390 const EnqueueArgs&, 06391 T0)> type_; 06392 06393 Event operator()(const EnqueueArgs& enqueueArgs, 06394 T0 arg0) 06395 { 06396 return functor_( 06397 enqueueArgs, 06398 arg0); 06399 } 06400 06401 operator type_ () 06402 { 06403 return type_(*this); 06404 } 06405 06406 }; 06407 06408 template< 06409 typename T0, 06410 typename T1> 06411 struct functionImplementation_< 06412 T0, 06413 T1, 06414 NullType, 06415 NullType, 06416 NullType, 06417 NullType, 06418 NullType, 06419 NullType, 06420 NullType, 06421 NullType, 06422 NullType, 06423 NullType, 06424 NullType, 06425 NullType, 06426 NullType, 06427 NullType, 06428 NullType, 06429 NullType, 06430 NullType, 06431 NullType, 06432 NullType, 06433 NullType, 06434 NullType, 06435 NullType, 06436 NullType, 06437 NullType, 06438 NullType, 06439 NullType, 06440 NullType, 06441 NullType, 06442 NullType, 06443 NullType, 06444 NullType, 06445 NullType, 06446 NullType, 06447 NullType, 06448 NullType, 06449 NullType, 06450 NullType, 06451 NullType, 06452 NullType, 06453 NullType, 06454 NullType, 06455 NullType, 06456 NullType, 06457 NullType, 06458 NullType, 06459 NullType, 06460 NullType, 06461 NullType, 06462 NullType, 06463 NullType, 06464 NullType, 06465 NullType, 06466 NullType, 06467 NullType, 06468 NullType, 06469 NullType, 06470 NullType, 06471 NullType, 06472 NullType, 06473 NullType, 06474 NullType, 06475 NullType, 06476 NullType, 06477 NullType, 06478 NullType, 06479 NullType, 06480 NullType, 06481 NullType, 06482 NullType, 06483 NullType, 06484 NullType, 06485 NullType, 06486 NullType, 06487 NullType, 06488 NullType, 06489 NullType, 06490 NullType, 06491 NullType, 06492 NullType, 06493 NullType, 06494 NullType, 06495 NullType, 06496 NullType, 06497 NullType, 06498 NullType, 06499 NullType, 06500 NullType, 06501 NullType, 06502 NullType, 06503 NullType, 06504 NullType, 06505 NullType, 06506 NullType, 06507 NullType, 06508 NullType, 06509 NullType, 06510 NullType, 06511 NullType, 06512 NullType, 06513 NullType, 06514 NullType, 06515 NullType, 06516 NullType, 06517 NullType, 06518 NullType, 06519 NullType, 06520 NullType, 06521 NullType, 06522 NullType, 06523 NullType, 06524 NullType, 06525 NullType, 06526 NullType, 06527 NullType, 06528 NullType, 06529 NullType, 06530 NullType, 06531 NullType, 06532 NullType, 06533 NullType, 06534 NullType, 06535 NullType, 06536 NullType, 06537 NullType, 06538 NullType, 06539 NullType> 06540 { 06541 typedef detail::KernelFunctorGlobal< 06542 T0, 06543 T1, 06544 NullType, 06545 NullType, 06546 NullType, 06547 NullType, 06548 NullType, 06549 NullType, 06550 NullType, 06551 NullType, 06552 NullType, 06553 NullType, 06554 NullType, 06555 NullType, 06556 NullType, 06557 NullType, 06558 NullType, 06559 NullType, 06560 NullType, 06561 NullType, 06562 NullType, 06563 NullType, 06564 NullType, 06565 NullType, 06566 NullType, 06567 NullType, 06568 NullType, 06569 NullType, 06570 NullType, 06571 NullType, 06572 NullType, 06573 NullType, 06574 NullType, 06575 NullType, 06576 NullType, 06577 NullType, 06578 NullType, 06579 NullType, 06580 NullType, 06581 NullType, 06582 NullType, 06583 NullType, 06584 NullType, 06585 NullType, 06586 NullType, 06587 NullType, 06588 NullType, 06589 NullType, 06590 NullType, 06591 NullType, 06592 NullType, 06593 NullType, 06594 NullType, 06595 NullType, 06596 NullType, 06597 NullType, 06598 NullType, 06599 NullType, 06600 NullType, 06601 NullType, 06602 NullType, 06603 NullType, 06604 NullType, 06605 NullType, 06606 NullType, 06607 NullType, 06608 NullType, 06609 NullType, 06610 NullType, 06611 NullType, 06612 NullType, 06613 NullType, 06614 NullType, 06615 NullType, 06616 NullType, 06617 NullType, 06618 NullType, 06619 NullType, 06620 NullType, 06621 NullType, 06622 NullType, 06623 NullType, 06624 NullType, 06625 NullType, 06626 NullType, 06627 NullType, 06628 NullType, 06629 NullType, 06630 NullType, 06631 NullType, 06632 NullType, 06633 NullType, 06634 NullType, 06635 NullType, 06636 NullType, 06637 NullType, 06638 NullType, 06639 NullType, 06640 NullType, 06641 NullType, 06642 NullType, 06643 NullType, 06644 NullType, 06645 NullType, 06646 NullType, 06647 NullType, 06648 NullType, 06649 NullType, 06650 NullType, 06651 NullType, 06652 NullType, 06653 NullType, 06654 NullType, 06655 NullType, 06656 NullType, 06657 NullType, 06658 NullType, 06659 NullType, 06660 NullType, 06661 NullType, 06662 NullType, 06663 NullType, 06664 NullType, 06665 NullType, 06666 NullType, 06667 NullType, 06668 NullType, 06669 NullType> FunctorType; 06670 06671 FunctorType functor_; 06672 06673 functionImplementation_(const FunctorType &functor) : 06674 functor_(functor) 06675 { 06676 } 06677 06678 typedef std::tr1::function<Event ( 06679 const EnqueueArgs&, 06680 T0, 06681 T1)> type_; 06682 06683 Event operator()(const EnqueueArgs& enqueueArgs, 06684 T0 arg0, 06685 T1 arg1) 06686 { 06687 return functor_( 06688 enqueueArgs, 06689 arg0, 06690 arg1); 06691 } 06692 06693 operator type_ () 06694 { 06695 return type_(*this); 06696 } 06697 06698 }; 06699 06700 template< 06701 typename T0, 06702 typename T1, 06703 typename T2> 06704 struct functionImplementation_< 06705 T0, 06706 T1, 06707 T2, 06708 NullType, 06709 NullType, 06710 NullType, 06711 NullType, 06712 NullType, 06713 NullType, 06714 NullType, 06715 NullType, 06716 NullType, 06717 NullType, 06718 NullType, 06719 NullType, 06720 NullType, 06721 NullType, 06722 NullType, 06723 NullType, 06724 NullType, 06725 NullType, 06726 NullType, 06727 NullType, 06728 NullType, 06729 NullType, 06730 NullType, 06731 NullType, 06732 NullType, 06733 NullType, 06734 NullType, 06735 NullType, 06736 NullType, 06737 NullType, 06738 NullType, 06739 NullType, 06740 NullType, 06741 NullType, 06742 NullType, 06743 NullType, 06744 NullType, 06745 NullType, 06746 NullType, 06747 NullType, 06748 NullType, 06749 NullType, 06750 NullType, 06751 NullType, 06752 NullType, 06753 NullType, 06754 NullType, 06755 NullType, 06756 NullType, 06757 NullType, 06758 NullType, 06759 NullType, 06760 NullType, 06761 NullType, 06762 NullType, 06763 NullType, 06764 NullType, 06765 NullType, 06766 NullType, 06767 NullType, 06768 NullType, 06769 NullType, 06770 NullType, 06771 NullType, 06772 NullType, 06773 NullType, 06774 NullType, 06775 NullType, 06776 NullType, 06777 NullType, 06778 NullType, 06779 NullType, 06780 NullType, 06781 NullType, 06782 NullType, 06783 NullType, 06784 NullType, 06785 NullType, 06786 NullType, 06787 NullType, 06788 NullType, 06789 NullType, 06790 NullType, 06791 NullType, 06792 NullType, 06793 NullType, 06794 NullType, 06795 NullType, 06796 NullType, 06797 NullType, 06798 NullType, 06799 NullType, 06800 NullType, 06801 NullType, 06802 NullType, 06803 NullType, 06804 NullType, 06805 NullType, 06806 NullType, 06807 NullType, 06808 NullType, 06809 NullType, 06810 NullType, 06811 NullType, 06812 NullType, 06813 NullType, 06814 NullType, 06815 NullType, 06816 NullType, 06817 NullType, 06818 NullType, 06819 NullType, 06820 NullType, 06821 NullType, 06822 NullType, 06823 NullType, 06824 NullType, 06825 NullType, 06826 NullType, 06827 NullType, 06828 NullType, 06829 NullType, 06830 NullType, 06831 NullType, 06832 NullType> 06833 { 06834 typedef detail::KernelFunctorGlobal< 06835 T0, 06836 T1, 06837 T2, 06838 NullType, 06839 NullType, 06840 NullType, 06841 NullType, 06842 NullType, 06843 NullType, 06844 NullType, 06845 NullType, 06846 NullType, 06847 NullType, 06848 NullType, 06849 NullType, 06850 NullType, 06851 NullType, 06852 NullType, 06853 NullType, 06854 NullType, 06855 NullType, 06856 NullType, 06857 NullType, 06858 NullType, 06859 NullType, 06860 NullType, 06861 NullType, 06862 NullType, 06863 NullType, 06864 NullType, 06865 NullType, 06866 NullType, 06867 NullType, 06868 NullType, 06869 NullType, 06870 NullType, 06871 NullType, 06872 NullType, 06873 NullType, 06874 NullType, 06875 NullType, 06876 NullType, 06877 NullType, 06878 NullType, 06879 NullType, 06880 NullType, 06881 NullType, 06882 NullType, 06883 NullType, 06884 NullType, 06885 NullType, 06886 NullType, 06887 NullType, 06888 NullType, 06889 NullType, 06890 NullType, 06891 NullType, 06892 NullType, 06893 NullType, 06894 NullType, 06895 NullType, 06896 NullType, 06897 NullType, 06898 NullType, 06899 NullType, 06900 NullType, 06901 NullType, 06902 NullType, 06903 NullType, 06904 NullType, 06905 NullType, 06906 NullType, 06907 NullType, 06908 NullType, 06909 NullType, 06910 NullType, 06911 NullType, 06912 NullType, 06913 NullType, 06914 NullType, 06915 NullType, 06916 NullType, 06917 NullType, 06918 NullType, 06919 NullType, 06920 NullType, 06921 NullType, 06922 NullType, 06923 NullType, 06924 NullType, 06925 NullType, 06926 NullType, 06927 NullType, 06928 NullType, 06929 NullType, 06930 NullType, 06931 NullType, 06932 NullType, 06933 NullType, 06934 NullType, 06935 NullType, 06936 NullType, 06937 NullType, 06938 NullType, 06939 NullType, 06940 NullType, 06941 NullType, 06942 NullType, 06943 NullType, 06944 NullType, 06945 NullType, 06946 NullType, 06947 NullType, 06948 NullType, 06949 NullType, 06950 NullType, 06951 NullType, 06952 NullType, 06953 NullType, 06954 NullType, 06955 NullType, 06956 NullType, 06957 NullType, 06958 NullType, 06959 NullType, 06960 NullType, 06961 NullType, 06962 NullType> FunctorType; 06963 06964 FunctorType functor_; 06965 06966 functionImplementation_(const FunctorType &functor) : 06967 functor_(functor) 06968 { 06969 } 06970 06971 typedef std::tr1::function<Event ( 06972 const EnqueueArgs&, 06973 T0, 06974 T1, 06975 T2)> type_; 06976 06977 Event operator()(const EnqueueArgs& enqueueArgs, 06978 T0 arg0, 06979 T1 arg1, 06980 T2 arg2) 06981 { 06982 return functor_( 06983 enqueueArgs, 06984 arg0, 06985 arg1, 06986 arg2); 06987 } 06988 06989 operator type_ () 06990 { 06991 return type_(*this); 06992 } 06993 06994 }; 06995 06996 template< 06997 typename T0, 06998 typename T1, 06999 typename T2, 07000 typename T3> 07001 struct functionImplementation_< 07002 T0, 07003 T1, 07004 T2, 07005 T3, 07006 NullType, 07007 NullType, 07008 NullType, 07009 NullType, 07010 NullType, 07011 NullType, 07012 NullType, 07013 NullType, 07014 NullType, 07015 NullType, 07016 NullType, 07017 NullType, 07018 NullType, 07019 NullType, 07020 NullType, 07021 NullType, 07022 NullType, 07023 NullType, 07024 NullType, 07025 NullType, 07026 NullType, 07027 NullType, 07028 NullType, 07029 NullType, 07030 NullType, 07031 NullType, 07032 NullType, 07033 NullType, 07034 NullType, 07035 NullType, 07036 NullType, 07037 NullType, 07038 NullType, 07039 NullType, 07040 NullType, 07041 NullType, 07042 NullType, 07043 NullType, 07044 NullType, 07045 NullType, 07046 NullType, 07047 NullType, 07048 NullType, 07049 NullType, 07050 NullType, 07051 NullType, 07052 NullType, 07053 NullType, 07054 NullType, 07055 NullType, 07056 NullType, 07057 NullType, 07058 NullType, 07059 NullType, 07060 NullType, 07061 NullType, 07062 NullType, 07063 NullType, 07064 NullType, 07065 NullType, 07066 NullType, 07067 NullType, 07068 NullType, 07069 NullType, 07070 NullType, 07071 NullType, 07072 NullType, 07073 NullType, 07074 NullType, 07075 NullType, 07076 NullType, 07077 NullType, 07078 NullType, 07079 NullType, 07080 NullType, 07081 NullType, 07082 NullType, 07083 NullType, 07084 NullType, 07085 NullType, 07086 NullType, 07087 NullType, 07088 NullType, 07089 NullType, 07090 NullType, 07091 NullType, 07092 NullType, 07093 NullType, 07094 NullType, 07095 NullType, 07096 NullType, 07097 NullType, 07098 NullType, 07099 NullType, 07100 NullType, 07101 NullType, 07102 NullType, 07103 NullType, 07104 NullType, 07105 NullType, 07106 NullType, 07107 NullType, 07108 NullType, 07109 NullType, 07110 NullType, 07111 NullType, 07112 NullType, 07113 NullType, 07114 NullType, 07115 NullType, 07116 NullType, 07117 NullType, 07118 NullType, 07119 NullType, 07120 NullType, 07121 NullType, 07122 NullType, 07123 NullType, 07124 NullType, 07125 NullType, 07126 NullType, 07127 NullType, 07128 NullType, 07129 NullType> 07130 { 07131 typedef detail::KernelFunctorGlobal< 07132 T0, 07133 T1, 07134 T2, 07135 T3, 07136 NullType, 07137 NullType, 07138 NullType, 07139 NullType, 07140 NullType, 07141 NullType, 07142 NullType, 07143 NullType, 07144 NullType, 07145 NullType, 07146 NullType, 07147 NullType, 07148 NullType, 07149 NullType, 07150 NullType, 07151 NullType, 07152 NullType, 07153 NullType, 07154 NullType, 07155 NullType, 07156 NullType, 07157 NullType, 07158 NullType, 07159 NullType, 07160 NullType, 07161 NullType, 07162 NullType, 07163 NullType, 07164 NullType, 07165 NullType, 07166 NullType, 07167 NullType, 07168 NullType, 07169 NullType, 07170 NullType, 07171 NullType, 07172 NullType, 07173 NullType, 07174 NullType, 07175 NullType, 07176 NullType, 07177 NullType, 07178 NullType, 07179 NullType, 07180 NullType, 07181 NullType, 07182 NullType, 07183 NullType, 07184 NullType, 07185 NullType, 07186 NullType, 07187 NullType, 07188 NullType, 07189 NullType, 07190 NullType, 07191 NullType, 07192 NullType, 07193 NullType, 07194 NullType, 07195 NullType, 07196 NullType, 07197 NullType, 07198 NullType, 07199 NullType, 07200 NullType, 07201 NullType, 07202 NullType, 07203 NullType, 07204 NullType, 07205 NullType, 07206 NullType, 07207 NullType, 07208 NullType, 07209 NullType, 07210 NullType, 07211 NullType, 07212 NullType, 07213 NullType, 07214 NullType, 07215 NullType, 07216 NullType, 07217 NullType, 07218 NullType, 07219 NullType, 07220 NullType, 07221 NullType, 07222 NullType, 07223 NullType, 07224 NullType, 07225 NullType, 07226 NullType, 07227 NullType, 07228 NullType, 07229 NullType, 07230 NullType, 07231 NullType, 07232 NullType, 07233 NullType, 07234 NullType, 07235 NullType, 07236 NullType, 07237 NullType, 07238 NullType, 07239 NullType, 07240 NullType, 07241 NullType, 07242 NullType, 07243 NullType, 07244 NullType, 07245 NullType, 07246 NullType, 07247 NullType, 07248 NullType, 07249 NullType, 07250 NullType, 07251 NullType, 07252 NullType, 07253 NullType, 07254 NullType, 07255 NullType, 07256 NullType, 07257 NullType, 07258 NullType, 07259 NullType> FunctorType; 07260 07261 FunctorType functor_; 07262 07263 functionImplementation_(const FunctorType &functor) : 07264 functor_(functor) 07265 { 07266 } 07267 07268 typedef std::tr1::function<Event ( 07269 const EnqueueArgs&, 07270 T0, 07271 T1, 07272 T2, 07273 T3)> type_; 07274 07275 Event operator()(const EnqueueArgs& enqueueArgs, 07276 T0 arg0, 07277 T1 arg1, 07278 T2 arg2, 07279 T3 arg3) 07280 { 07281 return functor_( 07282 enqueueArgs, 07283 arg0, 07284 arg1, 07285 arg2, 07286 arg3); 07287 } 07288 07289 operator type_ () 07290 { 07291 return type_(*this); 07292 } 07293 07294 }; 07295 07296 template< 07297 typename T0, 07298 typename T1, 07299 typename T2, 07300 typename T3, 07301 typename T4> 07302 struct functionImplementation_< 07303 T0, 07304 T1, 07305 T2, 07306 T3, 07307 T4, 07308 NullType, 07309 NullType, 07310 NullType, 07311 NullType, 07312 NullType, 07313 NullType, 07314 NullType, 07315 NullType, 07316 NullType, 07317 NullType, 07318 NullType, 07319 NullType, 07320 NullType, 07321 NullType, 07322 NullType, 07323 NullType, 07324 NullType, 07325 NullType, 07326 NullType, 07327 NullType, 07328 NullType, 07329 NullType, 07330 NullType, 07331 NullType, 07332 NullType, 07333 NullType, 07334 NullType, 07335 NullType, 07336 NullType, 07337 NullType, 07338 NullType, 07339 NullType, 07340 NullType, 07341 NullType, 07342 NullType, 07343 NullType, 07344 NullType, 07345 NullType, 07346 NullType, 07347 NullType, 07348 NullType, 07349 NullType, 07350 NullType, 07351 NullType, 07352 NullType, 07353 NullType, 07354 NullType, 07355 NullType, 07356 NullType, 07357 NullType, 07358 NullType, 07359 NullType, 07360 NullType, 07361 NullType, 07362 NullType, 07363 NullType, 07364 NullType, 07365 NullType, 07366 NullType, 07367 NullType, 07368 NullType, 07369 NullType, 07370 NullType, 07371 NullType, 07372 NullType, 07373 NullType, 07374 NullType, 07375 NullType, 07376 NullType, 07377 NullType, 07378 NullType, 07379 NullType, 07380 NullType, 07381 NullType, 07382 NullType, 07383 NullType, 07384 NullType, 07385 NullType, 07386 NullType, 07387 NullType, 07388 NullType, 07389 NullType, 07390 NullType, 07391 NullType, 07392 NullType, 07393 NullType, 07394 NullType, 07395 NullType, 07396 NullType, 07397 NullType, 07398 NullType, 07399 NullType, 07400 NullType, 07401 NullType, 07402 NullType, 07403 NullType, 07404 NullType, 07405 NullType, 07406 NullType, 07407 NullType, 07408 NullType, 07409 NullType, 07410 NullType, 07411 NullType, 07412 NullType, 07413 NullType, 07414 NullType, 07415 NullType, 07416 NullType, 07417 NullType, 07418 NullType, 07419 NullType, 07420 NullType, 07421 NullType, 07422 NullType, 07423 NullType, 07424 NullType, 07425 NullType, 07426 NullType, 07427 NullType, 07428 NullType, 07429 NullType, 07430 NullType> 07431 { 07432 typedef detail::KernelFunctorGlobal< 07433 T0, 07434 T1, 07435 T2, 07436 T3, 07437 T4, 07438 NullType, 07439 NullType, 07440 NullType, 07441 NullType, 07442 NullType, 07443 NullType, 07444 NullType, 07445 NullType, 07446 NullType, 07447 NullType, 07448 NullType, 07449 NullType, 07450 NullType, 07451 NullType, 07452 NullType, 07453 NullType, 07454 NullType, 07455 NullType, 07456 NullType, 07457 NullType, 07458 NullType, 07459 NullType, 07460 NullType, 07461 NullType, 07462 NullType, 07463 NullType, 07464 NullType, 07465 NullType, 07466 NullType, 07467 NullType, 07468 NullType, 07469 NullType, 07470 NullType, 07471 NullType, 07472 NullType, 07473 NullType, 07474 NullType, 07475 NullType, 07476 NullType, 07477 NullType, 07478 NullType, 07479 NullType, 07480 NullType, 07481 NullType, 07482 NullType, 07483 NullType, 07484 NullType, 07485 NullType, 07486 NullType, 07487 NullType, 07488 NullType, 07489 NullType, 07490 NullType, 07491 NullType, 07492 NullType, 07493 NullType, 07494 NullType, 07495 NullType, 07496 NullType, 07497 NullType, 07498 NullType, 07499 NullType, 07500 NullType, 07501 NullType, 07502 NullType, 07503 NullType, 07504 NullType, 07505 NullType, 07506 NullType, 07507 NullType, 07508 NullType, 07509 NullType, 07510 NullType, 07511 NullType, 07512 NullType, 07513 NullType, 07514 NullType, 07515 NullType, 07516 NullType, 07517 NullType, 07518 NullType, 07519 NullType, 07520 NullType, 07521 NullType, 07522 NullType, 07523 NullType, 07524 NullType, 07525 NullType, 07526 NullType, 07527 NullType, 07528 NullType, 07529 NullType, 07530 NullType, 07531 NullType, 07532 NullType, 07533 NullType, 07534 NullType, 07535 NullType, 07536 NullType, 07537 NullType, 07538 NullType, 07539 NullType, 07540 NullType, 07541 NullType, 07542 NullType, 07543 NullType, 07544 NullType, 07545 NullType, 07546 NullType, 07547 NullType, 07548 NullType, 07549 NullType, 07550 NullType, 07551 NullType, 07552 NullType, 07553 NullType, 07554 NullType, 07555 NullType, 07556 NullType, 07557 NullType, 07558 NullType, 07559 NullType, 07560 NullType> FunctorType; 07561 07562 FunctorType functor_; 07563 07564 functionImplementation_(const FunctorType &functor) : 07565 functor_(functor) 07566 { 07567 } 07568 07569 typedef std::tr1::function<Event ( 07570 const EnqueueArgs&, 07571 T0, 07572 T1, 07573 T2, 07574 T3, 07575 T4)> type_; 07576 07577 Event operator()(const EnqueueArgs& enqueueArgs, 07578 T0 arg0, 07579 T1 arg1, 07580 T2 arg2, 07581 T3 arg3, 07582 T4 arg4) 07583 { 07584 return functor_( 07585 enqueueArgs, 07586 arg0, 07587 arg1, 07588 arg2, 07589 arg3, 07590 arg4); 07591 } 07592 07593 operator type_ () 07594 { 07595 return type_(*this); 07596 } 07597 07598 }; 07599 07600 template< 07601 typename T0, 07602 typename T1, 07603 typename T2, 07604 typename T3, 07605 typename T4, 07606 typename T5> 07607 struct functionImplementation_< 07608 T0, 07609 T1, 07610 T2, 07611 T3, 07612 T4, 07613 T5, 07614 NullType, 07615 NullType, 07616 NullType, 07617 NullType, 07618 NullType, 07619 NullType, 07620 NullType, 07621 NullType, 07622 NullType, 07623 NullType, 07624 NullType, 07625 NullType, 07626 NullType, 07627 NullType, 07628 NullType, 07629 NullType, 07630 NullType, 07631 NullType, 07632 NullType, 07633 NullType, 07634 NullType, 07635 NullType, 07636 NullType, 07637 NullType, 07638 NullType, 07639 NullType, 07640 NullType, 07641 NullType, 07642 NullType, 07643 NullType, 07644 NullType, 07645 NullType, 07646 NullType, 07647 NullType, 07648 NullType, 07649 NullType, 07650 NullType, 07651 NullType, 07652 NullType, 07653 NullType, 07654 NullType, 07655 NullType, 07656 NullType, 07657 NullType, 07658 NullType, 07659 NullType, 07660 NullType, 07661 NullType, 07662 NullType, 07663 NullType, 07664 NullType, 07665 NullType, 07666 NullType, 07667 NullType, 07668 NullType, 07669 NullType, 07670 NullType, 07671 NullType, 07672 NullType, 07673 NullType, 07674 NullType, 07675 NullType, 07676 NullType, 07677 NullType, 07678 NullType, 07679 NullType, 07680 NullType, 07681 NullType, 07682 NullType, 07683 NullType, 07684 NullType, 07685 NullType, 07686 NullType, 07687 NullType, 07688 NullType, 07689 NullType, 07690 NullType, 07691 NullType, 07692 NullType, 07693 NullType, 07694 NullType, 07695 NullType, 07696 NullType, 07697 NullType, 07698 NullType, 07699 NullType, 07700 NullType, 07701 NullType, 07702 NullType, 07703 NullType, 07704 NullType, 07705 NullType, 07706 NullType, 07707 NullType, 07708 NullType, 07709 NullType, 07710 NullType, 07711 NullType, 07712 NullType, 07713 NullType, 07714 NullType, 07715 NullType, 07716 NullType, 07717 NullType, 07718 NullType, 07719 NullType, 07720 NullType, 07721 NullType, 07722 NullType, 07723 NullType, 07724 NullType, 07725 NullType, 07726 NullType, 07727 NullType, 07728 NullType, 07729 NullType, 07730 NullType, 07731 NullType, 07732 NullType, 07733 NullType, 07734 NullType, 07735 NullType> 07736 { 07737 typedef detail::KernelFunctorGlobal< 07738 T0, 07739 T1, 07740 T2, 07741 T3, 07742 T4, 07743 T5, 07744 NullType, 07745 NullType, 07746 NullType, 07747 NullType, 07748 NullType, 07749 NullType, 07750 NullType, 07751 NullType, 07752 NullType, 07753 NullType, 07754 NullType, 07755 NullType, 07756 NullType, 07757 NullType, 07758 NullType, 07759 NullType, 07760 NullType, 07761 NullType, 07762 NullType, 07763 NullType, 07764 NullType, 07765 NullType, 07766 NullType, 07767 NullType, 07768 NullType, 07769 NullType, 07770 NullType, 07771 NullType, 07772 NullType, 07773 NullType, 07774 NullType, 07775 NullType, 07776 NullType, 07777 NullType, 07778 NullType, 07779 NullType, 07780 NullType, 07781 NullType, 07782 NullType, 07783 NullType, 07784 NullType, 07785 NullType, 07786 NullType, 07787 NullType, 07788 NullType, 07789 NullType, 07790 NullType, 07791 NullType, 07792 NullType, 07793 NullType, 07794 NullType, 07795 NullType, 07796 NullType, 07797 NullType, 07798 NullType, 07799 NullType, 07800 NullType, 07801 NullType, 07802 NullType, 07803 NullType, 07804 NullType, 07805 NullType, 07806 NullType, 07807 NullType, 07808 NullType, 07809 NullType, 07810 NullType, 07811 NullType, 07812 NullType, 07813 NullType, 07814 NullType, 07815 NullType, 07816 NullType, 07817 NullType, 07818 NullType, 07819 NullType, 07820 NullType, 07821 NullType, 07822 NullType, 07823 NullType, 07824 NullType, 07825 NullType, 07826 NullType, 07827 NullType, 07828 NullType, 07829 NullType, 07830 NullType, 07831 NullType, 07832 NullType, 07833 NullType, 07834 NullType, 07835 NullType, 07836 NullType, 07837 NullType, 07838 NullType, 07839 NullType, 07840 NullType, 07841 NullType, 07842 NullType, 07843 NullType, 07844 NullType, 07845 NullType, 07846 NullType, 07847 NullType, 07848 NullType, 07849 NullType, 07850 NullType, 07851 NullType, 07852 NullType, 07853 NullType, 07854 NullType, 07855 NullType, 07856 NullType, 07857 NullType, 07858 NullType, 07859 NullType, 07860 NullType, 07861 NullType, 07862 NullType, 07863 NullType, 07864 NullType, 07865 NullType> FunctorType; 07866 07867 FunctorType functor_; 07868 07869 functionImplementation_(const FunctorType &functor) : 07870 functor_(functor) 07871 { 07872 } 07873 07874 typedef std::tr1::function<Event ( 07875 const EnqueueArgs&, 07876 T0, 07877 T1, 07878 T2, 07879 T3, 07880 T4, 07881 T5)> type_; 07882 07883 Event operator()(const EnqueueArgs& enqueueArgs, 07884 T0 arg0, 07885 T1 arg1, 07886 T2 arg2, 07887 T3 arg3, 07888 T4 arg4, 07889 T5 arg5) 07890 { 07891 return functor_( 07892 enqueueArgs, 07893 arg0, 07894 arg1, 07895 arg2, 07896 arg3, 07897 arg4, 07898 arg5); 07899 } 07900 07901 operator type_ () 07902 { 07903 return type_(*this); 07904 } 07905 07906 }; 07907 07908 template< 07909 typename T0, 07910 typename T1, 07911 typename T2, 07912 typename T3, 07913 typename T4, 07914 typename T5, 07915 typename T6> 07916 struct functionImplementation_< 07917 T0, 07918 T1, 07919 T2, 07920 T3, 07921 T4, 07922 T5, 07923 T6, 07924 NullType, 07925 NullType, 07926 NullType, 07927 NullType, 07928 NullType, 07929 NullType, 07930 NullType, 07931 NullType, 07932 NullType, 07933 NullType, 07934 NullType, 07935 NullType, 07936 NullType, 07937 NullType, 07938 NullType, 07939 NullType, 07940 NullType, 07941 NullType, 07942 NullType, 07943 NullType, 07944 NullType, 07945 NullType, 07946 NullType, 07947 NullType, 07948 NullType, 07949 NullType, 07950 NullType, 07951 NullType, 07952 NullType, 07953 NullType, 07954 NullType, 07955 NullType, 07956 NullType, 07957 NullType, 07958 NullType, 07959 NullType, 07960 NullType, 07961 NullType, 07962 NullType, 07963 NullType, 07964 NullType, 07965 NullType, 07966 NullType, 07967 NullType, 07968 NullType, 07969 NullType, 07970 NullType, 07971 NullType, 07972 NullType, 07973 NullType, 07974 NullType, 07975 NullType, 07976 NullType, 07977 NullType, 07978 NullType, 07979 NullType, 07980 NullType, 07981 NullType, 07982 NullType, 07983 NullType, 07984 NullType, 07985 NullType, 07986 NullType, 07987 NullType, 07988 NullType, 07989 NullType, 07990 NullType, 07991 NullType, 07992 NullType, 07993 NullType, 07994 NullType, 07995 NullType, 07996 NullType, 07997 NullType, 07998 NullType, 07999 NullType, 08000 NullType, 08001 NullType, 08002 NullType, 08003 NullType, 08004 NullType, 08005 NullType, 08006 NullType, 08007 NullType, 08008 NullType, 08009 NullType, 08010 NullType, 08011 NullType, 08012 NullType, 08013 NullType, 08014 NullType, 08015 NullType, 08016 NullType, 08017 NullType, 08018 NullType, 08019 NullType, 08020 NullType, 08021 NullType, 08022 NullType, 08023 NullType, 08024 NullType, 08025 NullType, 08026 NullType, 08027 NullType, 08028 NullType, 08029 NullType, 08030 NullType, 08031 NullType, 08032 NullType, 08033 NullType, 08034 NullType, 08035 NullType, 08036 NullType, 08037 NullType, 08038 NullType, 08039 NullType, 08040 NullType, 08041 NullType, 08042 NullType, 08043 NullType, 08044 NullType> 08045 { 08046 typedef detail::KernelFunctorGlobal< 08047 T0, 08048 T1, 08049 T2, 08050 T3, 08051 T4, 08052 T5, 08053 T6, 08054 NullType, 08055 NullType, 08056 NullType, 08057 NullType, 08058 NullType, 08059 NullType, 08060 NullType, 08061 NullType, 08062 NullType, 08063 NullType, 08064 NullType, 08065 NullType, 08066 NullType, 08067 NullType, 08068 NullType, 08069 NullType, 08070 NullType, 08071 NullType, 08072 NullType, 08073 NullType, 08074 NullType, 08075 NullType, 08076 NullType, 08077 NullType, 08078 NullType, 08079 NullType, 08080 NullType, 08081 NullType, 08082 NullType, 08083 NullType, 08084 NullType, 08085 NullType, 08086 NullType, 08087 NullType, 08088 NullType, 08089 NullType, 08090 NullType, 08091 NullType, 08092 NullType, 08093 NullType, 08094 NullType, 08095 NullType, 08096 NullType, 08097 NullType, 08098 NullType, 08099 NullType, 08100 NullType, 08101 NullType, 08102 NullType, 08103 NullType, 08104 NullType, 08105 NullType, 08106 NullType, 08107 NullType, 08108 NullType, 08109 NullType, 08110 NullType, 08111 NullType, 08112 NullType, 08113 NullType, 08114 NullType, 08115 NullType, 08116 NullType, 08117 NullType, 08118 NullType, 08119 NullType, 08120 NullType, 08121 NullType, 08122 NullType, 08123 NullType, 08124 NullType, 08125 NullType, 08126 NullType, 08127 NullType, 08128 NullType, 08129 NullType, 08130 NullType, 08131 NullType, 08132 NullType, 08133 NullType, 08134 NullType, 08135 NullType, 08136 NullType, 08137 NullType, 08138 NullType, 08139 NullType, 08140 NullType, 08141 NullType, 08142 NullType, 08143 NullType, 08144 NullType, 08145 NullType, 08146 NullType, 08147 NullType, 08148 NullType, 08149 NullType, 08150 NullType, 08151 NullType, 08152 NullType, 08153 NullType, 08154 NullType, 08155 NullType, 08156 NullType, 08157 NullType, 08158 NullType, 08159 NullType, 08160 NullType, 08161 NullType, 08162 NullType, 08163 NullType, 08164 NullType, 08165 NullType, 08166 NullType, 08167 NullType, 08168 NullType, 08169 NullType, 08170 NullType, 08171 NullType, 08172 NullType, 08173 NullType, 08174 NullType> FunctorType; 08175 08176 FunctorType functor_; 08177 08178 functionImplementation_(const FunctorType &functor) : 08179 functor_(functor) 08180 { 08181 } 08182 08183 typedef std::tr1::function<Event ( 08184 const EnqueueArgs&, 08185 T0, 08186 T1, 08187 T2, 08188 T3, 08189 T4, 08190 T5, 08191 T6)> type_; 08192 08193 Event operator()(const EnqueueArgs& enqueueArgs, 08194 T0 arg0, 08195 T1 arg1, 08196 T2 arg2, 08197 T3 arg3, 08198 T4 arg4, 08199 T5 arg5, 08200 T6 arg6) 08201 { 08202 return functor_( 08203 enqueueArgs, 08204 arg0, 08205 arg1, 08206 arg2, 08207 arg3, 08208 arg4, 08209 arg5, 08210 arg6); 08211 } 08212 08213 operator type_ () 08214 { 08215 return type_(*this); 08216 } 08217 08218 }; 08219 08220 template< 08221 typename T0, 08222 typename T1, 08223 typename T2, 08224 typename T3, 08225 typename T4, 08226 typename T5, 08227 typename T6, 08228 typename T7> 08229 struct functionImplementation_< 08230 T0, 08231 T1, 08232 T2, 08233 T3, 08234 T4, 08235 T5, 08236 T6, 08237 T7, 08238 NullType, 08239 NullType, 08240 NullType, 08241 NullType, 08242 NullType, 08243 NullType, 08244 NullType, 08245 NullType, 08246 NullType, 08247 NullType, 08248 NullType, 08249 NullType, 08250 NullType, 08251 NullType, 08252 NullType, 08253 NullType, 08254 NullType, 08255 NullType, 08256 NullType, 08257 NullType, 08258 NullType, 08259 NullType, 08260 NullType, 08261 NullType, 08262 NullType, 08263 NullType, 08264 NullType, 08265 NullType, 08266 NullType, 08267 NullType, 08268 NullType, 08269 NullType, 08270 NullType, 08271 NullType, 08272 NullType, 08273 NullType, 08274 NullType, 08275 NullType, 08276 NullType, 08277 NullType, 08278 NullType, 08279 NullType, 08280 NullType, 08281 NullType, 08282 NullType, 08283 NullType, 08284 NullType, 08285 NullType, 08286 NullType, 08287 NullType, 08288 NullType, 08289 NullType, 08290 NullType, 08291 NullType, 08292 NullType, 08293 NullType, 08294 NullType, 08295 NullType, 08296 NullType, 08297 NullType, 08298 NullType, 08299 NullType, 08300 NullType, 08301 NullType, 08302 NullType, 08303 NullType, 08304 NullType, 08305 NullType, 08306 NullType, 08307 NullType, 08308 NullType, 08309 NullType, 08310 NullType, 08311 NullType, 08312 NullType, 08313 NullType, 08314 NullType, 08315 NullType, 08316 NullType, 08317 NullType, 08318 NullType, 08319 NullType, 08320 NullType, 08321 NullType, 08322 NullType, 08323 NullType, 08324 NullType, 08325 NullType, 08326 NullType, 08327 NullType, 08328 NullType, 08329 NullType, 08330 NullType, 08331 NullType, 08332 NullType, 08333 NullType, 08334 NullType, 08335 NullType, 08336 NullType, 08337 NullType, 08338 NullType, 08339 NullType, 08340 NullType, 08341 NullType, 08342 NullType, 08343 NullType, 08344 NullType, 08345 NullType, 08346 NullType, 08347 NullType, 08348 NullType, 08349 NullType, 08350 NullType, 08351 NullType, 08352 NullType, 08353 NullType, 08354 NullType, 08355 NullType, 08356 NullType, 08357 NullType> 08358 { 08359 typedef detail::KernelFunctorGlobal< 08360 T0, 08361 T1, 08362 T2, 08363 T3, 08364 T4, 08365 T5, 08366 T6, 08367 T7, 08368 NullType, 08369 NullType, 08370 NullType, 08371 NullType, 08372 NullType, 08373 NullType, 08374 NullType, 08375 NullType, 08376 NullType, 08377 NullType, 08378 NullType, 08379 NullType, 08380 NullType, 08381 NullType, 08382 NullType, 08383 NullType, 08384 NullType, 08385 NullType, 08386 NullType, 08387 NullType, 08388 NullType, 08389 NullType, 08390 NullType, 08391 NullType, 08392 NullType, 08393 NullType, 08394 NullType, 08395 NullType, 08396 NullType, 08397 NullType, 08398 NullType, 08399 NullType, 08400 NullType, 08401 NullType, 08402 NullType, 08403 NullType, 08404 NullType, 08405 NullType, 08406 NullType, 08407 NullType, 08408 NullType, 08409 NullType, 08410 NullType, 08411 NullType, 08412 NullType, 08413 NullType, 08414 NullType, 08415 NullType, 08416 NullType, 08417 NullType, 08418 NullType, 08419 NullType, 08420 NullType, 08421 NullType, 08422 NullType, 08423 NullType, 08424 NullType, 08425 NullType, 08426 NullType, 08427 NullType, 08428 NullType, 08429 NullType, 08430 NullType, 08431 NullType, 08432 NullType, 08433 NullType, 08434 NullType, 08435 NullType, 08436 NullType, 08437 NullType, 08438 NullType, 08439 NullType, 08440 NullType, 08441 NullType, 08442 NullType, 08443 NullType, 08444 NullType, 08445 NullType, 08446 NullType, 08447 NullType, 08448 NullType, 08449 NullType, 08450 NullType, 08451 NullType, 08452 NullType, 08453 NullType, 08454 NullType, 08455 NullType, 08456 NullType, 08457 NullType, 08458 NullType, 08459 NullType, 08460 NullType, 08461 NullType, 08462 NullType, 08463 NullType, 08464 NullType, 08465 NullType, 08466 NullType, 08467 NullType, 08468 NullType, 08469 NullType, 08470 NullType, 08471 NullType, 08472 NullType, 08473 NullType, 08474 NullType, 08475 NullType, 08476 NullType, 08477 NullType, 08478 NullType, 08479 NullType, 08480 NullType, 08481 NullType, 08482 NullType, 08483 NullType, 08484 NullType, 08485 NullType, 08486 NullType, 08487 NullType> FunctorType; 08488 08489 FunctorType functor_; 08490 08491 functionImplementation_(const FunctorType &functor) : 08492 functor_(functor) 08493 { 08494 } 08495 08496 typedef std::tr1::function<Event ( 08497 const EnqueueArgs&, 08498 T0, 08499 T1, 08500 T2, 08501 T3, 08502 T4, 08503 T5, 08504 T6, 08505 T7)> type_; 08506 08507 Event operator()(const EnqueueArgs& enqueueArgs, 08508 T0 arg0, 08509 T1 arg1, 08510 T2 arg2, 08511 T3 arg3, 08512 T4 arg4, 08513 T5 arg5, 08514 T6 arg6, 08515 T7 arg7) 08516 { 08517 return functor_( 08518 enqueueArgs, 08519 arg0, 08520 arg1, 08521 arg2, 08522 arg3, 08523 arg4, 08524 arg5, 08525 arg6, 08526 arg7); 08527 } 08528 08529 operator type_ () 08530 { 08531 return type_(*this); 08532 } 08533 08534 }; 08535 08536 template< 08537 typename T0, 08538 typename T1, 08539 typename T2, 08540 typename T3, 08541 typename T4, 08542 typename T5, 08543 typename T6, 08544 typename T7, 08545 typename T8> 08546 struct functionImplementation_< 08547 T0, 08548 T1, 08549 T2, 08550 T3, 08551 T4, 08552 T5, 08553 T6, 08554 T7, 08555 T8, 08556 NullType, 08557 NullType, 08558 NullType, 08559 NullType, 08560 NullType, 08561 NullType, 08562 NullType, 08563 NullType, 08564 NullType, 08565 NullType, 08566 NullType, 08567 NullType, 08568 NullType, 08569 NullType, 08570 NullType, 08571 NullType, 08572 NullType, 08573 NullType, 08574 NullType, 08575 NullType, 08576 NullType, 08577 NullType, 08578 NullType, 08579 NullType, 08580 NullType, 08581 NullType, 08582 NullType, 08583 NullType, 08584 NullType, 08585 NullType, 08586 NullType, 08587 NullType, 08588 NullType, 08589 NullType, 08590 NullType, 08591 NullType, 08592 NullType, 08593 NullType, 08594 NullType, 08595 NullType, 08596 NullType, 08597 NullType, 08598 NullType, 08599 NullType, 08600 NullType, 08601 NullType, 08602 NullType, 08603 NullType, 08604 NullType, 08605 NullType, 08606 NullType, 08607 NullType, 08608 NullType, 08609 NullType, 08610 NullType, 08611 NullType, 08612 NullType, 08613 NullType, 08614 NullType, 08615 NullType, 08616 NullType, 08617 NullType, 08618 NullType, 08619 NullType, 08620 NullType, 08621 NullType, 08622 NullType, 08623 NullType, 08624 NullType, 08625 NullType, 08626 NullType, 08627 NullType, 08628 NullType, 08629 NullType, 08630 NullType, 08631 NullType, 08632 NullType, 08633 NullType, 08634 NullType, 08635 NullType, 08636 NullType, 08637 NullType, 08638 NullType, 08639 NullType, 08640 NullType, 08641 NullType, 08642 NullType, 08643 NullType, 08644 NullType, 08645 NullType, 08646 NullType, 08647 NullType, 08648 NullType, 08649 NullType, 08650 NullType, 08651 NullType, 08652 NullType, 08653 NullType, 08654 NullType, 08655 NullType, 08656 NullType, 08657 NullType, 08658 NullType, 08659 NullType, 08660 NullType, 08661 NullType, 08662 NullType, 08663 NullType, 08664 NullType, 08665 NullType, 08666 NullType, 08667 NullType, 08668 NullType, 08669 NullType, 08670 NullType, 08671 NullType, 08672 NullType, 08673 NullType, 08674 NullType> 08675 { 08676 typedef detail::KernelFunctorGlobal< 08677 T0, 08678 T1, 08679 T2, 08680 T3, 08681 T4, 08682 T5, 08683 T6, 08684 T7, 08685 T8, 08686 NullType, 08687 NullType, 08688 NullType, 08689 NullType, 08690 NullType, 08691 NullType, 08692 NullType, 08693 NullType, 08694 NullType, 08695 NullType, 08696 NullType, 08697 NullType, 08698 NullType, 08699 NullType, 08700 NullType, 08701 NullType, 08702 NullType, 08703 NullType, 08704 NullType, 08705 NullType, 08706 NullType, 08707 NullType, 08708 NullType, 08709 NullType, 08710 NullType, 08711 NullType, 08712 NullType, 08713 NullType, 08714 NullType, 08715 NullType, 08716 NullType, 08717 NullType, 08718 NullType, 08719 NullType, 08720 NullType, 08721 NullType, 08722 NullType, 08723 NullType, 08724 NullType, 08725 NullType, 08726 NullType, 08727 NullType, 08728 NullType, 08729 NullType, 08730 NullType, 08731 NullType, 08732 NullType, 08733 NullType, 08734 NullType, 08735 NullType, 08736 NullType, 08737 NullType, 08738 NullType, 08739 NullType, 08740 NullType, 08741 NullType, 08742 NullType, 08743 NullType, 08744 NullType, 08745 NullType, 08746 NullType, 08747 NullType, 08748 NullType, 08749 NullType, 08750 NullType, 08751 NullType, 08752 NullType, 08753 NullType, 08754 NullType, 08755 NullType, 08756 NullType, 08757 NullType, 08758 NullType, 08759 NullType, 08760 NullType, 08761 NullType, 08762 NullType, 08763 NullType, 08764 NullType, 08765 NullType, 08766 NullType, 08767 NullType, 08768 NullType, 08769 NullType, 08770 NullType, 08771 NullType, 08772 NullType, 08773 NullType, 08774 NullType, 08775 NullType, 08776 NullType, 08777 NullType, 08778 NullType, 08779 NullType, 08780 NullType, 08781 NullType, 08782 NullType, 08783 NullType, 08784 NullType, 08785 NullType, 08786 NullType, 08787 NullType, 08788 NullType, 08789 NullType, 08790 NullType, 08791 NullType, 08792 NullType, 08793 NullType, 08794 NullType, 08795 NullType, 08796 NullType, 08797 NullType, 08798 NullType, 08799 NullType, 08800 NullType, 08801 NullType, 08802 NullType, 08803 NullType, 08804 NullType> FunctorType; 08805 08806 FunctorType functor_; 08807 08808 functionImplementation_(const FunctorType &functor) : 08809 functor_(functor) 08810 { 08811 } 08812 08813 typedef std::tr1::function<Event ( 08814 const EnqueueArgs&, 08815 T0, 08816 T1, 08817 T2, 08818 T3, 08819 T4, 08820 T5, 08821 T6, 08822 T7, 08823 T8)> type_; 08824 08825 Event operator()(const EnqueueArgs& enqueueArgs, 08826 T0 arg0, 08827 T1 arg1, 08828 T2 arg2, 08829 T3 arg3, 08830 T4 arg4, 08831 T5 arg5, 08832 T6 arg6, 08833 T7 arg7, 08834 T8 arg8) 08835 { 08836 return functor_( 08837 enqueueArgs, 08838 arg0, 08839 arg1, 08840 arg2, 08841 arg3, 08842 arg4, 08843 arg5, 08844 arg6, 08845 arg7, 08846 arg8); 08847 } 08848 08849 operator type_ () 08850 { 08851 return type_(*this); 08852 } 08853 08854 }; 08855 08856 template< 08857 typename T0, 08858 typename T1, 08859 typename T2, 08860 typename T3, 08861 typename T4, 08862 typename T5, 08863 typename T6, 08864 typename T7, 08865 typename T8, 08866 typename T9> 08867 struct functionImplementation_< 08868 T0, 08869 T1, 08870 T2, 08871 T3, 08872 T4, 08873 T5, 08874 T6, 08875 T7, 08876 T8, 08877 T9, 08878 NullType, 08879 NullType, 08880 NullType, 08881 NullType, 08882 NullType, 08883 NullType, 08884 NullType, 08885 NullType, 08886 NullType, 08887 NullType, 08888 NullType, 08889 NullType, 08890 NullType, 08891 NullType, 08892 NullType, 08893 NullType, 08894 NullType, 08895 NullType, 08896 NullType, 08897 NullType, 08898 NullType, 08899 NullType, 08900 NullType, 08901 NullType, 08902 NullType, 08903 NullType, 08904 NullType, 08905 NullType, 08906 NullType, 08907 NullType, 08908 NullType, 08909 NullType, 08910 NullType, 08911 NullType, 08912 NullType, 08913 NullType, 08914 NullType, 08915 NullType, 08916 NullType, 08917 NullType, 08918 NullType, 08919 NullType, 08920 NullType, 08921 NullType, 08922 NullType, 08923 NullType, 08924 NullType, 08925 NullType, 08926 NullType, 08927 NullType, 08928 NullType, 08929 NullType, 08930 NullType, 08931 NullType, 08932 NullType, 08933 NullType, 08934 NullType, 08935 NullType, 08936 NullType, 08937 NullType, 08938 NullType, 08939 NullType, 08940 NullType, 08941 NullType, 08942 NullType, 08943 NullType, 08944 NullType, 08945 NullType, 08946 NullType, 08947 NullType, 08948 NullType, 08949 NullType, 08950 NullType, 08951 NullType, 08952 NullType, 08953 NullType, 08954 NullType, 08955 NullType, 08956 NullType, 08957 NullType, 08958 NullType, 08959 NullType, 08960 NullType, 08961 NullType, 08962 NullType, 08963 NullType, 08964 NullType, 08965 NullType, 08966 NullType, 08967 NullType, 08968 NullType, 08969 NullType, 08970 NullType, 08971 NullType, 08972 NullType, 08973 NullType, 08974 NullType, 08975 NullType, 08976 NullType, 08977 NullType, 08978 NullType, 08979 NullType, 08980 NullType, 08981 NullType, 08982 NullType, 08983 NullType, 08984 NullType, 08985 NullType, 08986 NullType, 08987 NullType, 08988 NullType, 08989 NullType, 08990 NullType, 08991 NullType, 08992 NullType, 08993 NullType, 08994 NullType, 08995 NullType> 08996 { 08997 typedef detail::KernelFunctorGlobal< 08998 T0, 08999 T1, 09000 T2, 09001 T3, 09002 T4, 09003 T5, 09004 T6, 09005 T7, 09006 T8, 09007 T9, 09008 NullType, 09009 NullType, 09010 NullType, 09011 NullType, 09012 NullType, 09013 NullType, 09014 NullType, 09015 NullType, 09016 NullType, 09017 NullType, 09018 NullType, 09019 NullType, 09020 NullType, 09021 NullType, 09022 NullType, 09023 NullType, 09024 NullType, 09025 NullType, 09026 NullType, 09027 NullType, 09028 NullType, 09029 NullType, 09030 NullType, 09031 NullType, 09032 NullType, 09033 NullType, 09034 NullType, 09035 NullType, 09036 NullType, 09037 NullType, 09038 NullType, 09039 NullType, 09040 NullType, 09041 NullType, 09042 NullType, 09043 NullType, 09044 NullType, 09045 NullType, 09046 NullType, 09047 NullType, 09048 NullType, 09049 NullType, 09050 NullType, 09051 NullType, 09052 NullType, 09053 NullType, 09054 NullType, 09055 NullType, 09056 NullType, 09057 NullType, 09058 NullType, 09059 NullType, 09060 NullType, 09061 NullType, 09062 NullType, 09063 NullType, 09064 NullType, 09065 NullType, 09066 NullType, 09067 NullType, 09068 NullType, 09069 NullType, 09070 NullType, 09071 NullType, 09072 NullType, 09073 NullType, 09074 NullType, 09075 NullType, 09076 NullType, 09077 NullType, 09078 NullType, 09079 NullType, 09080 NullType, 09081 NullType, 09082 NullType, 09083 NullType, 09084 NullType, 09085 NullType, 09086 NullType, 09087 NullType, 09088 NullType, 09089 NullType, 09090 NullType, 09091 NullType, 09092 NullType, 09093 NullType, 09094 NullType, 09095 NullType, 09096 NullType, 09097 NullType, 09098 NullType, 09099 NullType, 09100 NullType, 09101 NullType, 09102 NullType, 09103 NullType, 09104 NullType, 09105 NullType, 09106 NullType, 09107 NullType, 09108 NullType, 09109 NullType, 09110 NullType, 09111 NullType, 09112 NullType, 09113 NullType, 09114 NullType, 09115 NullType, 09116 NullType, 09117 NullType, 09118 NullType, 09119 NullType, 09120 NullType, 09121 NullType, 09122 NullType, 09123 NullType, 09124 NullType, 09125 NullType> FunctorType; 09126 09127 FunctorType functor_; 09128 09129 functionImplementation_(const FunctorType &functor) : 09130 functor_(functor) 09131 { 09132 } 09133 09134 typedef std::tr1::function<Event ( 09135 const EnqueueArgs&, 09136 T0, 09137 T1, 09138 T2, 09139 T3, 09140 T4, 09141 T5, 09142 T6, 09143 T7, 09144 T8, 09145 T9)> type_; 09146 09147 Event operator()(const EnqueueArgs& enqueueArgs, 09148 T0 arg0, 09149 T1 arg1, 09150 T2 arg2, 09151 T3 arg3, 09152 T4 arg4, 09153 T5 arg5, 09154 T6 arg6, 09155 T7 arg7, 09156 T8 arg8, 09157 T9 arg9) 09158 { 09159 return functor_( 09160 enqueueArgs, 09161 arg0, 09162 arg1, 09163 arg2, 09164 arg3, 09165 arg4, 09166 arg5, 09167 arg6, 09168 arg7, 09169 arg8, 09170 arg9); 09171 } 09172 09173 operator type_ () 09174 { 09175 return type_(*this); 09176 } 09177 09178 }; 09179 09180 template< 09181 typename T0, 09182 typename T1, 09183 typename T2, 09184 typename T3, 09185 typename T4, 09186 typename T5, 09187 typename T6, 09188 typename T7, 09189 typename T8, 09190 typename T9, 09191 typename T10> 09192 struct functionImplementation_< 09193 T0, 09194 T1, 09195 T2, 09196 T3, 09197 T4, 09198 T5, 09199 T6, 09200 T7, 09201 T8, 09202 T9, 09203 T10, 09204 NullType, 09205 NullType, 09206 NullType, 09207 NullType, 09208 NullType, 09209 NullType, 09210 NullType, 09211 NullType, 09212 NullType, 09213 NullType, 09214 NullType, 09215 NullType, 09216 NullType, 09217 NullType, 09218 NullType, 09219 NullType, 09220 NullType, 09221 NullType, 09222 NullType, 09223 NullType, 09224 NullType, 09225 NullType, 09226 NullType, 09227 NullType, 09228 NullType, 09229 NullType, 09230 NullType, 09231 NullType, 09232 NullType, 09233 NullType, 09234 NullType, 09235 NullType, 09236 NullType, 09237 NullType, 09238 NullType, 09239 NullType, 09240 NullType, 09241 NullType, 09242 NullType, 09243 NullType, 09244 NullType, 09245 NullType, 09246 NullType, 09247 NullType, 09248 NullType, 09249 NullType, 09250 NullType, 09251 NullType, 09252 NullType, 09253 NullType, 09254 NullType, 09255 NullType, 09256 NullType, 09257 NullType, 09258 NullType, 09259 NullType, 09260 NullType, 09261 NullType, 09262 NullType, 09263 NullType, 09264 NullType, 09265 NullType, 09266 NullType, 09267 NullType, 09268 NullType, 09269 NullType, 09270 NullType, 09271 NullType, 09272 NullType, 09273 NullType, 09274 NullType, 09275 NullType, 09276 NullType, 09277 NullType, 09278 NullType, 09279 NullType, 09280 NullType, 09281 NullType, 09282 NullType, 09283 NullType, 09284 NullType, 09285 NullType, 09286 NullType, 09287 NullType, 09288 NullType, 09289 NullType, 09290 NullType, 09291 NullType, 09292 NullType, 09293 NullType, 09294 NullType, 09295 NullType, 09296 NullType, 09297 NullType, 09298 NullType, 09299 NullType, 09300 NullType, 09301 NullType, 09302 NullType, 09303 NullType, 09304 NullType, 09305 NullType, 09306 NullType, 09307 NullType, 09308 NullType, 09309 NullType, 09310 NullType, 09311 NullType, 09312 NullType, 09313 NullType, 09314 NullType, 09315 NullType, 09316 NullType, 09317 NullType, 09318 NullType, 09319 NullType, 09320 NullType> 09321 { 09322 typedef detail::KernelFunctorGlobal< 09323 T0, 09324 T1, 09325 T2, 09326 T3, 09327 T4, 09328 T5, 09329 T6, 09330 T7, 09331 T8, 09332 T9, 09333 T10, 09334 NullType, 09335 NullType, 09336 NullType, 09337 NullType, 09338 NullType, 09339 NullType, 09340 NullType, 09341 NullType, 09342 NullType, 09343 NullType, 09344 NullType, 09345 NullType, 09346 NullType, 09347 NullType, 09348 NullType, 09349 NullType, 09350 NullType, 09351 NullType, 09352 NullType, 09353 NullType, 09354 NullType, 09355 NullType, 09356 NullType, 09357 NullType, 09358 NullType, 09359 NullType, 09360 NullType, 09361 NullType, 09362 NullType, 09363 NullType, 09364 NullType, 09365 NullType, 09366 NullType, 09367 NullType, 09368 NullType, 09369 NullType, 09370 NullType, 09371 NullType, 09372 NullType, 09373 NullType, 09374 NullType, 09375 NullType, 09376 NullType, 09377 NullType, 09378 NullType, 09379 NullType, 09380 NullType, 09381 NullType, 09382 NullType, 09383 NullType, 09384 NullType, 09385 NullType, 09386 NullType, 09387 NullType, 09388 NullType, 09389 NullType, 09390 NullType, 09391 NullType, 09392 NullType, 09393 NullType, 09394 NullType, 09395 NullType, 09396 NullType, 09397 NullType, 09398 NullType, 09399 NullType, 09400 NullType, 09401 NullType, 09402 NullType, 09403 NullType, 09404 NullType, 09405 NullType, 09406 NullType, 09407 NullType, 09408 NullType, 09409 NullType, 09410 NullType, 09411 NullType, 09412 NullType, 09413 NullType, 09414 NullType, 09415 NullType, 09416 NullType, 09417 NullType, 09418 NullType, 09419 NullType, 09420 NullType, 09421 NullType, 09422 NullType, 09423 NullType, 09424 NullType, 09425 NullType, 09426 NullType, 09427 NullType, 09428 NullType, 09429 NullType, 09430 NullType, 09431 NullType, 09432 NullType, 09433 NullType, 09434 NullType, 09435 NullType, 09436 NullType, 09437 NullType, 09438 NullType, 09439 NullType, 09440 NullType, 09441 NullType, 09442 NullType, 09443 NullType, 09444 NullType, 09445 NullType, 09446 NullType, 09447 NullType, 09448 NullType, 09449 NullType, 09450 NullType> FunctorType; 09451 09452 FunctorType functor_; 09453 09454 functionImplementation_(const FunctorType &functor) : 09455 functor_(functor) 09456 { 09457 } 09458 09459 typedef std::tr1::function<Event ( 09460 const EnqueueArgs&, 09461 T0, 09462 T1, 09463 T2, 09464 T3, 09465 T4, 09466 T5, 09467 T6, 09468 T7, 09469 T8, 09470 T9, 09471 T10)> type_; 09472 09473 Event operator()(const EnqueueArgs& enqueueArgs, 09474 T0 arg0, 09475 T1 arg1, 09476 T2 arg2, 09477 T3 arg3, 09478 T4 arg4, 09479 T5 arg5, 09480 T6 arg6, 09481 T7 arg7, 09482 T8 arg8, 09483 T9 arg9, 09484 T10 arg10) 09485 { 09486 return functor_( 09487 enqueueArgs, 09488 arg0, 09489 arg1, 09490 arg2, 09491 arg3, 09492 arg4, 09493 arg5, 09494 arg6, 09495 arg7, 09496 arg8, 09497 arg9, 09498 arg10); 09499 } 09500 09501 operator type_ () 09502 { 09503 return type_(*this); 09504 } 09505 09506 }; 09507 09508 template< 09509 typename T0, 09510 typename T1, 09511 typename T2, 09512 typename T3, 09513 typename T4, 09514 typename T5, 09515 typename T6, 09516 typename T7, 09517 typename T8, 09518 typename T9, 09519 typename T10, 09520 typename T11> 09521 struct functionImplementation_< 09522 T0, 09523 T1, 09524 T2, 09525 T3, 09526 T4, 09527 T5, 09528 T6, 09529 T7, 09530 T8, 09531 T9, 09532 T10, 09533 T11, 09534 NullType, 09535 NullType, 09536 NullType, 09537 NullType, 09538 NullType, 09539 NullType, 09540 NullType, 09541 NullType, 09542 NullType, 09543 NullType, 09544 NullType, 09545 NullType, 09546 NullType, 09547 NullType, 09548 NullType, 09549 NullType, 09550 NullType, 09551 NullType, 09552 NullType, 09553 NullType, 09554 NullType, 09555 NullType, 09556 NullType, 09557 NullType, 09558 NullType, 09559 NullType, 09560 NullType, 09561 NullType, 09562 NullType, 09563 NullType, 09564 NullType, 09565 NullType, 09566 NullType, 09567 NullType, 09568 NullType, 09569 NullType, 09570 NullType, 09571 NullType, 09572 NullType, 09573 NullType, 09574 NullType, 09575 NullType, 09576 NullType, 09577 NullType, 09578 NullType, 09579 NullType, 09580 NullType, 09581 NullType, 09582 NullType, 09583 NullType, 09584 NullType, 09585 NullType, 09586 NullType, 09587 NullType, 09588 NullType, 09589 NullType, 09590 NullType, 09591 NullType, 09592 NullType, 09593 NullType, 09594 NullType, 09595 NullType, 09596 NullType, 09597 NullType, 09598 NullType, 09599 NullType, 09600 NullType, 09601 NullType, 09602 NullType, 09603 NullType, 09604 NullType, 09605 NullType, 09606 NullType, 09607 NullType, 09608 NullType, 09609 NullType, 09610 NullType, 09611 NullType, 09612 NullType, 09613 NullType, 09614 NullType, 09615 NullType, 09616 NullType, 09617 NullType, 09618 NullType, 09619 NullType, 09620 NullType, 09621 NullType, 09622 NullType, 09623 NullType, 09624 NullType, 09625 NullType, 09626 NullType, 09627 NullType, 09628 NullType, 09629 NullType, 09630 NullType, 09631 NullType, 09632 NullType, 09633 NullType, 09634 NullType, 09635 NullType, 09636 NullType, 09637 NullType, 09638 NullType, 09639 NullType, 09640 NullType, 09641 NullType, 09642 NullType, 09643 NullType, 09644 NullType, 09645 NullType, 09646 NullType, 09647 NullType, 09648 NullType, 09649 NullType> 09650 { 09651 typedef detail::KernelFunctorGlobal< 09652 T0, 09653 T1, 09654 T2, 09655 T3, 09656 T4, 09657 T5, 09658 T6, 09659 T7, 09660 T8, 09661 T9, 09662 T10, 09663 T11, 09664 NullType, 09665 NullType, 09666 NullType, 09667 NullType, 09668 NullType, 09669 NullType, 09670 NullType, 09671 NullType, 09672 NullType, 09673 NullType, 09674 NullType, 09675 NullType, 09676 NullType, 09677 NullType, 09678 NullType, 09679 NullType, 09680 NullType, 09681 NullType, 09682 NullType, 09683 NullType, 09684 NullType, 09685 NullType, 09686 NullType, 09687 NullType, 09688 NullType, 09689 NullType, 09690 NullType, 09691 NullType, 09692 NullType, 09693 NullType, 09694 NullType, 09695 NullType, 09696 NullType, 09697 NullType, 09698 NullType, 09699 NullType, 09700 NullType, 09701 NullType, 09702 NullType, 09703 NullType, 09704 NullType, 09705 NullType, 09706 NullType, 09707 NullType, 09708 NullType, 09709 NullType, 09710 NullType, 09711 NullType, 09712 NullType, 09713 NullType, 09714 NullType, 09715 NullType, 09716 NullType, 09717 NullType, 09718 NullType, 09719 NullType, 09720 NullType, 09721 NullType, 09722 NullType, 09723 NullType, 09724 NullType, 09725 NullType, 09726 NullType, 09727 NullType, 09728 NullType, 09729 NullType, 09730 NullType, 09731 NullType, 09732 NullType, 09733 NullType, 09734 NullType, 09735 NullType, 09736 NullType, 09737 NullType, 09738 NullType, 09739 NullType, 09740 NullType, 09741 NullType, 09742 NullType, 09743 NullType, 09744 NullType, 09745 NullType, 09746 NullType, 09747 NullType, 09748 NullType, 09749 NullType, 09750 NullType, 09751 NullType, 09752 NullType, 09753 NullType, 09754 NullType, 09755 NullType, 09756 NullType, 09757 NullType, 09758 NullType, 09759 NullType, 09760 NullType, 09761 NullType, 09762 NullType, 09763 NullType, 09764 NullType, 09765 NullType, 09766 NullType, 09767 NullType, 09768 NullType, 09769 NullType, 09770 NullType, 09771 NullType, 09772 NullType, 09773 NullType, 09774 NullType, 09775 NullType, 09776 NullType, 09777 NullType, 09778 NullType, 09779 NullType> FunctorType; 09780 09781 FunctorType functor_; 09782 09783 functionImplementation_(const FunctorType &functor) : 09784 functor_(functor) 09785 { 09786 } 09787 09788 typedef std::tr1::function<Event ( 09789 const EnqueueArgs&, 09790 T0, 09791 T1, 09792 T2, 09793 T3, 09794 T4, 09795 T5, 09796 T6, 09797 T7, 09798 T8, 09799 T9, 09800 T10, 09801 T11)> type_; 09802 09803 Event operator()(const EnqueueArgs& enqueueArgs, 09804 T0 arg0, 09805 T1 arg1, 09806 T2 arg2, 09807 T3 arg3, 09808 T4 arg4, 09809 T5 arg5, 09810 T6 arg6, 09811 T7 arg7, 09812 T8 arg8, 09813 T9 arg9, 09814 T10 arg10, 09815 T11 arg11) 09816 { 09817 return functor_( 09818 enqueueArgs, 09819 arg0, 09820 arg1, 09821 arg2, 09822 arg3, 09823 arg4, 09824 arg5, 09825 arg6, 09826 arg7, 09827 arg8, 09828 arg9, 09829 arg10, 09830 arg11); 09831 } 09832 09833 operator type_ () 09834 { 09835 return type_(*this); 09836 } 09837 09838 }; 09839 09840 template< 09841 typename T0, 09842 typename T1, 09843 typename T2, 09844 typename T3, 09845 typename T4, 09846 typename T5, 09847 typename T6, 09848 typename T7, 09849 typename T8, 09850 typename T9, 09851 typename T10, 09852 typename T11, 09853 typename T12> 09854 struct functionImplementation_< 09855 T0, 09856 T1, 09857 T2, 09858 T3, 09859 T4, 09860 T5, 09861 T6, 09862 T7, 09863 T8, 09864 T9, 09865 T10, 09866 T11, 09867 T12, 09868 NullType, 09869 NullType, 09870 NullType, 09871 NullType, 09872 NullType, 09873 NullType, 09874 NullType, 09875 NullType, 09876 NullType, 09877 NullType, 09878 NullType, 09879 NullType, 09880 NullType, 09881 NullType, 09882 NullType, 09883 NullType, 09884 NullType, 09885 NullType, 09886 NullType, 09887 NullType, 09888 NullType, 09889 NullType, 09890 NullType, 09891 NullType, 09892 NullType, 09893 NullType, 09894 NullType, 09895 NullType, 09896 NullType, 09897 NullType, 09898 NullType, 09899 NullType, 09900 NullType, 09901 NullType, 09902 NullType, 09903 NullType, 09904 NullType, 09905 NullType, 09906 NullType, 09907 NullType, 09908 NullType, 09909 NullType, 09910 NullType, 09911 NullType, 09912 NullType, 09913 NullType, 09914 NullType, 09915 NullType, 09916 NullType, 09917 NullType, 09918 NullType, 09919 NullType, 09920 NullType, 09921 NullType, 09922 NullType, 09923 NullType, 09924 NullType, 09925 NullType, 09926 NullType, 09927 NullType, 09928 NullType, 09929 NullType, 09930 NullType, 09931 NullType, 09932 NullType, 09933 NullType, 09934 NullType, 09935 NullType, 09936 NullType, 09937 NullType, 09938 NullType, 09939 NullType, 09940 NullType, 09941 NullType, 09942 NullType, 09943 NullType, 09944 NullType, 09945 NullType, 09946 NullType, 09947 NullType, 09948 NullType, 09949 NullType, 09950 NullType, 09951 NullType, 09952 NullType, 09953 NullType, 09954 NullType, 09955 NullType, 09956 NullType, 09957 NullType, 09958 NullType, 09959 NullType, 09960 NullType, 09961 NullType, 09962 NullType, 09963 NullType, 09964 NullType, 09965 NullType, 09966 NullType, 09967 NullType, 09968 NullType, 09969 NullType, 09970 NullType, 09971 NullType, 09972 NullType, 09973 NullType, 09974 NullType, 09975 NullType, 09976 NullType, 09977 NullType, 09978 NullType, 09979 NullType, 09980 NullType, 09981 NullType, 09982 NullType> 09983 { 09984 typedef detail::KernelFunctorGlobal< 09985 T0, 09986 T1, 09987 T2, 09988 T3, 09989 T4, 09990 T5, 09991 T6, 09992 T7, 09993 T8, 09994 T9, 09995 T10, 09996 T11, 09997 T12, 09998 NullType, 09999 NullType, 10000 NullType, 10001 NullType, 10002 NullType, 10003 NullType, 10004 NullType, 10005 NullType, 10006 NullType, 10007 NullType, 10008 NullType, 10009 NullType, 10010 NullType, 10011 NullType, 10012 NullType, 10013 NullType, 10014 NullType, 10015 NullType, 10016 NullType, 10017 NullType, 10018 NullType, 10019 NullType, 10020 NullType, 10021 NullType, 10022 NullType, 10023 NullType, 10024 NullType, 10025 NullType, 10026 NullType, 10027 NullType, 10028 NullType, 10029 NullType, 10030 NullType, 10031 NullType, 10032 NullType, 10033 NullType, 10034 NullType, 10035 NullType, 10036 NullType, 10037 NullType, 10038 NullType, 10039 NullType, 10040 NullType, 10041 NullType, 10042 NullType, 10043 NullType, 10044 NullType, 10045 NullType, 10046 NullType, 10047 NullType, 10048 NullType, 10049 NullType, 10050 NullType, 10051 NullType, 10052 NullType, 10053 NullType, 10054 NullType, 10055 NullType, 10056 NullType, 10057 NullType, 10058 NullType, 10059 NullType, 10060 NullType, 10061 NullType, 10062 NullType, 10063 NullType, 10064 NullType, 10065 NullType, 10066 NullType, 10067 NullType, 10068 NullType, 10069 NullType, 10070 NullType, 10071 NullType, 10072 NullType, 10073 NullType, 10074 NullType, 10075 NullType, 10076 NullType, 10077 NullType, 10078 NullType, 10079 NullType, 10080 NullType, 10081 NullType, 10082 NullType, 10083 NullType, 10084 NullType, 10085 NullType, 10086 NullType, 10087 NullType, 10088 NullType, 10089 NullType, 10090 NullType, 10091 NullType, 10092 NullType, 10093 NullType, 10094 NullType, 10095 NullType, 10096 NullType, 10097 NullType, 10098 NullType, 10099 NullType, 10100 NullType, 10101 NullType, 10102 NullType, 10103 NullType, 10104 NullType, 10105 NullType, 10106 NullType, 10107 NullType, 10108 NullType, 10109 NullType, 10110 NullType, 10111 NullType, 10112 NullType> FunctorType; 10113 10114 FunctorType functor_; 10115 10116 functionImplementation_(const FunctorType &functor) : 10117 functor_(functor) 10118 { 10119 } 10120 10121 typedef std::tr1::function<Event ( 10122 const EnqueueArgs&, 10123 T0, 10124 T1, 10125 T2, 10126 T3, 10127 T4, 10128 T5, 10129 T6, 10130 T7, 10131 T8, 10132 T9, 10133 T10, 10134 T11, 10135 T12)> type_; 10136 10137 Event operator()(const EnqueueArgs& enqueueArgs, 10138 T0 arg0, 10139 T1 arg1, 10140 T2 arg2, 10141 T3 arg3, 10142 T4 arg4, 10143 T5 arg5, 10144 T6 arg6, 10145 T7 arg7, 10146 T8 arg8, 10147 T9 arg9, 10148 T10 arg10, 10149 T11 arg11, 10150 T12 arg12) 10151 { 10152 return functor_( 10153 enqueueArgs, 10154 arg0, 10155 arg1, 10156 arg2, 10157 arg3, 10158 arg4, 10159 arg5, 10160 arg6, 10161 arg7, 10162 arg8, 10163 arg9, 10164 arg10, 10165 arg11, 10166 arg12); 10167 } 10168 10169 operator type_ () 10170 { 10171 return type_(*this); 10172 } 10173 10174 }; 10175 10176 template< 10177 typename T0, 10178 typename T1, 10179 typename T2, 10180 typename T3, 10181 typename T4, 10182 typename T5, 10183 typename T6, 10184 typename T7, 10185 typename T8, 10186 typename T9, 10187 typename T10, 10188 typename T11, 10189 typename T12, 10190 typename T13> 10191 struct functionImplementation_< 10192 T0, 10193 T1, 10194 T2, 10195 T3, 10196 T4, 10197 T5, 10198 T6, 10199 T7, 10200 T8, 10201 T9, 10202 T10, 10203 T11, 10204 T12, 10205 T13, 10206 NullType, 10207 NullType, 10208 NullType, 10209 NullType, 10210 NullType, 10211 NullType, 10212 NullType, 10213 NullType, 10214 NullType, 10215 NullType, 10216 NullType, 10217 NullType, 10218 NullType, 10219 NullType, 10220 NullType, 10221 NullType, 10222 NullType, 10223 NullType, 10224 NullType, 10225 NullType, 10226 NullType, 10227 NullType, 10228 NullType, 10229 NullType, 10230 NullType, 10231 NullType, 10232 NullType, 10233 NullType, 10234 NullType, 10235 NullType, 10236 NullType, 10237 NullType, 10238 NullType, 10239 NullType, 10240 NullType, 10241 NullType, 10242 NullType, 10243 NullType, 10244 NullType, 10245 NullType, 10246 NullType, 10247 NullType, 10248 NullType, 10249 NullType, 10250 NullType, 10251 NullType, 10252 NullType, 10253 NullType, 10254 NullType, 10255 NullType, 10256 NullType, 10257 NullType, 10258 NullType, 10259 NullType, 10260 NullType, 10261 NullType, 10262 NullType, 10263 NullType, 10264 NullType, 10265 NullType, 10266 NullType, 10267 NullType, 10268 NullType, 10269 NullType, 10270 NullType, 10271 NullType, 10272 NullType, 10273 NullType, 10274 NullType, 10275 NullType, 10276 NullType, 10277 NullType, 10278 NullType, 10279 NullType, 10280 NullType, 10281 NullType, 10282 NullType, 10283 NullType, 10284 NullType, 10285 NullType, 10286 NullType, 10287 NullType, 10288 NullType, 10289 NullType, 10290 NullType, 10291 NullType, 10292 NullType, 10293 NullType, 10294 NullType, 10295 NullType, 10296 NullType, 10297 NullType, 10298 NullType, 10299 NullType, 10300 NullType, 10301 NullType, 10302 NullType, 10303 NullType, 10304 NullType, 10305 NullType, 10306 NullType, 10307 NullType, 10308 NullType, 10309 NullType, 10310 NullType, 10311 NullType, 10312 NullType, 10313 NullType, 10314 NullType, 10315 NullType, 10316 NullType, 10317 NullType, 10318 NullType, 10319 NullType> 10320 { 10321 typedef detail::KernelFunctorGlobal< 10322 T0, 10323 T1, 10324 T2, 10325 T3, 10326 T4, 10327 T5, 10328 T6, 10329 T7, 10330 T8, 10331 T9, 10332 T10, 10333 T11, 10334 T12, 10335 T13, 10336 NullType, 10337 NullType, 10338 NullType, 10339 NullType, 10340 NullType, 10341 NullType, 10342 NullType, 10343 NullType, 10344 NullType, 10345 NullType, 10346 NullType, 10347 NullType, 10348 NullType, 10349 NullType, 10350 NullType, 10351 NullType, 10352 NullType, 10353 NullType, 10354 NullType, 10355 NullType, 10356 NullType, 10357 NullType, 10358 NullType, 10359 NullType, 10360 NullType, 10361 NullType, 10362 NullType, 10363 NullType, 10364 NullType, 10365 NullType, 10366 NullType, 10367 NullType, 10368 NullType, 10369 NullType, 10370 NullType, 10371 NullType, 10372 NullType, 10373 NullType, 10374 NullType, 10375 NullType, 10376 NullType, 10377 NullType, 10378 NullType, 10379 NullType, 10380 NullType, 10381 NullType, 10382 NullType, 10383 NullType, 10384 NullType, 10385 NullType, 10386 NullType, 10387 NullType, 10388 NullType, 10389 NullType, 10390 NullType, 10391 NullType, 10392 NullType, 10393 NullType, 10394 NullType, 10395 NullType, 10396 NullType, 10397 NullType, 10398 NullType, 10399 NullType, 10400 NullType, 10401 NullType, 10402 NullType, 10403 NullType, 10404 NullType, 10405 NullType, 10406 NullType, 10407 NullType, 10408 NullType, 10409 NullType, 10410 NullType, 10411 NullType, 10412 NullType, 10413 NullType, 10414 NullType, 10415 NullType, 10416 NullType, 10417 NullType, 10418 NullType, 10419 NullType, 10420 NullType, 10421 NullType, 10422 NullType, 10423 NullType, 10424 NullType, 10425 NullType, 10426 NullType, 10427 NullType, 10428 NullType, 10429 NullType, 10430 NullType, 10431 NullType, 10432 NullType, 10433 NullType, 10434 NullType, 10435 NullType, 10436 NullType, 10437 NullType, 10438 NullType, 10439 NullType, 10440 NullType, 10441 NullType, 10442 NullType, 10443 NullType, 10444 NullType, 10445 NullType, 10446 NullType, 10447 NullType, 10448 NullType, 10449 NullType> FunctorType; 10450 10451 FunctorType functor_; 10452 10453 functionImplementation_(const FunctorType &functor) : 10454 functor_(functor) 10455 { 10456 } 10457 10458 typedef std::tr1::function<Event ( 10459 const EnqueueArgs&, 10460 T0, 10461 T1, 10462 T2, 10463 T3, 10464 T4, 10465 T5, 10466 T6, 10467 T7, 10468 T8, 10469 T9, 10470 T10, 10471 T11, 10472 T12, 10473 T13)> type_; 10474 10475 Event operator()(const EnqueueArgs& enqueueArgs, 10476 T0 arg0, 10477 T1 arg1, 10478 T2 arg2, 10479 T3 arg3, 10480 T4 arg4, 10481 T5 arg5, 10482 T6 arg6, 10483 T7 arg7, 10484 T8 arg8, 10485 T9 arg9, 10486 T10 arg10, 10487 T11 arg11, 10488 T12 arg12, 10489 T13 arg13) 10490 { 10491 return functor_( 10492 enqueueArgs, 10493 arg0, 10494 arg1, 10495 arg2, 10496 arg3, 10497 arg4, 10498 arg5, 10499 arg6, 10500 arg7, 10501 arg8, 10502 arg9, 10503 arg10, 10504 arg11, 10505 arg12, 10506 arg13); 10507 } 10508 10509 operator type_ () 10510 { 10511 return type_(*this); 10512 } 10513 10514 }; 10515 10516 template< 10517 typename T0, 10518 typename T1, 10519 typename T2, 10520 typename T3, 10521 typename T4, 10522 typename T5, 10523 typename T6, 10524 typename T7, 10525 typename T8, 10526 typename T9, 10527 typename T10, 10528 typename T11, 10529 typename T12, 10530 typename T13, 10531 typename T14> 10532 struct functionImplementation_< 10533 T0, 10534 T1, 10535 T2, 10536 T3, 10537 T4, 10538 T5, 10539 T6, 10540 T7, 10541 T8, 10542 T9, 10543 T10, 10544 T11, 10545 T12, 10546 T13, 10547 T14, 10548 NullType, 10549 NullType, 10550 NullType, 10551 NullType, 10552 NullType, 10553 NullType, 10554 NullType, 10555 NullType, 10556 NullType, 10557 NullType, 10558 NullType, 10559 NullType, 10560 NullType, 10561 NullType, 10562 NullType, 10563 NullType, 10564 NullType, 10565 NullType, 10566 NullType, 10567 NullType, 10568 NullType, 10569 NullType, 10570 NullType, 10571 NullType, 10572 NullType, 10573 NullType, 10574 NullType, 10575 NullType, 10576 NullType, 10577 NullType, 10578 NullType, 10579 NullType, 10580 NullType, 10581 NullType, 10582 NullType, 10583 NullType, 10584 NullType, 10585 NullType, 10586 NullType, 10587 NullType, 10588 NullType, 10589 NullType, 10590 NullType, 10591 NullType, 10592 NullType, 10593 NullType, 10594 NullType, 10595 NullType, 10596 NullType, 10597 NullType, 10598 NullType, 10599 NullType, 10600 NullType, 10601 NullType, 10602 NullType, 10603 NullType, 10604 NullType, 10605 NullType, 10606 NullType, 10607 NullType, 10608 NullType, 10609 NullType, 10610 NullType, 10611 NullType, 10612 NullType, 10613 NullType, 10614 NullType, 10615 NullType, 10616 NullType, 10617 NullType, 10618 NullType, 10619 NullType, 10620 NullType, 10621 NullType, 10622 NullType, 10623 NullType, 10624 NullType, 10625 NullType, 10626 NullType, 10627 NullType, 10628 NullType, 10629 NullType, 10630 NullType, 10631 NullType, 10632 NullType, 10633 NullType, 10634 NullType, 10635 NullType, 10636 NullType, 10637 NullType, 10638 NullType, 10639 NullType, 10640 NullType, 10641 NullType, 10642 NullType, 10643 NullType, 10644 NullType, 10645 NullType, 10646 NullType, 10647 NullType, 10648 NullType, 10649 NullType, 10650 NullType, 10651 NullType, 10652 NullType, 10653 NullType, 10654 NullType, 10655 NullType, 10656 NullType, 10657 NullType, 10658 NullType, 10659 NullType, 10660 NullType> 10661 { 10662 typedef detail::KernelFunctorGlobal< 10663 T0, 10664 T1, 10665 T2, 10666 T3, 10667 T4, 10668 T5, 10669 T6, 10670 T7, 10671 T8, 10672 T9, 10673 T10, 10674 T11, 10675 T12, 10676 T13, 10677 T14, 10678 NullType, 10679 NullType, 10680 NullType, 10681 NullType, 10682 NullType, 10683 NullType, 10684 NullType, 10685 NullType, 10686 NullType, 10687 NullType, 10688 NullType, 10689 NullType, 10690 NullType, 10691 NullType, 10692 NullType, 10693 NullType, 10694 NullType, 10695 NullType, 10696 NullType, 10697 NullType, 10698 NullType, 10699 NullType, 10700 NullType, 10701 NullType, 10702 NullType, 10703 NullType, 10704 NullType, 10705 NullType, 10706 NullType, 10707 NullType, 10708 NullType, 10709 NullType, 10710 NullType, 10711 NullType, 10712 NullType, 10713 NullType, 10714 NullType, 10715 NullType, 10716 NullType, 10717 NullType, 10718 NullType, 10719 NullType, 10720 NullType, 10721 NullType, 10722 NullType, 10723 NullType, 10724 NullType, 10725 NullType, 10726 NullType, 10727 NullType, 10728 NullType, 10729 NullType, 10730 NullType, 10731 NullType, 10732 NullType, 10733 NullType, 10734 NullType, 10735 NullType, 10736 NullType, 10737 NullType, 10738 NullType, 10739 NullType, 10740 NullType, 10741 NullType, 10742 NullType, 10743 NullType, 10744 NullType, 10745 NullType, 10746 NullType, 10747 NullType, 10748 NullType, 10749 NullType, 10750 NullType, 10751 NullType, 10752 NullType, 10753 NullType, 10754 NullType, 10755 NullType, 10756 NullType, 10757 NullType, 10758 NullType, 10759 NullType, 10760 NullType, 10761 NullType, 10762 NullType, 10763 NullType, 10764 NullType, 10765 NullType, 10766 NullType, 10767 NullType, 10768 NullType, 10769 NullType, 10770 NullType, 10771 NullType, 10772 NullType, 10773 NullType, 10774 NullType, 10775 NullType, 10776 NullType, 10777 NullType, 10778 NullType, 10779 NullType, 10780 NullType, 10781 NullType, 10782 NullType, 10783 NullType, 10784 NullType, 10785 NullType, 10786 NullType, 10787 NullType, 10788 NullType, 10789 NullType, 10790 NullType> FunctorType; 10791 10792 FunctorType functor_; 10793 10794 functionImplementation_(const FunctorType &functor) : 10795 functor_(functor) 10796 { 10797 } 10798 10799 typedef std::tr1::function<Event ( 10800 const EnqueueArgs&, 10801 T0, 10802 T1, 10803 T2, 10804 T3, 10805 T4, 10806 T5, 10807 T6, 10808 T7, 10809 T8, 10810 T9, 10811 T10, 10812 T11, 10813 T12, 10814 T13, 10815 T14)> type_; 10816 10817 Event operator()(const EnqueueArgs& enqueueArgs, 10818 T0 arg0, 10819 T1 arg1, 10820 T2 arg2, 10821 T3 arg3, 10822 T4 arg4, 10823 T5 arg5, 10824 T6 arg6, 10825 T7 arg7, 10826 T8 arg8, 10827 T9 arg9, 10828 T10 arg10, 10829 T11 arg11, 10830 T12 arg12, 10831 T13 arg13, 10832 T14 arg14) 10833 { 10834 return functor_( 10835 enqueueArgs, 10836 arg0, 10837 arg1, 10838 arg2, 10839 arg3, 10840 arg4, 10841 arg5, 10842 arg6, 10843 arg7, 10844 arg8, 10845 arg9, 10846 arg10, 10847 arg11, 10848 arg12, 10849 arg13, 10850 arg14); 10851 } 10852 10853 operator type_ () 10854 { 10855 return type_(*this); 10856 } 10857 10858 }; 10859 10860 template< 10861 typename T0, 10862 typename T1, 10863 typename T2, 10864 typename T3, 10865 typename T4, 10866 typename T5, 10867 typename T6, 10868 typename T7, 10869 typename T8, 10870 typename T9, 10871 typename T10, 10872 typename T11, 10873 typename T12, 10874 typename T13, 10875 typename T14, 10876 typename T15> 10877 struct functionImplementation_< 10878 T0, 10879 T1, 10880 T2, 10881 T3, 10882 T4, 10883 T5, 10884 T6, 10885 T7, 10886 T8, 10887 T9, 10888 T10, 10889 T11, 10890 T12, 10891 T13, 10892 T14, 10893 T15, 10894 NullType, 10895 NullType, 10896 NullType, 10897 NullType, 10898 NullType, 10899 NullType, 10900 NullType, 10901 NullType, 10902 NullType, 10903 NullType, 10904 NullType, 10905 NullType, 10906 NullType, 10907 NullType, 10908 NullType, 10909 NullType, 10910 NullType, 10911 NullType, 10912 NullType, 10913 NullType, 10914 NullType, 10915 NullType, 10916 NullType, 10917 NullType, 10918 NullType, 10919 NullType, 10920 NullType, 10921 NullType, 10922 NullType, 10923 NullType, 10924 NullType, 10925 NullType, 10926 NullType, 10927 NullType, 10928 NullType, 10929 NullType, 10930 NullType, 10931 NullType, 10932 NullType, 10933 NullType, 10934 NullType, 10935 NullType, 10936 NullType, 10937 NullType, 10938 NullType, 10939 NullType, 10940 NullType, 10941 NullType, 10942 NullType, 10943 NullType, 10944 NullType, 10945 NullType, 10946 NullType, 10947 NullType, 10948 NullType, 10949 NullType, 10950 NullType, 10951 NullType, 10952 NullType, 10953 NullType, 10954 NullType, 10955 NullType, 10956 NullType, 10957 NullType, 10958 NullType, 10959 NullType, 10960 NullType, 10961 NullType, 10962 NullType, 10963 NullType, 10964 NullType, 10965 NullType, 10966 NullType, 10967 NullType, 10968 NullType, 10969 NullType, 10970 NullType, 10971 NullType, 10972 NullType, 10973 NullType, 10974 NullType, 10975 NullType, 10976 NullType, 10977 NullType, 10978 NullType, 10979 NullType, 10980 NullType, 10981 NullType, 10982 NullType, 10983 NullType, 10984 NullType, 10985 NullType, 10986 NullType, 10987 NullType, 10988 NullType, 10989 NullType, 10990 NullType, 10991 NullType, 10992 NullType, 10993 NullType, 10994 NullType, 10995 NullType, 10996 NullType, 10997 NullType, 10998 NullType, 10999 NullType, 11000 NullType, 11001 NullType, 11002 NullType, 11003 NullType, 11004 NullType, 11005 NullType> 11006 { 11007 typedef detail::KernelFunctorGlobal< 11008 T0, 11009 T1, 11010 T2, 11011 T3, 11012 T4, 11013 T5, 11014 T6, 11015 T7, 11016 T8, 11017 T9, 11018 T10, 11019 T11, 11020 T12, 11021 T13, 11022 T14, 11023 T15, 11024 NullType, 11025 NullType, 11026 NullType, 11027 NullType, 11028 NullType, 11029 NullType, 11030 NullType, 11031 NullType, 11032 NullType, 11033 NullType, 11034 NullType, 11035 NullType, 11036 NullType, 11037 NullType, 11038 NullType, 11039 NullType, 11040 NullType, 11041 NullType, 11042 NullType, 11043 NullType, 11044 NullType, 11045 NullType, 11046 NullType, 11047 NullType, 11048 NullType, 11049 NullType, 11050 NullType, 11051 NullType, 11052 NullType, 11053 NullType, 11054 NullType, 11055 NullType, 11056 NullType, 11057 NullType, 11058 NullType, 11059 NullType, 11060 NullType, 11061 NullType, 11062 NullType, 11063 NullType, 11064 NullType, 11065 NullType, 11066 NullType, 11067 NullType, 11068 NullType, 11069 NullType, 11070 NullType, 11071 NullType, 11072 NullType, 11073 NullType, 11074 NullType, 11075 NullType, 11076 NullType, 11077 NullType, 11078 NullType, 11079 NullType, 11080 NullType, 11081 NullType, 11082 NullType, 11083 NullType, 11084 NullType, 11085 NullType, 11086 NullType, 11087 NullType, 11088 NullType, 11089 NullType, 11090 NullType, 11091 NullType, 11092 NullType, 11093 NullType, 11094 NullType, 11095 NullType, 11096 NullType, 11097 NullType, 11098 NullType, 11099 NullType, 11100 NullType, 11101 NullType, 11102 NullType, 11103 NullType, 11104 NullType, 11105 NullType, 11106 NullType, 11107 NullType, 11108 NullType, 11109 NullType, 11110 NullType, 11111 NullType, 11112 NullType, 11113 NullType, 11114 NullType, 11115 NullType, 11116 NullType, 11117 NullType, 11118 NullType, 11119 NullType, 11120 NullType, 11121 NullType, 11122 NullType, 11123 NullType, 11124 NullType, 11125 NullType, 11126 NullType, 11127 NullType, 11128 NullType, 11129 NullType, 11130 NullType, 11131 NullType, 11132 NullType, 11133 NullType, 11134 NullType, 11135 NullType> FunctorType; 11136 11137 FunctorType functor_; 11138 11139 functionImplementation_(const FunctorType &functor) : 11140 functor_(functor) 11141 { 11142 } 11143 11144 typedef std::tr1::function<Event ( 11145 const EnqueueArgs&, 11146 T0, 11147 T1, 11148 T2, 11149 T3, 11150 T4, 11151 T5, 11152 T6, 11153 T7, 11154 T8, 11155 T9, 11156 T10, 11157 T11, 11158 T12, 11159 T13, 11160 T14, 11161 T15)> type_; 11162 11163 Event operator()(const EnqueueArgs& enqueueArgs, 11164 T0 arg0, 11165 T1 arg1, 11166 T2 arg2, 11167 T3 arg3, 11168 T4 arg4, 11169 T5 arg5, 11170 T6 arg6, 11171 T7 arg7, 11172 T8 arg8, 11173 T9 arg9, 11174 T10 arg10, 11175 T11 arg11, 11176 T12 arg12, 11177 T13 arg13, 11178 T14 arg14, 11179 T15 arg15) 11180 { 11181 return functor_( 11182 enqueueArgs, 11183 arg0, 11184 arg1, 11185 arg2, 11186 arg3, 11187 arg4, 11188 arg5, 11189 arg6, 11190 arg7, 11191 arg8, 11192 arg9, 11193 arg10, 11194 arg11, 11195 arg12, 11196 arg13, 11197 arg14, 11198 arg15); 11199 } 11200 11201 operator type_ () 11202 { 11203 return type_(*this); 11204 } 11205 11206 }; 11207 11208 template< 11209 typename T0, 11210 typename T1, 11211 typename T2, 11212 typename T3, 11213 typename T4, 11214 typename T5, 11215 typename T6, 11216 typename T7, 11217 typename T8, 11218 typename T9, 11219 typename T10, 11220 typename T11, 11221 typename T12, 11222 typename T13, 11223 typename T14, 11224 typename T15, 11225 typename T16> 11226 struct functionImplementation_< 11227 T0, 11228 T1, 11229 T2, 11230 T3, 11231 T4, 11232 T5, 11233 T6, 11234 T7, 11235 T8, 11236 T9, 11237 T10, 11238 T11, 11239 T12, 11240 T13, 11241 T14, 11242 T15, 11243 T16, 11244 NullType, 11245 NullType, 11246 NullType, 11247 NullType, 11248 NullType, 11249 NullType, 11250 NullType, 11251 NullType, 11252 NullType, 11253 NullType, 11254 NullType, 11255 NullType, 11256 NullType, 11257 NullType, 11258 NullType, 11259 NullType, 11260 NullType, 11261 NullType, 11262 NullType, 11263 NullType, 11264 NullType, 11265 NullType, 11266 NullType, 11267 NullType, 11268 NullType, 11269 NullType, 11270 NullType, 11271 NullType, 11272 NullType, 11273 NullType, 11274 NullType, 11275 NullType, 11276 NullType, 11277 NullType, 11278 NullType, 11279 NullType, 11280 NullType, 11281 NullType, 11282 NullType, 11283 NullType, 11284 NullType, 11285 NullType, 11286 NullType, 11287 NullType, 11288 NullType, 11289 NullType, 11290 NullType, 11291 NullType, 11292 NullType, 11293 NullType, 11294 NullType, 11295 NullType, 11296 NullType, 11297 NullType, 11298 NullType, 11299 NullType, 11300 NullType, 11301 NullType, 11302 NullType, 11303 NullType, 11304 NullType, 11305 NullType, 11306 NullType, 11307 NullType, 11308 NullType, 11309 NullType, 11310 NullType, 11311 NullType, 11312 NullType, 11313 NullType, 11314 NullType, 11315 NullType, 11316 NullType, 11317 NullType, 11318 NullType, 11319 NullType, 11320 NullType, 11321 NullType, 11322 NullType, 11323 NullType, 11324 NullType, 11325 NullType, 11326 NullType, 11327 NullType, 11328 NullType, 11329 NullType, 11330 NullType, 11331 NullType, 11332 NullType, 11333 NullType, 11334 NullType, 11335 NullType, 11336 NullType, 11337 NullType, 11338 NullType, 11339 NullType, 11340 NullType, 11341 NullType, 11342 NullType, 11343 NullType, 11344 NullType, 11345 NullType, 11346 NullType, 11347 NullType, 11348 NullType, 11349 NullType, 11350 NullType, 11351 NullType, 11352 NullType, 11353 NullType, 11354 NullType> 11355 { 11356 typedef detail::KernelFunctorGlobal< 11357 T0, 11358 T1, 11359 T2, 11360 T3, 11361 T4, 11362 T5, 11363 T6, 11364 T7, 11365 T8, 11366 T9, 11367 T10, 11368 T11, 11369 T12, 11370 T13, 11371 T14, 11372 T15, 11373 T16, 11374 NullType, 11375 NullType, 11376 NullType, 11377 NullType, 11378 NullType, 11379 NullType, 11380 NullType, 11381 NullType, 11382 NullType, 11383 NullType, 11384 NullType, 11385 NullType, 11386 NullType, 11387 NullType, 11388 NullType, 11389 NullType, 11390 NullType, 11391 NullType, 11392 NullType, 11393 NullType, 11394 NullType, 11395 NullType, 11396 NullType, 11397 NullType, 11398 NullType, 11399 NullType, 11400 NullType, 11401 NullType, 11402 NullType, 11403 NullType, 11404 NullType, 11405 NullType, 11406 NullType, 11407 NullType, 11408 NullType, 11409 NullType, 11410 NullType, 11411 NullType, 11412 NullType, 11413 NullType, 11414 NullType, 11415 NullType, 11416 NullType, 11417 NullType, 11418 NullType, 11419 NullType, 11420 NullType, 11421 NullType, 11422 NullType, 11423 NullType, 11424 NullType, 11425 NullType, 11426 NullType, 11427 NullType, 11428 NullType, 11429 NullType, 11430 NullType, 11431 NullType, 11432 NullType, 11433 NullType, 11434 NullType, 11435 NullType, 11436 NullType, 11437 NullType, 11438 NullType, 11439 NullType, 11440 NullType, 11441 NullType, 11442 NullType, 11443 NullType, 11444 NullType, 11445 NullType, 11446 NullType, 11447 NullType, 11448 NullType, 11449 NullType, 11450 NullType, 11451 NullType, 11452 NullType, 11453 NullType, 11454 NullType, 11455 NullType, 11456 NullType, 11457 NullType, 11458 NullType, 11459 NullType, 11460 NullType, 11461 NullType, 11462 NullType, 11463 NullType, 11464 NullType, 11465 NullType, 11466 NullType, 11467 NullType, 11468 NullType, 11469 NullType, 11470 NullType, 11471 NullType, 11472 NullType, 11473 NullType, 11474 NullType, 11475 NullType, 11476 NullType, 11477 NullType, 11478 NullType, 11479 NullType, 11480 NullType, 11481 NullType, 11482 NullType, 11483 NullType, 11484 NullType> FunctorType; 11485 11486 FunctorType functor_; 11487 11488 functionImplementation_(const FunctorType &functor) : 11489 functor_(functor) 11490 { 11491 } 11492 11493 typedef std::tr1::function<Event ( 11494 const EnqueueArgs&, 11495 T0, 11496 T1, 11497 T2, 11498 T3, 11499 T4, 11500 T5, 11501 T6, 11502 T7, 11503 T8, 11504 T9, 11505 T10, 11506 T11, 11507 T12, 11508 T13, 11509 T14, 11510 T15, 11511 T16)> type_; 11512 11513 Event operator()(const EnqueueArgs& enqueueArgs, 11514 T0 arg0, 11515 T1 arg1, 11516 T2 arg2, 11517 T3 arg3, 11518 T4 arg4, 11519 T5 arg5, 11520 T6 arg6, 11521 T7 arg7, 11522 T8 arg8, 11523 T9 arg9, 11524 T10 arg10, 11525 T11 arg11, 11526 T12 arg12, 11527 T13 arg13, 11528 T14 arg14, 11529 T15 arg15, 11530 T16 arg16) 11531 { 11532 return functor_( 11533 enqueueArgs, 11534 arg0, 11535 arg1, 11536 arg2, 11537 arg3, 11538 arg4, 11539 arg5, 11540 arg6, 11541 arg7, 11542 arg8, 11543 arg9, 11544 arg10, 11545 arg11, 11546 arg12, 11547 arg13, 11548 arg14, 11549 arg15, 11550 arg16); 11551 } 11552 11553 operator type_ () 11554 { 11555 return type_(*this); 11556 } 11557 11558 }; 11559 11560 template< 11561 typename T0, 11562 typename T1, 11563 typename T2, 11564 typename T3, 11565 typename T4, 11566 typename T5, 11567 typename T6, 11568 typename T7, 11569 typename T8, 11570 typename T9, 11571 typename T10, 11572 typename T11, 11573 typename T12, 11574 typename T13, 11575 typename T14, 11576 typename T15, 11577 typename T16, 11578 typename T17> 11579 struct functionImplementation_< 11580 T0, 11581 T1, 11582 T2, 11583 T3, 11584 T4, 11585 T5, 11586 T6, 11587 T7, 11588 T8, 11589 T9, 11590 T10, 11591 T11, 11592 T12, 11593 T13, 11594 T14, 11595 T15, 11596 T16, 11597 T17, 11598 NullType, 11599 NullType, 11600 NullType, 11601 NullType, 11602 NullType, 11603 NullType, 11604 NullType, 11605 NullType, 11606 NullType, 11607 NullType, 11608 NullType, 11609 NullType, 11610 NullType, 11611 NullType, 11612 NullType, 11613 NullType, 11614 NullType, 11615 NullType, 11616 NullType, 11617 NullType, 11618 NullType, 11619 NullType, 11620 NullType, 11621 NullType, 11622 NullType, 11623 NullType, 11624 NullType, 11625 NullType, 11626 NullType, 11627 NullType, 11628 NullType, 11629 NullType, 11630 NullType, 11631 NullType, 11632 NullType, 11633 NullType, 11634 NullType, 11635 NullType, 11636 NullType, 11637 NullType, 11638 NullType, 11639 NullType, 11640 NullType, 11641 NullType, 11642 NullType, 11643 NullType, 11644 NullType, 11645 NullType, 11646 NullType, 11647 NullType, 11648 NullType, 11649 NullType, 11650 NullType, 11651 NullType, 11652 NullType, 11653 NullType, 11654 NullType, 11655 NullType, 11656 NullType, 11657 NullType, 11658 NullType, 11659 NullType, 11660 NullType, 11661 NullType, 11662 NullType, 11663 NullType, 11664 NullType, 11665 NullType, 11666 NullType, 11667 NullType, 11668 NullType, 11669 NullType, 11670 NullType, 11671 NullType, 11672 NullType, 11673 NullType, 11674 NullType, 11675 NullType, 11676 NullType, 11677 NullType, 11678 NullType, 11679 NullType, 11680 NullType, 11681 NullType, 11682 NullType, 11683 NullType, 11684 NullType, 11685 NullType, 11686 NullType, 11687 NullType, 11688 NullType, 11689 NullType, 11690 NullType, 11691 NullType, 11692 NullType, 11693 NullType, 11694 NullType, 11695 NullType, 11696 NullType, 11697 NullType, 11698 NullType, 11699 NullType, 11700 NullType, 11701 NullType, 11702 NullType, 11703 NullType, 11704 NullType, 11705 NullType, 11706 NullType, 11707 NullType> 11708 { 11709 typedef detail::KernelFunctorGlobal< 11710 T0, 11711 T1, 11712 T2, 11713 T3, 11714 T4, 11715 T5, 11716 T6, 11717 T7, 11718 T8, 11719 T9, 11720 T10, 11721 T11, 11722 T12, 11723 T13, 11724 T14, 11725 T15, 11726 T16, 11727 T17, 11728 NullType, 11729 NullType, 11730 NullType, 11731 NullType, 11732 NullType, 11733 NullType, 11734 NullType, 11735 NullType, 11736 NullType, 11737 NullType, 11738 NullType, 11739 NullType, 11740 NullType, 11741 NullType, 11742 NullType, 11743 NullType, 11744 NullType, 11745 NullType, 11746 NullType, 11747 NullType, 11748 NullType, 11749 NullType, 11750 NullType, 11751 NullType, 11752 NullType, 11753 NullType, 11754 NullType, 11755 NullType, 11756 NullType, 11757 NullType, 11758 NullType, 11759 NullType, 11760 NullType, 11761 NullType, 11762 NullType, 11763 NullType, 11764 NullType, 11765 NullType, 11766 NullType, 11767 NullType, 11768 NullType, 11769 NullType, 11770 NullType, 11771 NullType, 11772 NullType, 11773 NullType, 11774 NullType, 11775 NullType, 11776 NullType, 11777 NullType, 11778 NullType, 11779 NullType, 11780 NullType, 11781 NullType, 11782 NullType, 11783 NullType, 11784 NullType, 11785 NullType, 11786 NullType, 11787 NullType, 11788 NullType, 11789 NullType, 11790 NullType, 11791 NullType, 11792 NullType, 11793 NullType, 11794 NullType, 11795 NullType, 11796 NullType, 11797 NullType, 11798 NullType, 11799 NullType, 11800 NullType, 11801 NullType, 11802 NullType, 11803 NullType, 11804 NullType, 11805 NullType, 11806 NullType, 11807 NullType, 11808 NullType, 11809 NullType, 11810 NullType, 11811 NullType, 11812 NullType, 11813 NullType, 11814 NullType, 11815 NullType, 11816 NullType, 11817 NullType, 11818 NullType, 11819 NullType, 11820 NullType, 11821 NullType, 11822 NullType, 11823 NullType, 11824 NullType, 11825 NullType, 11826 NullType, 11827 NullType, 11828 NullType, 11829 NullType, 11830 NullType, 11831 NullType, 11832 NullType, 11833 NullType, 11834 NullType, 11835 NullType, 11836 NullType, 11837 NullType> FunctorType; 11838 11839 FunctorType functor_; 11840 11841 functionImplementation_(const FunctorType &functor) : 11842 functor_(functor) 11843 { 11844 } 11845 11846 typedef std::tr1::function<Event ( 11847 const EnqueueArgs&, 11848 T0, 11849 T1, 11850 T2, 11851 T3, 11852 T4, 11853 T5, 11854 T6, 11855 T7, 11856 T8, 11857 T9, 11858 T10, 11859 T11, 11860 T12, 11861 T13, 11862 T14, 11863 T15, 11864 T16, 11865 T17)> type_; 11866 11867 Event operator()(const EnqueueArgs& enqueueArgs, 11868 T0 arg0, 11869 T1 arg1, 11870 T2 arg2, 11871 T3 arg3, 11872 T4 arg4, 11873 T5 arg5, 11874 T6 arg6, 11875 T7 arg7, 11876 T8 arg8, 11877 T9 arg9, 11878 T10 arg10, 11879 T11 arg11, 11880 T12 arg12, 11881 T13 arg13, 11882 T14 arg14, 11883 T15 arg15, 11884 T16 arg16, 11885 T17 arg17) 11886 { 11887 return functor_( 11888 enqueueArgs, 11889 arg0, 11890 arg1, 11891 arg2, 11892 arg3, 11893 arg4, 11894 arg5, 11895 arg6, 11896 arg7, 11897 arg8, 11898 arg9, 11899 arg10, 11900 arg11, 11901 arg12, 11902 arg13, 11903 arg14, 11904 arg15, 11905 arg16, 11906 arg17); 11907 } 11908 11909 operator type_ () 11910 { 11911 return type_(*this); 11912 } 11913 11914 }; 11915 11916 template< 11917 typename T0, 11918 typename T1, 11919 typename T2, 11920 typename T3, 11921 typename T4, 11922 typename T5, 11923 typename T6, 11924 typename T7, 11925 typename T8, 11926 typename T9, 11927 typename T10, 11928 typename T11, 11929 typename T12, 11930 typename T13, 11931 typename T14, 11932 typename T15, 11933 typename T16, 11934 typename T17, 11935 typename T18> 11936 struct functionImplementation_< 11937 T0, 11938 T1, 11939 T2, 11940 T3, 11941 T4, 11942 T5, 11943 T6, 11944 T7, 11945 T8, 11946 T9, 11947 T10, 11948 T11, 11949 T12, 11950 T13, 11951 T14, 11952 T15, 11953 T16, 11954 T17, 11955 T18, 11956 NullType, 11957 NullType, 11958 NullType, 11959 NullType, 11960 NullType, 11961 NullType, 11962 NullType, 11963 NullType, 11964 NullType, 11965 NullType, 11966 NullType, 11967 NullType, 11968 NullType, 11969 NullType, 11970 NullType, 11971 NullType, 11972 NullType, 11973 NullType, 11974 NullType, 11975 NullType, 11976 NullType, 11977 NullType, 11978 NullType, 11979 NullType, 11980 NullType, 11981 NullType, 11982 NullType, 11983 NullType, 11984 NullType, 11985 NullType, 11986 NullType, 11987 NullType, 11988 NullType, 11989 NullType, 11990 NullType, 11991 NullType, 11992 NullType, 11993 NullType, 11994 NullType, 11995 NullType, 11996 NullType, 11997 NullType, 11998 NullType, 11999 NullType, 12000 NullType, 12001 NullType, 12002 NullType, 12003 NullType, 12004 NullType, 12005 NullType, 12006 NullType, 12007 NullType, 12008 NullType, 12009 NullType, 12010 NullType, 12011 NullType, 12012 NullType, 12013 NullType, 12014 NullType, 12015 NullType, 12016 NullType, 12017 NullType, 12018 NullType, 12019 NullType, 12020 NullType, 12021 NullType, 12022 NullType, 12023 NullType, 12024 NullType, 12025 NullType, 12026 NullType, 12027 NullType, 12028 NullType, 12029 NullType, 12030 NullType, 12031 NullType, 12032 NullType, 12033 NullType, 12034 NullType, 12035 NullType, 12036 NullType, 12037 NullType, 12038 NullType, 12039 NullType, 12040 NullType, 12041 NullType, 12042 NullType, 12043 NullType, 12044 NullType, 12045 NullType, 12046 NullType, 12047 NullType, 12048 NullType, 12049 NullType, 12050 NullType, 12051 NullType, 12052 NullType, 12053 NullType, 12054 NullType, 12055 NullType, 12056 NullType, 12057 NullType, 12058 NullType, 12059 NullType, 12060 NullType, 12061 NullType, 12062 NullType, 12063 NullType, 12064 NullType> 12065 { 12066 typedef detail::KernelFunctorGlobal< 12067 T0, 12068 T1, 12069 T2, 12070 T3, 12071 T4, 12072 T5, 12073 T6, 12074 T7, 12075 T8, 12076 T9, 12077 T10, 12078 T11, 12079 T12, 12080 T13, 12081 T14, 12082 T15, 12083 T16, 12084 T17, 12085 T18, 12086 NullType, 12087 NullType, 12088 NullType, 12089 NullType, 12090 NullType, 12091 NullType, 12092 NullType, 12093 NullType, 12094 NullType, 12095 NullType, 12096 NullType, 12097 NullType, 12098 NullType, 12099 NullType, 12100 NullType, 12101 NullType, 12102 NullType, 12103 NullType, 12104 NullType, 12105 NullType, 12106 NullType, 12107 NullType, 12108 NullType, 12109 NullType, 12110 NullType, 12111 NullType, 12112 NullType, 12113 NullType, 12114 NullType, 12115 NullType, 12116 NullType, 12117 NullType, 12118 NullType, 12119 NullType, 12120 NullType, 12121 NullType, 12122 NullType, 12123 NullType, 12124 NullType, 12125 NullType, 12126 NullType, 12127 NullType, 12128 NullType, 12129 NullType, 12130 NullType, 12131 NullType, 12132 NullType, 12133 NullType, 12134 NullType, 12135 NullType, 12136 NullType, 12137 NullType, 12138 NullType, 12139 NullType, 12140 NullType, 12141 NullType, 12142 NullType, 12143 NullType, 12144 NullType, 12145 NullType, 12146 NullType, 12147 NullType, 12148 NullType, 12149 NullType, 12150 NullType, 12151 NullType, 12152 NullType, 12153 NullType, 12154 NullType, 12155 NullType, 12156 NullType, 12157 NullType, 12158 NullType, 12159 NullType, 12160 NullType, 12161 NullType, 12162 NullType, 12163 NullType, 12164 NullType, 12165 NullType, 12166 NullType, 12167 NullType, 12168 NullType, 12169 NullType, 12170 NullType, 12171 NullType, 12172 NullType, 12173 NullType, 12174 NullType, 12175 NullType, 12176 NullType, 12177 NullType, 12178 NullType, 12179 NullType, 12180 NullType, 12181 NullType, 12182 NullType, 12183 NullType, 12184 NullType, 12185 NullType, 12186 NullType, 12187 NullType, 12188 NullType, 12189 NullType, 12190 NullType, 12191 NullType, 12192 NullType, 12193 NullType, 12194 NullType> FunctorType; 12195 12196 FunctorType functor_; 12197 12198 functionImplementation_(const FunctorType &functor) : 12199 functor_(functor) 12200 { 12201 } 12202 12203 typedef std::tr1::function<Event ( 12204 const EnqueueArgs&, 12205 T0, 12206 T1, 12207 T2, 12208 T3, 12209 T4, 12210 T5, 12211 T6, 12212 T7, 12213 T8, 12214 T9, 12215 T10, 12216 T11, 12217 T12, 12218 T13, 12219 T14, 12220 T15, 12221 T16, 12222 T17, 12223 T18)> type_; 12224 12225 Event operator()(const EnqueueArgs& enqueueArgs, 12226 T0 arg0, 12227 T1 arg1, 12228 T2 arg2, 12229 T3 arg3, 12230 T4 arg4, 12231 T5 arg5, 12232 T6 arg6, 12233 T7 arg7, 12234 T8 arg8, 12235 T9 arg9, 12236 T10 arg10, 12237 T11 arg11, 12238 T12 arg12, 12239 T13 arg13, 12240 T14 arg14, 12241 T15 arg15, 12242 T16 arg16, 12243 T17 arg17, 12244 T18 arg18) 12245 { 12246 return functor_( 12247 enqueueArgs, 12248 arg0, 12249 arg1, 12250 arg2, 12251 arg3, 12252 arg4, 12253 arg5, 12254 arg6, 12255 arg7, 12256 arg8, 12257 arg9, 12258 arg10, 12259 arg11, 12260 arg12, 12261 arg13, 12262 arg14, 12263 arg15, 12264 arg16, 12265 arg17, 12266 arg18); 12267 } 12268 12269 operator type_ () 12270 { 12271 return type_(*this); 12272 } 12273 12274 }; 12275 12276 template< 12277 typename T0, 12278 typename T1, 12279 typename T2, 12280 typename T3, 12281 typename T4, 12282 typename T5, 12283 typename T6, 12284 typename T7, 12285 typename T8, 12286 typename T9, 12287 typename T10, 12288 typename T11, 12289 typename T12, 12290 typename T13, 12291 typename T14, 12292 typename T15, 12293 typename T16, 12294 typename T17, 12295 typename T18, 12296 typename T19> 12297 struct functionImplementation_< 12298 T0, 12299 T1, 12300 T2, 12301 T3, 12302 T4, 12303 T5, 12304 T6, 12305 T7, 12306 T8, 12307 T9, 12308 T10, 12309 T11, 12310 T12, 12311 T13, 12312 T14, 12313 T15, 12314 T16, 12315 T17, 12316 T18, 12317 T19, 12318 NullType, 12319 NullType, 12320 NullType, 12321 NullType, 12322 NullType, 12323 NullType, 12324 NullType, 12325 NullType, 12326 NullType, 12327 NullType, 12328 NullType, 12329 NullType, 12330 NullType, 12331 NullType, 12332 NullType, 12333 NullType, 12334 NullType, 12335 NullType, 12336 NullType, 12337 NullType, 12338 NullType, 12339 NullType, 12340 NullType, 12341 NullType, 12342 NullType, 12343 NullType, 12344 NullType, 12345 NullType, 12346 NullType, 12347 NullType, 12348 NullType, 12349 NullType, 12350 NullType, 12351 NullType, 12352 NullType, 12353 NullType, 12354 NullType, 12355 NullType, 12356 NullType, 12357 NullType, 12358 NullType, 12359 NullType, 12360 NullType, 12361 NullType, 12362 NullType, 12363 NullType, 12364 NullType, 12365 NullType, 12366 NullType, 12367 NullType, 12368 NullType, 12369 NullType, 12370 NullType, 12371 NullType, 12372 NullType, 12373 NullType, 12374 NullType, 12375 NullType, 12376 NullType, 12377 NullType, 12378 NullType, 12379 NullType, 12380 NullType, 12381 NullType, 12382 NullType, 12383 NullType, 12384 NullType, 12385 NullType, 12386 NullType, 12387 NullType, 12388 NullType, 12389 NullType, 12390 NullType, 12391 NullType, 12392 NullType, 12393 NullType, 12394 NullType, 12395 NullType, 12396 NullType, 12397 NullType, 12398 NullType, 12399 NullType, 12400 NullType, 12401 NullType, 12402 NullType, 12403 NullType, 12404 NullType, 12405 NullType, 12406 NullType, 12407 NullType, 12408 NullType, 12409 NullType, 12410 NullType, 12411 NullType, 12412 NullType, 12413 NullType, 12414 NullType, 12415 NullType, 12416 NullType, 12417 NullType, 12418 NullType, 12419 NullType, 12420 NullType, 12421 NullType, 12422 NullType, 12423 NullType, 12424 NullType, 12425 NullType> 12426 { 12427 typedef detail::KernelFunctorGlobal< 12428 T0, 12429 T1, 12430 T2, 12431 T3, 12432 T4, 12433 T5, 12434 T6, 12435 T7, 12436 T8, 12437 T9, 12438 T10, 12439 T11, 12440 T12, 12441 T13, 12442 T14, 12443 T15, 12444 T16, 12445 T17, 12446 T18, 12447 T19, 12448 NullType, 12449 NullType, 12450 NullType, 12451 NullType, 12452 NullType, 12453 NullType, 12454 NullType, 12455 NullType, 12456 NullType, 12457 NullType, 12458 NullType, 12459 NullType, 12460 NullType, 12461 NullType, 12462 NullType, 12463 NullType, 12464 NullType, 12465 NullType, 12466 NullType, 12467 NullType, 12468 NullType, 12469 NullType, 12470 NullType, 12471 NullType, 12472 NullType, 12473 NullType, 12474 NullType, 12475 NullType, 12476 NullType, 12477 NullType, 12478 NullType, 12479 NullType, 12480 NullType, 12481 NullType, 12482 NullType, 12483 NullType, 12484 NullType, 12485 NullType, 12486 NullType, 12487 NullType, 12488 NullType, 12489 NullType, 12490 NullType, 12491 NullType, 12492 NullType, 12493 NullType, 12494 NullType, 12495 NullType, 12496 NullType, 12497 NullType, 12498 NullType, 12499 NullType, 12500 NullType, 12501 NullType, 12502 NullType, 12503 NullType, 12504 NullType, 12505 NullType, 12506 NullType, 12507 NullType, 12508 NullType, 12509 NullType, 12510 NullType, 12511 NullType, 12512 NullType, 12513 NullType, 12514 NullType, 12515 NullType, 12516 NullType, 12517 NullType, 12518 NullType, 12519 NullType, 12520 NullType, 12521 NullType, 12522 NullType, 12523 NullType, 12524 NullType, 12525 NullType, 12526 NullType, 12527 NullType, 12528 NullType, 12529 NullType, 12530 NullType, 12531 NullType, 12532 NullType, 12533 NullType, 12534 NullType, 12535 NullType, 12536 NullType, 12537 NullType, 12538 NullType, 12539 NullType, 12540 NullType, 12541 NullType, 12542 NullType, 12543 NullType, 12544 NullType, 12545 NullType, 12546 NullType, 12547 NullType, 12548 NullType, 12549 NullType, 12550 NullType, 12551 NullType, 12552 NullType, 12553 NullType, 12554 NullType, 12555 NullType> FunctorType; 12556 12557 FunctorType functor_; 12558 12559 functionImplementation_(const FunctorType &functor) : 12560 functor_(functor) 12561 { 12562 } 12563 12564 typedef std::tr1::function<Event ( 12565 const EnqueueArgs&, 12566 T0, 12567 T1, 12568 T2, 12569 T3, 12570 T4, 12571 T5, 12572 T6, 12573 T7, 12574 T8, 12575 T9, 12576 T10, 12577 T11, 12578 T12, 12579 T13, 12580 T14, 12581 T15, 12582 T16, 12583 T17, 12584 T18, 12585 T19)> type_; 12586 12587 Event operator()(const EnqueueArgs& enqueueArgs, 12588 T0 arg0, 12589 T1 arg1, 12590 T2 arg2, 12591 T3 arg3, 12592 T4 arg4, 12593 T5 arg5, 12594 T6 arg6, 12595 T7 arg7, 12596 T8 arg8, 12597 T9 arg9, 12598 T10 arg10, 12599 T11 arg11, 12600 T12 arg12, 12601 T13 arg13, 12602 T14 arg14, 12603 T15 arg15, 12604 T16 arg16, 12605 T17 arg17, 12606 T18 arg18, 12607 T19 arg19) 12608 { 12609 return functor_( 12610 enqueueArgs, 12611 arg0, 12612 arg1, 12613 arg2, 12614 arg3, 12615 arg4, 12616 arg5, 12617 arg6, 12618 arg7, 12619 arg8, 12620 arg9, 12621 arg10, 12622 arg11, 12623 arg12, 12624 arg13, 12625 arg14, 12626 arg15, 12627 arg16, 12628 arg17, 12629 arg18, 12630 arg19); 12631 } 12632 12633 operator type_ () 12634 { 12635 return type_(*this); 12636 } 12637 12638 }; 12639 12640 template< 12641 typename T0, 12642 typename T1, 12643 typename T2, 12644 typename T3, 12645 typename T4, 12646 typename T5, 12647 typename T6, 12648 typename T7, 12649 typename T8, 12650 typename T9, 12651 typename T10, 12652 typename T11, 12653 typename T12, 12654 typename T13, 12655 typename T14, 12656 typename T15, 12657 typename T16, 12658 typename T17, 12659 typename T18, 12660 typename T19, 12661 typename T20> 12662 struct functionImplementation_< 12663 T0, 12664 T1, 12665 T2, 12666 T3, 12667 T4, 12668 T5, 12669 T6, 12670 T7, 12671 T8, 12672 T9, 12673 T10, 12674 T11, 12675 T12, 12676 T13, 12677 T14, 12678 T15, 12679 T16, 12680 T17, 12681 T18, 12682 T19, 12683 T20, 12684 NullType, 12685 NullType, 12686 NullType, 12687 NullType, 12688 NullType, 12689 NullType, 12690 NullType, 12691 NullType, 12692 NullType, 12693 NullType, 12694 NullType, 12695 NullType, 12696 NullType, 12697 NullType, 12698 NullType, 12699 NullType, 12700 NullType, 12701 NullType, 12702 NullType, 12703 NullType, 12704 NullType, 12705 NullType, 12706 NullType, 12707 NullType, 12708 NullType, 12709 NullType, 12710 NullType, 12711 NullType, 12712 NullType, 12713 NullType, 12714 NullType, 12715 NullType, 12716 NullType, 12717 NullType, 12718 NullType, 12719 NullType, 12720 NullType, 12721 NullType, 12722 NullType, 12723 NullType, 12724 NullType, 12725 NullType, 12726 NullType, 12727 NullType, 12728 NullType, 12729 NullType, 12730 NullType, 12731 NullType, 12732 NullType, 12733 NullType, 12734 NullType, 12735 NullType, 12736 NullType, 12737 NullType, 12738 NullType, 12739 NullType, 12740 NullType, 12741 NullType, 12742 NullType, 12743 NullType, 12744 NullType, 12745 NullType, 12746 NullType, 12747 NullType, 12748 NullType, 12749 NullType, 12750 NullType, 12751 NullType, 12752 NullType, 12753 NullType, 12754 NullType, 12755 NullType, 12756 NullType, 12757 NullType, 12758 NullType, 12759 NullType, 12760 NullType, 12761 NullType, 12762 NullType, 12763 NullType, 12764 NullType, 12765 NullType, 12766 NullType, 12767 NullType, 12768 NullType, 12769 NullType, 12770 NullType, 12771 NullType, 12772 NullType, 12773 NullType, 12774 NullType, 12775 NullType, 12776 NullType, 12777 NullType, 12778 NullType, 12779 NullType, 12780 NullType, 12781 NullType, 12782 NullType, 12783 NullType, 12784 NullType, 12785 NullType, 12786 NullType, 12787 NullType, 12788 NullType, 12789 NullType, 12790 NullType> 12791 { 12792 typedef detail::KernelFunctorGlobal< 12793 T0, 12794 T1, 12795 T2, 12796 T3, 12797 T4, 12798 T5, 12799 T6, 12800 T7, 12801 T8, 12802 T9, 12803 T10, 12804 T11, 12805 T12, 12806 T13, 12807 T14, 12808 T15, 12809 T16, 12810 T17, 12811 T18, 12812 T19, 12813 T20, 12814 NullType, 12815 NullType, 12816 NullType, 12817 NullType, 12818 NullType, 12819 NullType, 12820 NullType, 12821 NullType, 12822 NullType, 12823 NullType, 12824 NullType, 12825 NullType, 12826 NullType, 12827 NullType, 12828 NullType, 12829 NullType, 12830 NullType, 12831 NullType, 12832 NullType, 12833 NullType, 12834 NullType, 12835 NullType, 12836 NullType, 12837 NullType, 12838 NullType, 12839 NullType, 12840 NullType, 12841 NullType, 12842 NullType, 12843 NullType, 12844 NullType, 12845 NullType, 12846 NullType, 12847 NullType, 12848 NullType, 12849 NullType, 12850 NullType, 12851 NullType, 12852 NullType, 12853 NullType, 12854 NullType, 12855 NullType, 12856 NullType, 12857 NullType, 12858 NullType, 12859 NullType, 12860 NullType, 12861 NullType, 12862 NullType, 12863 NullType, 12864 NullType, 12865 NullType, 12866 NullType, 12867 NullType, 12868 NullType, 12869 NullType, 12870 NullType, 12871 NullType, 12872 NullType, 12873 NullType, 12874 NullType, 12875 NullType, 12876 NullType, 12877 NullType, 12878 NullType, 12879 NullType, 12880 NullType, 12881 NullType, 12882 NullType, 12883 NullType, 12884 NullType, 12885 NullType, 12886 NullType, 12887 NullType, 12888 NullType, 12889 NullType, 12890 NullType, 12891 NullType, 12892 NullType, 12893 NullType, 12894 NullType, 12895 NullType, 12896 NullType, 12897 NullType, 12898 NullType, 12899 NullType, 12900 NullType, 12901 NullType, 12902 NullType, 12903 NullType, 12904 NullType, 12905 NullType, 12906 NullType, 12907 NullType, 12908 NullType, 12909 NullType, 12910 NullType, 12911 NullType, 12912 NullType, 12913 NullType, 12914 NullType, 12915 NullType, 12916 NullType, 12917 NullType, 12918 NullType, 12919 NullType, 12920 NullType> FunctorType; 12921 12922 FunctorType functor_; 12923 12924 functionImplementation_(const FunctorType &functor) : 12925 functor_(functor) 12926 { 12927 } 12928 12929 typedef std::tr1::function<Event ( 12930 const EnqueueArgs&, 12931 T0, 12932 T1, 12933 T2, 12934 T3, 12935 T4, 12936 T5, 12937 T6, 12938 T7, 12939 T8, 12940 T9, 12941 T10, 12942 T11, 12943 T12, 12944 T13, 12945 T14, 12946 T15, 12947 T16, 12948 T17, 12949 T18, 12950 T19, 12951 T20)> type_; 12952 12953 Event operator()(const EnqueueArgs& enqueueArgs, 12954 T0 arg0, 12955 T1 arg1, 12956 T2 arg2, 12957 T3 arg3, 12958 T4 arg4, 12959 T5 arg5, 12960 T6 arg6, 12961 T7 arg7, 12962 T8 arg8, 12963 T9 arg9, 12964 T10 arg10, 12965 T11 arg11, 12966 T12 arg12, 12967 T13 arg13, 12968 T14 arg14, 12969 T15 arg15, 12970 T16 arg16, 12971 T17 arg17, 12972 T18 arg18, 12973 T19 arg19, 12974 T20 arg20) 12975 { 12976 return functor_( 12977 enqueueArgs, 12978 arg0, 12979 arg1, 12980 arg2, 12981 arg3, 12982 arg4, 12983 arg5, 12984 arg6, 12985 arg7, 12986 arg8, 12987 arg9, 12988 arg10, 12989 arg11, 12990 arg12, 12991 arg13, 12992 arg14, 12993 arg15, 12994 arg16, 12995 arg17, 12996 arg18, 12997 arg19, 12998 arg20); 12999 } 13000 13001 operator type_ () 13002 { 13003 return type_(*this); 13004 } 13005 13006 }; 13007 13008 template< 13009 typename T0, 13010 typename T1, 13011 typename T2, 13012 typename T3, 13013 typename T4, 13014 typename T5, 13015 typename T6, 13016 typename T7, 13017 typename T8, 13018 typename T9, 13019 typename T10, 13020 typename T11, 13021 typename T12, 13022 typename T13, 13023 typename T14, 13024 typename T15, 13025 typename T16, 13026 typename T17, 13027 typename T18, 13028 typename T19, 13029 typename T20, 13030 typename T21> 13031 struct functionImplementation_< 13032 T0, 13033 T1, 13034 T2, 13035 T3, 13036 T4, 13037 T5, 13038 T6, 13039 T7, 13040 T8, 13041 T9, 13042 T10, 13043 T11, 13044 T12, 13045 T13, 13046 T14, 13047 T15, 13048 T16, 13049 T17, 13050 T18, 13051 T19, 13052 T20, 13053 T21, 13054 NullType, 13055 NullType, 13056 NullType, 13057 NullType, 13058 NullType, 13059 NullType, 13060 NullType, 13061 NullType, 13062 NullType, 13063 NullType, 13064 NullType, 13065 NullType, 13066 NullType, 13067 NullType, 13068 NullType, 13069 NullType, 13070 NullType, 13071 NullType, 13072 NullType, 13073 NullType, 13074 NullType, 13075 NullType, 13076 NullType, 13077 NullType, 13078 NullType, 13079 NullType, 13080 NullType, 13081 NullType, 13082 NullType, 13083 NullType, 13084 NullType, 13085 NullType, 13086 NullType, 13087 NullType, 13088 NullType, 13089 NullType, 13090 NullType, 13091 NullType, 13092 NullType, 13093 NullType, 13094 NullType, 13095 NullType, 13096 NullType, 13097 NullType, 13098 NullType, 13099 NullType, 13100 NullType, 13101 NullType, 13102 NullType, 13103 NullType, 13104 NullType, 13105 NullType, 13106 NullType, 13107 NullType, 13108 NullType, 13109 NullType, 13110 NullType, 13111 NullType, 13112 NullType, 13113 NullType, 13114 NullType, 13115 NullType, 13116 NullType, 13117 NullType, 13118 NullType, 13119 NullType, 13120 NullType, 13121 NullType, 13122 NullType, 13123 NullType, 13124 NullType, 13125 NullType, 13126 NullType, 13127 NullType, 13128 NullType, 13129 NullType, 13130 NullType, 13131 NullType, 13132 NullType, 13133 NullType, 13134 NullType, 13135 NullType, 13136 NullType, 13137 NullType, 13138 NullType, 13139 NullType, 13140 NullType, 13141 NullType, 13142 NullType, 13143 NullType, 13144 NullType, 13145 NullType, 13146 NullType, 13147 NullType, 13148 NullType, 13149 NullType, 13150 NullType, 13151 NullType, 13152 NullType, 13153 NullType, 13154 NullType, 13155 NullType, 13156 NullType, 13157 NullType, 13158 NullType, 13159 NullType> 13160 { 13161 typedef detail::KernelFunctorGlobal< 13162 T0, 13163 T1, 13164 T2, 13165 T3, 13166 T4, 13167 T5, 13168 T6, 13169 T7, 13170 T8, 13171 T9, 13172 T10, 13173 T11, 13174 T12, 13175 T13, 13176 T14, 13177 T15, 13178 T16, 13179 T17, 13180 T18, 13181 T19, 13182 T20, 13183 T21, 13184 NullType, 13185 NullType, 13186 NullType, 13187 NullType, 13188 NullType, 13189 NullType, 13190 NullType, 13191 NullType, 13192 NullType, 13193 NullType, 13194 NullType, 13195 NullType, 13196 NullType, 13197 NullType, 13198 NullType, 13199 NullType, 13200 NullType, 13201 NullType, 13202 NullType, 13203 NullType, 13204 NullType, 13205 NullType, 13206 NullType, 13207 NullType, 13208 NullType, 13209 NullType, 13210 NullType, 13211 NullType, 13212 NullType, 13213 NullType, 13214 NullType, 13215 NullType, 13216 NullType, 13217 NullType, 13218 NullType, 13219 NullType, 13220 NullType, 13221 NullType, 13222 NullType, 13223 NullType, 13224 NullType, 13225 NullType, 13226 NullType, 13227 NullType, 13228 NullType, 13229 NullType, 13230 NullType, 13231 NullType, 13232 NullType, 13233 NullType, 13234 NullType, 13235 NullType, 13236 NullType, 13237 NullType, 13238 NullType, 13239 NullType, 13240 NullType, 13241 NullType, 13242 NullType, 13243 NullType, 13244 NullType, 13245 NullType, 13246 NullType, 13247 NullType, 13248 NullType, 13249 NullType, 13250 NullType, 13251 NullType, 13252 NullType, 13253 NullType, 13254 NullType, 13255 NullType, 13256 NullType, 13257 NullType, 13258 NullType, 13259 NullType, 13260 NullType, 13261 NullType, 13262 NullType, 13263 NullType, 13264 NullType, 13265 NullType, 13266 NullType, 13267 NullType, 13268 NullType, 13269 NullType, 13270 NullType, 13271 NullType, 13272 NullType, 13273 NullType, 13274 NullType, 13275 NullType, 13276 NullType, 13277 NullType, 13278 NullType, 13279 NullType, 13280 NullType, 13281 NullType, 13282 NullType, 13283 NullType, 13284 NullType, 13285 NullType, 13286 NullType, 13287 NullType, 13288 NullType, 13289 NullType> FunctorType; 13290 13291 FunctorType functor_; 13292 13293 functionImplementation_(const FunctorType &functor) : 13294 functor_(functor) 13295 { 13296 } 13297 13298 typedef std::tr1::function<Event ( 13299 const EnqueueArgs&, 13300 T0, 13301 T1, 13302 T2, 13303 T3, 13304 T4, 13305 T5, 13306 T6, 13307 T7, 13308 T8, 13309 T9, 13310 T10, 13311 T11, 13312 T12, 13313 T13, 13314 T14, 13315 T15, 13316 T16, 13317 T17, 13318 T18, 13319 T19, 13320 T20, 13321 T21)> type_; 13322 13323 Event operator()(const EnqueueArgs& enqueueArgs, 13324 T0 arg0, 13325 T1 arg1, 13326 T2 arg2, 13327 T3 arg3, 13328 T4 arg4, 13329 T5 arg5, 13330 T6 arg6, 13331 T7 arg7, 13332 T8 arg8, 13333 T9 arg9, 13334 T10 arg10, 13335 T11 arg11, 13336 T12 arg12, 13337 T13 arg13, 13338 T14 arg14, 13339 T15 arg15, 13340 T16 arg16, 13341 T17 arg17, 13342 T18 arg18, 13343 T19 arg19, 13344 T20 arg20, 13345 T21 arg21) 13346 { 13347 return functor_( 13348 enqueueArgs, 13349 arg0, 13350 arg1, 13351 arg2, 13352 arg3, 13353 arg4, 13354 arg5, 13355 arg6, 13356 arg7, 13357 arg8, 13358 arg9, 13359 arg10, 13360 arg11, 13361 arg12, 13362 arg13, 13363 arg14, 13364 arg15, 13365 arg16, 13366 arg17, 13367 arg18, 13368 arg19, 13369 arg20, 13370 arg21); 13371 } 13372 13373 operator type_ () 13374 { 13375 return type_(*this); 13376 } 13377 13378 }; 13379 13380 template< 13381 typename T0, 13382 typename T1, 13383 typename T2, 13384 typename T3, 13385 typename T4, 13386 typename T5, 13387 typename T6, 13388 typename T7, 13389 typename T8, 13390 typename T9, 13391 typename T10, 13392 typename T11, 13393 typename T12, 13394 typename T13, 13395 typename T14, 13396 typename T15, 13397 typename T16, 13398 typename T17, 13399 typename T18, 13400 typename T19, 13401 typename T20, 13402 typename T21, 13403 typename T22> 13404 struct functionImplementation_< 13405 T0, 13406 T1, 13407 T2, 13408 T3, 13409 T4, 13410 T5, 13411 T6, 13412 T7, 13413 T8, 13414 T9, 13415 T10, 13416 T11, 13417 T12, 13418 T13, 13419 T14, 13420 T15, 13421 T16, 13422 T17, 13423 T18, 13424 T19, 13425 T20, 13426 T21, 13427 T22, 13428 NullType, 13429 NullType, 13430 NullType, 13431 NullType, 13432 NullType, 13433 NullType, 13434 NullType, 13435 NullType, 13436 NullType, 13437 NullType, 13438 NullType, 13439 NullType, 13440 NullType, 13441 NullType, 13442 NullType, 13443 NullType, 13444 NullType, 13445 NullType, 13446 NullType, 13447 NullType, 13448 NullType, 13449 NullType, 13450 NullType, 13451 NullType, 13452 NullType, 13453 NullType, 13454 NullType, 13455 NullType, 13456 NullType, 13457 NullType, 13458 NullType, 13459 NullType, 13460 NullType, 13461 NullType, 13462 NullType, 13463 NullType, 13464 NullType, 13465 NullType, 13466 NullType, 13467 NullType, 13468 NullType, 13469 NullType, 13470 NullType, 13471 NullType, 13472 NullType, 13473 NullType, 13474 NullType, 13475 NullType, 13476 NullType, 13477 NullType, 13478 NullType, 13479 NullType, 13480 NullType, 13481 NullType, 13482 NullType, 13483 NullType, 13484 NullType, 13485 NullType, 13486 NullType, 13487 NullType, 13488 NullType, 13489 NullType, 13490 NullType, 13491 NullType, 13492 NullType, 13493 NullType, 13494 NullType, 13495 NullType, 13496 NullType, 13497 NullType, 13498 NullType, 13499 NullType, 13500 NullType, 13501 NullType, 13502 NullType, 13503 NullType, 13504 NullType, 13505 NullType, 13506 NullType, 13507 NullType, 13508 NullType, 13509 NullType, 13510 NullType, 13511 NullType, 13512 NullType, 13513 NullType, 13514 NullType, 13515 NullType, 13516 NullType, 13517 NullType, 13518 NullType, 13519 NullType, 13520 NullType, 13521 NullType, 13522 NullType, 13523 NullType, 13524 NullType, 13525 NullType, 13526 NullType, 13527 NullType, 13528 NullType, 13529 NullType, 13530 NullType, 13531 NullType, 13532 NullType> 13533 { 13534 typedef detail::KernelFunctorGlobal< 13535 T0, 13536 T1, 13537 T2, 13538 T3, 13539 T4, 13540 T5, 13541 T6, 13542 T7, 13543 T8, 13544 T9, 13545 T10, 13546 T11, 13547 T12, 13548 T13, 13549 T14, 13550 T15, 13551 T16, 13552 T17, 13553 T18, 13554 T19, 13555 T20, 13556 T21, 13557 T22, 13558 NullType, 13559 NullType, 13560 NullType, 13561 NullType, 13562 NullType, 13563 NullType, 13564 NullType, 13565 NullType, 13566 NullType, 13567 NullType, 13568 NullType, 13569 NullType, 13570 NullType, 13571 NullType, 13572 NullType, 13573 NullType, 13574 NullType, 13575 NullType, 13576 NullType, 13577 NullType, 13578 NullType, 13579 NullType, 13580 NullType, 13581 NullType, 13582 NullType, 13583 NullType, 13584 NullType, 13585 NullType, 13586 NullType, 13587 NullType, 13588 NullType, 13589 NullType, 13590 NullType, 13591 NullType, 13592 NullType, 13593 NullType, 13594 NullType, 13595 NullType, 13596 NullType, 13597 NullType, 13598 NullType, 13599 NullType, 13600 NullType, 13601 NullType, 13602 NullType, 13603 NullType, 13604 NullType, 13605 NullType, 13606 NullType, 13607 NullType, 13608 NullType, 13609 NullType, 13610 NullType, 13611 NullType, 13612 NullType, 13613 NullType, 13614 NullType, 13615 NullType, 13616 NullType, 13617 NullType, 13618 NullType, 13619 NullType, 13620 NullType, 13621 NullType, 13622 NullType, 13623 NullType, 13624 NullType, 13625 NullType, 13626 NullType, 13627 NullType, 13628 NullType, 13629 NullType, 13630 NullType, 13631 NullType, 13632 NullType, 13633 NullType, 13634 NullType, 13635 NullType, 13636 NullType, 13637 NullType, 13638 NullType, 13639 NullType, 13640 NullType, 13641 NullType, 13642 NullType, 13643 NullType, 13644 NullType, 13645 NullType, 13646 NullType, 13647 NullType, 13648 NullType, 13649 NullType, 13650 NullType, 13651 NullType, 13652 NullType, 13653 NullType, 13654 NullType, 13655 NullType, 13656 NullType, 13657 NullType, 13658 NullType, 13659 NullType, 13660 NullType, 13661 NullType, 13662 NullType> FunctorType; 13663 13664 FunctorType functor_; 13665 13666 functionImplementation_(const FunctorType &functor) : 13667 functor_(functor) 13668 { 13669 } 13670 13671 typedef std::tr1::function<Event ( 13672 const EnqueueArgs&, 13673 T0, 13674 T1, 13675 T2, 13676 T3, 13677 T4, 13678 T5, 13679 T6, 13680 T7, 13681 T8, 13682 T9, 13683 T10, 13684 T11, 13685 T12, 13686 T13, 13687 T14, 13688 T15, 13689 T16, 13690 T17, 13691 T18, 13692 T19, 13693 T20, 13694 T21, 13695 T22)> type_; 13696 13697 Event operator()(const EnqueueArgs& enqueueArgs, 13698 T0 arg0, 13699 T1 arg1, 13700 T2 arg2, 13701 T3 arg3, 13702 T4 arg4, 13703 T5 arg5, 13704 T6 arg6, 13705 T7 arg7, 13706 T8 arg8, 13707 T9 arg9, 13708 T10 arg10, 13709 T11 arg11, 13710 T12 arg12, 13711 T13 arg13, 13712 T14 arg14, 13713 T15 arg15, 13714 T16 arg16, 13715 T17 arg17, 13716 T18 arg18, 13717 T19 arg19, 13718 T20 arg20, 13719 T21 arg21, 13720 T22 arg22) 13721 { 13722 return functor_( 13723 enqueueArgs, 13724 arg0, 13725 arg1, 13726 arg2, 13727 arg3, 13728 arg4, 13729 arg5, 13730 arg6, 13731 arg7, 13732 arg8, 13733 arg9, 13734 arg10, 13735 arg11, 13736 arg12, 13737 arg13, 13738 arg14, 13739 arg15, 13740 arg16, 13741 arg17, 13742 arg18, 13743 arg19, 13744 arg20, 13745 arg21, 13746 arg22); 13747 } 13748 13749 operator type_ () 13750 { 13751 return type_(*this); 13752 } 13753 13754 }; 13755 13756 template< 13757 typename T0, 13758 typename T1, 13759 typename T2, 13760 typename T3, 13761 typename T4, 13762 typename T5, 13763 typename T6, 13764 typename T7, 13765 typename T8, 13766 typename T9, 13767 typename T10, 13768 typename T11, 13769 typename T12, 13770 typename T13, 13771 typename T14, 13772 typename T15, 13773 typename T16, 13774 typename T17, 13775 typename T18, 13776 typename T19, 13777 typename T20, 13778 typename T21, 13779 typename T22, 13780 typename T23> 13781 struct functionImplementation_< 13782 T0, 13783 T1, 13784 T2, 13785 T3, 13786 T4, 13787 T5, 13788 T6, 13789 T7, 13790 T8, 13791 T9, 13792 T10, 13793 T11, 13794 T12, 13795 T13, 13796 T14, 13797 T15, 13798 T16, 13799 T17, 13800 T18, 13801 T19, 13802 T20, 13803 T21, 13804 T22, 13805 T23, 13806 NullType, 13807 NullType, 13808 NullType, 13809 NullType, 13810 NullType, 13811 NullType, 13812 NullType, 13813 NullType, 13814 NullType, 13815 NullType, 13816 NullType, 13817 NullType, 13818 NullType, 13819 NullType, 13820 NullType, 13821 NullType, 13822 NullType, 13823 NullType, 13824 NullType, 13825 NullType, 13826 NullType, 13827 NullType, 13828 NullType, 13829 NullType, 13830 NullType, 13831 NullType, 13832 NullType, 13833 NullType, 13834 NullType, 13835 NullType, 13836 NullType, 13837 NullType, 13838 NullType, 13839 NullType, 13840 NullType, 13841 NullType, 13842 NullType, 13843 NullType, 13844 NullType, 13845 NullType, 13846 NullType, 13847 NullType, 13848 NullType, 13849 NullType, 13850 NullType, 13851 NullType, 13852 NullType, 13853 NullType, 13854 NullType, 13855 NullType, 13856 NullType, 13857 NullType, 13858 NullType, 13859 NullType, 13860 NullType, 13861 NullType, 13862 NullType, 13863 NullType, 13864 NullType, 13865 NullType, 13866 NullType, 13867 NullType, 13868 NullType, 13869 NullType, 13870 NullType, 13871 NullType, 13872 NullType, 13873 NullType, 13874 NullType, 13875 NullType, 13876 NullType, 13877 NullType, 13878 NullType, 13879 NullType, 13880 NullType, 13881 NullType, 13882 NullType, 13883 NullType, 13884 NullType, 13885 NullType, 13886 NullType, 13887 NullType, 13888 NullType, 13889 NullType, 13890 NullType, 13891 NullType, 13892 NullType, 13893 NullType, 13894 NullType, 13895 NullType, 13896 NullType, 13897 NullType, 13898 NullType, 13899 NullType, 13900 NullType, 13901 NullType, 13902 NullType, 13903 NullType, 13904 NullType, 13905 NullType, 13906 NullType, 13907 NullType, 13908 NullType, 13909 NullType> 13910 { 13911 typedef detail::KernelFunctorGlobal< 13912 T0, 13913 T1, 13914 T2, 13915 T3, 13916 T4, 13917 T5, 13918 T6, 13919 T7, 13920 T8, 13921 T9, 13922 T10, 13923 T11, 13924 T12, 13925 T13, 13926 T14, 13927 T15, 13928 T16, 13929 T17, 13930 T18, 13931 T19, 13932 T20, 13933 T21, 13934 T22, 13935 T23, 13936 NullType, 13937 NullType, 13938 NullType, 13939 NullType, 13940 NullType, 13941 NullType, 13942 NullType, 13943 NullType, 13944 NullType, 13945 NullType, 13946 NullType, 13947 NullType, 13948 NullType, 13949 NullType, 13950 NullType, 13951 NullType, 13952 NullType, 13953 NullType, 13954 NullType, 13955 NullType, 13956 NullType, 13957 NullType, 13958 NullType, 13959 NullType, 13960 NullType, 13961 NullType, 13962 NullType, 13963 NullType, 13964 NullType, 13965 NullType, 13966 NullType, 13967 NullType, 13968 NullType, 13969 NullType, 13970 NullType, 13971 NullType, 13972 NullType, 13973 NullType, 13974 NullType, 13975 NullType, 13976 NullType, 13977 NullType, 13978 NullType, 13979 NullType, 13980 NullType, 13981 NullType, 13982 NullType, 13983 NullType, 13984 NullType, 13985 NullType, 13986 NullType, 13987 NullType, 13988 NullType, 13989 NullType, 13990 NullType, 13991 NullType, 13992 NullType, 13993 NullType, 13994 NullType, 13995 NullType, 13996 NullType, 13997 NullType, 13998 NullType, 13999 NullType, 14000 NullType, 14001 NullType, 14002 NullType, 14003 NullType, 14004 NullType, 14005 NullType, 14006 NullType, 14007 NullType, 14008 NullType, 14009 NullType, 14010 NullType, 14011 NullType, 14012 NullType, 14013 NullType, 14014 NullType, 14015 NullType, 14016 NullType, 14017 NullType, 14018 NullType, 14019 NullType, 14020 NullType, 14021 NullType, 14022 NullType, 14023 NullType, 14024 NullType, 14025 NullType, 14026 NullType, 14027 NullType, 14028 NullType, 14029 NullType, 14030 NullType, 14031 NullType, 14032 NullType, 14033 NullType, 14034 NullType, 14035 NullType, 14036 NullType, 14037 NullType, 14038 NullType, 14039 NullType> FunctorType; 14040 14041 FunctorType functor_; 14042 14043 functionImplementation_(const FunctorType &functor) : 14044 functor_(functor) 14045 { 14046 } 14047 14048 typedef std::tr1::function<Event ( 14049 const EnqueueArgs&, 14050 T0, 14051 T1, 14052 T2, 14053 T3, 14054 T4, 14055 T5, 14056 T6, 14057 T7, 14058 T8, 14059 T9, 14060 T10, 14061 T11, 14062 T12, 14063 T13, 14064 T14, 14065 T15, 14066 T16, 14067 T17, 14068 T18, 14069 T19, 14070 T20, 14071 T21, 14072 T22, 14073 T23)> type_; 14074 14075 Event operator()(const EnqueueArgs& enqueueArgs, 14076 T0 arg0, 14077 T1 arg1, 14078 T2 arg2, 14079 T3 arg3, 14080 T4 arg4, 14081 T5 arg5, 14082 T6 arg6, 14083 T7 arg7, 14084 T8 arg8, 14085 T9 arg9, 14086 T10 arg10, 14087 T11 arg11, 14088 T12 arg12, 14089 T13 arg13, 14090 T14 arg14, 14091 T15 arg15, 14092 T16 arg16, 14093 T17 arg17, 14094 T18 arg18, 14095 T19 arg19, 14096 T20 arg20, 14097 T21 arg21, 14098 T22 arg22, 14099 T23 arg23) 14100 { 14101 return functor_( 14102 enqueueArgs, 14103 arg0, 14104 arg1, 14105 arg2, 14106 arg3, 14107 arg4, 14108 arg5, 14109 arg6, 14110 arg7, 14111 arg8, 14112 arg9, 14113 arg10, 14114 arg11, 14115 arg12, 14116 arg13, 14117 arg14, 14118 arg15, 14119 arg16, 14120 arg17, 14121 arg18, 14122 arg19, 14123 arg20, 14124 arg21, 14125 arg22, 14126 arg23); 14127 } 14128 14129 operator type_ () 14130 { 14131 return type_(*this); 14132 } 14133 14134 }; 14135 14136 template< 14137 typename T0, 14138 typename T1, 14139 typename T2, 14140 typename T3, 14141 typename T4, 14142 typename T5, 14143 typename T6, 14144 typename T7, 14145 typename T8, 14146 typename T9, 14147 typename T10, 14148 typename T11, 14149 typename T12, 14150 typename T13, 14151 typename T14, 14152 typename T15, 14153 typename T16, 14154 typename T17, 14155 typename T18, 14156 typename T19, 14157 typename T20, 14158 typename T21, 14159 typename T22, 14160 typename T23, 14161 typename T24> 14162 struct functionImplementation_< 14163 T0, 14164 T1, 14165 T2, 14166 T3, 14167 T4, 14168 T5, 14169 T6, 14170 T7, 14171 T8, 14172 T9, 14173 T10, 14174 T11, 14175 T12, 14176 T13, 14177 T14, 14178 T15, 14179 T16, 14180 T17, 14181 T18, 14182 T19, 14183 T20, 14184 T21, 14185 T22, 14186 T23, 14187 T24, 14188 NullType, 14189 NullType, 14190 NullType, 14191 NullType, 14192 NullType, 14193 NullType, 14194 NullType, 14195 NullType, 14196 NullType, 14197 NullType, 14198 NullType, 14199 NullType, 14200 NullType, 14201 NullType, 14202 NullType, 14203 NullType, 14204 NullType, 14205 NullType, 14206 NullType, 14207 NullType, 14208 NullType, 14209 NullType, 14210 NullType, 14211 NullType, 14212 NullType, 14213 NullType, 14214 NullType, 14215 NullType, 14216 NullType, 14217 NullType, 14218 NullType, 14219 NullType, 14220 NullType, 14221 NullType, 14222 NullType, 14223 NullType, 14224 NullType, 14225 NullType, 14226 NullType, 14227 NullType, 14228 NullType, 14229 NullType, 14230 NullType, 14231 NullType, 14232 NullType, 14233 NullType, 14234 NullType, 14235 NullType, 14236 NullType, 14237 NullType, 14238 NullType, 14239 NullType, 14240 NullType, 14241 NullType, 14242 NullType, 14243 NullType, 14244 NullType, 14245 NullType, 14246 NullType, 14247 NullType, 14248 NullType, 14249 NullType, 14250 NullType, 14251 NullType, 14252 NullType, 14253 NullType, 14254 NullType, 14255 NullType, 14256 NullType, 14257 NullType, 14258 NullType, 14259 NullType, 14260 NullType, 14261 NullType, 14262 NullType, 14263 NullType, 14264 NullType, 14265 NullType, 14266 NullType, 14267 NullType, 14268 NullType, 14269 NullType, 14270 NullType, 14271 NullType, 14272 NullType, 14273 NullType, 14274 NullType, 14275 NullType, 14276 NullType, 14277 NullType, 14278 NullType, 14279 NullType, 14280 NullType, 14281 NullType, 14282 NullType, 14283 NullType, 14284 NullType, 14285 NullType, 14286 NullType, 14287 NullType, 14288 NullType, 14289 NullType, 14290 NullType> 14291 { 14292 typedef detail::KernelFunctorGlobal< 14293 T0, 14294 T1, 14295 T2, 14296 T3, 14297 T4, 14298 T5, 14299 T6, 14300 T7, 14301 T8, 14302 T9, 14303 T10, 14304 T11, 14305 T12, 14306 T13, 14307 T14, 14308 T15, 14309 T16, 14310 T17, 14311 T18, 14312 T19, 14313 T20, 14314 T21, 14315 T22, 14316 T23, 14317 T24, 14318 NullType, 14319 NullType, 14320 NullType, 14321 NullType, 14322 NullType, 14323 NullType, 14324 NullType, 14325 NullType, 14326 NullType, 14327 NullType, 14328 NullType, 14329 NullType, 14330 NullType, 14331 NullType, 14332 NullType, 14333 NullType, 14334 NullType, 14335 NullType, 14336 NullType, 14337 NullType, 14338 NullType, 14339 NullType, 14340 NullType, 14341 NullType, 14342 NullType, 14343 NullType, 14344 NullType, 14345 NullType, 14346 NullType, 14347 NullType, 14348 NullType, 14349 NullType, 14350 NullType, 14351 NullType, 14352 NullType, 14353 NullType, 14354 NullType, 14355 NullType, 14356 NullType, 14357 NullType, 14358 NullType, 14359 NullType, 14360 NullType, 14361 NullType, 14362 NullType, 14363 NullType, 14364 NullType, 14365 NullType, 14366 NullType, 14367 NullType, 14368 NullType, 14369 NullType, 14370 NullType, 14371 NullType, 14372 NullType, 14373 NullType, 14374 NullType, 14375 NullType, 14376 NullType, 14377 NullType, 14378 NullType, 14379 NullType, 14380 NullType, 14381 NullType, 14382 NullType, 14383 NullType, 14384 NullType, 14385 NullType, 14386 NullType, 14387 NullType, 14388 NullType, 14389 NullType, 14390 NullType, 14391 NullType, 14392 NullType, 14393 NullType, 14394 NullType, 14395 NullType, 14396 NullType, 14397 NullType, 14398 NullType, 14399 NullType, 14400 NullType, 14401 NullType, 14402 NullType, 14403 NullType, 14404 NullType, 14405 NullType, 14406 NullType, 14407 NullType, 14408 NullType, 14409 NullType, 14410 NullType, 14411 NullType, 14412 NullType, 14413 NullType, 14414 NullType, 14415 NullType, 14416 NullType, 14417 NullType, 14418 NullType, 14419 NullType, 14420 NullType> FunctorType; 14421 14422 FunctorType functor_; 14423 14424 functionImplementation_(const FunctorType &functor) : 14425 functor_(functor) 14426 { 14427 } 14428 14429 typedef std::tr1::function<Event ( 14430 const EnqueueArgs&, 14431 T0, 14432 T1, 14433 T2, 14434 T3, 14435 T4, 14436 T5, 14437 T6, 14438 T7, 14439 T8, 14440 T9, 14441 T10, 14442 T11, 14443 T12, 14444 T13, 14445 T14, 14446 T15, 14447 T16, 14448 T17, 14449 T18, 14450 T19, 14451 T20, 14452 T21, 14453 T22, 14454 T23, 14455 T24)> type_; 14456 14457 Event operator()(const EnqueueArgs& enqueueArgs, 14458 T0 arg0, 14459 T1 arg1, 14460 T2 arg2, 14461 T3 arg3, 14462 T4 arg4, 14463 T5 arg5, 14464 T6 arg6, 14465 T7 arg7, 14466 T8 arg8, 14467 T9 arg9, 14468 T10 arg10, 14469 T11 arg11, 14470 T12 arg12, 14471 T13 arg13, 14472 T14 arg14, 14473 T15 arg15, 14474 T16 arg16, 14475 T17 arg17, 14476 T18 arg18, 14477 T19 arg19, 14478 T20 arg20, 14479 T21 arg21, 14480 T22 arg22, 14481 T23 arg23, 14482 T24 arg24) 14483 { 14484 return functor_( 14485 enqueueArgs, 14486 arg0, 14487 arg1, 14488 arg2, 14489 arg3, 14490 arg4, 14491 arg5, 14492 arg6, 14493 arg7, 14494 arg8, 14495 arg9, 14496 arg10, 14497 arg11, 14498 arg12, 14499 arg13, 14500 arg14, 14501 arg15, 14502 arg16, 14503 arg17, 14504 arg18, 14505 arg19, 14506 arg20, 14507 arg21, 14508 arg22, 14509 arg23, 14510 arg24); 14511 } 14512 14513 operator type_ () 14514 { 14515 return type_(*this); 14516 } 14517 14518 }; 14519 14520 template< 14521 typename T0, 14522 typename T1, 14523 typename T2, 14524 typename T3, 14525 typename T4, 14526 typename T5, 14527 typename T6, 14528 typename T7, 14529 typename T8, 14530 typename T9, 14531 typename T10, 14532 typename T11, 14533 typename T12, 14534 typename T13, 14535 typename T14, 14536 typename T15, 14537 typename T16, 14538 typename T17, 14539 typename T18, 14540 typename T19, 14541 typename T20, 14542 typename T21, 14543 typename T22, 14544 typename T23, 14545 typename T24, 14546 typename T25> 14547 struct functionImplementation_< 14548 T0, 14549 T1, 14550 T2, 14551 T3, 14552 T4, 14553 T5, 14554 T6, 14555 T7, 14556 T8, 14557 T9, 14558 T10, 14559 T11, 14560 T12, 14561 T13, 14562 T14, 14563 T15, 14564 T16, 14565 T17, 14566 T18, 14567 T19, 14568 T20, 14569 T21, 14570 T22, 14571 T23, 14572 T24, 14573 T25, 14574 NullType, 14575 NullType, 14576 NullType, 14577 NullType, 14578 NullType, 14579 NullType, 14580 NullType, 14581 NullType, 14582 NullType, 14583 NullType, 14584 NullType, 14585 NullType, 14586 NullType, 14587 NullType, 14588 NullType, 14589 NullType, 14590 NullType, 14591 NullType, 14592 NullType, 14593 NullType, 14594 NullType, 14595 NullType, 14596 NullType, 14597 NullType, 14598 NullType, 14599 NullType, 14600 NullType, 14601 NullType, 14602 NullType, 14603 NullType, 14604 NullType, 14605 NullType, 14606 NullType, 14607 NullType, 14608 NullType, 14609 NullType, 14610 NullType, 14611 NullType, 14612 NullType, 14613 NullType, 14614 NullType, 14615 NullType, 14616 NullType, 14617 NullType, 14618 NullType, 14619 NullType, 14620 NullType, 14621 NullType, 14622 NullType, 14623 NullType, 14624 NullType, 14625 NullType, 14626 NullType, 14627 NullType, 14628 NullType, 14629 NullType, 14630 NullType, 14631 NullType, 14632 NullType, 14633 NullType, 14634 NullType, 14635 NullType, 14636 NullType, 14637 NullType, 14638 NullType, 14639 NullType, 14640 NullType, 14641 NullType, 14642 NullType, 14643 NullType, 14644 NullType, 14645 NullType, 14646 NullType, 14647 NullType, 14648 NullType, 14649 NullType, 14650 NullType, 14651 NullType, 14652 NullType, 14653 NullType, 14654 NullType, 14655 NullType, 14656 NullType, 14657 NullType, 14658 NullType, 14659 NullType, 14660 NullType, 14661 NullType, 14662 NullType, 14663 NullType, 14664 NullType, 14665 NullType, 14666 NullType, 14667 NullType, 14668 NullType, 14669 NullType, 14670 NullType, 14671 NullType, 14672 NullType, 14673 NullType, 14674 NullType, 14675 NullType> 14676 { 14677 typedef detail::KernelFunctorGlobal< 14678 T0, 14679 T1, 14680 T2, 14681 T3, 14682 T4, 14683 T5, 14684 T6, 14685 T7, 14686 T8, 14687 T9, 14688 T10, 14689 T11, 14690 T12, 14691 T13, 14692 T14, 14693 T15, 14694 T16, 14695 T17, 14696 T18, 14697 T19, 14698 T20, 14699 T21, 14700 T22, 14701 T23, 14702 T24, 14703 T25, 14704 NullType, 14705 NullType, 14706 NullType, 14707 NullType, 14708 NullType, 14709 NullType, 14710 NullType, 14711 NullType, 14712 NullType, 14713 NullType, 14714 NullType, 14715 NullType, 14716 NullType, 14717 NullType, 14718 NullType, 14719 NullType, 14720 NullType, 14721 NullType, 14722 NullType, 14723 NullType, 14724 NullType, 14725 NullType, 14726 NullType, 14727 NullType, 14728 NullType, 14729 NullType, 14730 NullType, 14731 NullType, 14732 NullType, 14733 NullType, 14734 NullType, 14735 NullType, 14736 NullType, 14737 NullType, 14738 NullType, 14739 NullType, 14740 NullType, 14741 NullType, 14742 NullType, 14743 NullType, 14744 NullType, 14745 NullType, 14746 NullType, 14747 NullType, 14748 NullType, 14749 NullType, 14750 NullType, 14751 NullType, 14752 NullType, 14753 NullType, 14754 NullType, 14755 NullType, 14756 NullType, 14757 NullType, 14758 NullType, 14759 NullType, 14760 NullType, 14761 NullType, 14762 NullType, 14763 NullType, 14764 NullType, 14765 NullType, 14766 NullType, 14767 NullType, 14768 NullType, 14769 NullType, 14770 NullType, 14771 NullType, 14772 NullType, 14773 NullType, 14774 NullType, 14775 NullType, 14776 NullType, 14777 NullType, 14778 NullType, 14779 NullType, 14780 NullType, 14781 NullType, 14782 NullType, 14783 NullType, 14784 NullType, 14785 NullType, 14786 NullType, 14787 NullType, 14788 NullType, 14789 NullType, 14790 NullType, 14791 NullType, 14792 NullType, 14793 NullType, 14794 NullType, 14795 NullType, 14796 NullType, 14797 NullType, 14798 NullType, 14799 NullType, 14800 NullType, 14801 NullType, 14802 NullType, 14803 NullType, 14804 NullType, 14805 NullType> FunctorType; 14806 14807 FunctorType functor_; 14808 14809 functionImplementation_(const FunctorType &functor) : 14810 functor_(functor) 14811 { 14812 } 14813 14814 typedef std::tr1::function<Event ( 14815 const EnqueueArgs&, 14816 T0, 14817 T1, 14818 T2, 14819 T3, 14820 T4, 14821 T5, 14822 T6, 14823 T7, 14824 T8, 14825 T9, 14826 T10, 14827 T11, 14828 T12, 14829 T13, 14830 T14, 14831 T15, 14832 T16, 14833 T17, 14834 T18, 14835 T19, 14836 T20, 14837 T21, 14838 T22, 14839 T23, 14840 T24, 14841 T25)> type_; 14842 14843 Event operator()(const EnqueueArgs& enqueueArgs, 14844 T0 arg0, 14845 T1 arg1, 14846 T2 arg2, 14847 T3 arg3, 14848 T4 arg4, 14849 T5 arg5, 14850 T6 arg6, 14851 T7 arg7, 14852 T8 arg8, 14853 T9 arg9, 14854 T10 arg10, 14855 T11 arg11, 14856 T12 arg12, 14857 T13 arg13, 14858 T14 arg14, 14859 T15 arg15, 14860 T16 arg16, 14861 T17 arg17, 14862 T18 arg18, 14863 T19 arg19, 14864 T20 arg20, 14865 T21 arg21, 14866 T22 arg22, 14867 T23 arg23, 14868 T24 arg24, 14869 T25 arg25) 14870 { 14871 return functor_( 14872 enqueueArgs, 14873 arg0, 14874 arg1, 14875 arg2, 14876 arg3, 14877 arg4, 14878 arg5, 14879 arg6, 14880 arg7, 14881 arg8, 14882 arg9, 14883 arg10, 14884 arg11, 14885 arg12, 14886 arg13, 14887 arg14, 14888 arg15, 14889 arg16, 14890 arg17, 14891 arg18, 14892 arg19, 14893 arg20, 14894 arg21, 14895 arg22, 14896 arg23, 14897 arg24, 14898 arg25); 14899 } 14900 14901 operator type_ () 14902 { 14903 return type_(*this); 14904 } 14905 14906 }; 14907 14908 template< 14909 typename T0, 14910 typename T1, 14911 typename T2, 14912 typename T3, 14913 typename T4, 14914 typename T5, 14915 typename T6, 14916 typename T7, 14917 typename T8, 14918 typename T9, 14919 typename T10, 14920 typename T11, 14921 typename T12, 14922 typename T13, 14923 typename T14, 14924 typename T15, 14925 typename T16, 14926 typename T17, 14927 typename T18, 14928 typename T19, 14929 typename T20, 14930 typename T21, 14931 typename T22, 14932 typename T23, 14933 typename T24, 14934 typename T25, 14935 typename T26> 14936 struct functionImplementation_< 14937 T0, 14938 T1, 14939 T2, 14940 T3, 14941 T4, 14942 T5, 14943 T6, 14944 T7, 14945 T8, 14946 T9, 14947 T10, 14948 T11, 14949 T12, 14950 T13, 14951 T14, 14952 T15, 14953 T16, 14954 T17, 14955 T18, 14956 T19, 14957 T20, 14958 T21, 14959 T22, 14960 T23, 14961 T24, 14962 T25, 14963 T26, 14964 NullType, 14965 NullType, 14966 NullType, 14967 NullType, 14968 NullType, 14969 NullType, 14970 NullType, 14971 NullType, 14972 NullType, 14973 NullType, 14974 NullType, 14975 NullType, 14976 NullType, 14977 NullType, 14978 NullType, 14979 NullType, 14980 NullType, 14981 NullType, 14982 NullType, 14983 NullType, 14984 NullType, 14985 NullType, 14986 NullType, 14987 NullType, 14988 NullType, 14989 NullType, 14990 NullType, 14991 NullType, 14992 NullType, 14993 NullType, 14994 NullType, 14995 NullType, 14996 NullType, 14997 NullType, 14998 NullType, 14999 NullType, 15000 NullType, 15001 NullType, 15002 NullType, 15003 NullType, 15004 NullType, 15005 NullType, 15006 NullType, 15007 NullType, 15008 NullType, 15009 NullType, 15010 NullType, 15011 NullType, 15012 NullType, 15013 NullType, 15014 NullType, 15015 NullType, 15016 NullType, 15017 NullType, 15018 NullType, 15019 NullType, 15020 NullType, 15021 NullType, 15022 NullType, 15023 NullType, 15024 NullType, 15025 NullType, 15026 NullType, 15027 NullType, 15028 NullType, 15029 NullType, 15030 NullType, 15031 NullType, 15032 NullType, 15033 NullType, 15034 NullType, 15035 NullType, 15036 NullType, 15037 NullType, 15038 NullType, 15039 NullType, 15040 NullType, 15041 NullType, 15042 NullType, 15043 NullType, 15044 NullType, 15045 NullType, 15046 NullType, 15047 NullType, 15048 NullType, 15049 NullType, 15050 NullType, 15051 NullType, 15052 NullType, 15053 NullType, 15054 NullType, 15055 NullType, 15056 NullType, 15057 NullType, 15058 NullType, 15059 NullType, 15060 NullType, 15061 NullType, 15062 NullType, 15063 NullType, 15064 NullType> 15065 { 15066 typedef detail::KernelFunctorGlobal< 15067 T0, 15068 T1, 15069 T2, 15070 T3, 15071 T4, 15072 T5, 15073 T6, 15074 T7, 15075 T8, 15076 T9, 15077 T10, 15078 T11, 15079 T12, 15080 T13, 15081 T14, 15082 T15, 15083 T16, 15084 T17, 15085 T18, 15086 T19, 15087 T20, 15088 T21, 15089 T22, 15090 T23, 15091 T24, 15092 T25, 15093 T26, 15094 NullType, 15095 NullType, 15096 NullType, 15097 NullType, 15098 NullType, 15099 NullType, 15100 NullType, 15101 NullType, 15102 NullType, 15103 NullType, 15104 NullType, 15105 NullType, 15106 NullType, 15107 NullType, 15108 NullType, 15109 NullType, 15110 NullType, 15111 NullType, 15112 NullType, 15113 NullType, 15114 NullType, 15115 NullType, 15116 NullType, 15117 NullType, 15118 NullType, 15119 NullType, 15120 NullType, 15121 NullType, 15122 NullType, 15123 NullType, 15124 NullType, 15125 NullType, 15126 NullType, 15127 NullType, 15128 NullType, 15129 NullType, 15130 NullType, 15131 NullType, 15132 NullType, 15133 NullType, 15134 NullType, 15135 NullType, 15136 NullType, 15137 NullType, 15138 NullType, 15139 NullType, 15140 NullType, 15141 NullType, 15142 NullType, 15143 NullType, 15144 NullType, 15145 NullType, 15146 NullType, 15147 NullType, 15148 NullType, 15149 NullType, 15150 NullType, 15151 NullType, 15152 NullType, 15153 NullType, 15154 NullType, 15155 NullType, 15156 NullType, 15157 NullType, 15158 NullType, 15159 NullType, 15160 NullType, 15161 NullType, 15162 NullType, 15163 NullType, 15164 NullType, 15165 NullType, 15166 NullType, 15167 NullType, 15168 NullType, 15169 NullType, 15170 NullType, 15171 NullType, 15172 NullType, 15173 NullType, 15174 NullType, 15175 NullType, 15176 NullType, 15177 NullType, 15178 NullType, 15179 NullType, 15180 NullType, 15181 NullType, 15182 NullType, 15183 NullType, 15184 NullType, 15185 NullType, 15186 NullType, 15187 NullType, 15188 NullType, 15189 NullType, 15190 NullType, 15191 NullType, 15192 NullType, 15193 NullType, 15194 NullType> FunctorType; 15195 15196 FunctorType functor_; 15197 15198 functionImplementation_(const FunctorType &functor) : 15199 functor_(functor) 15200 { 15201 } 15202 15203 typedef std::tr1::function<Event ( 15204 const EnqueueArgs&, 15205 T0, 15206 T1, 15207 T2, 15208 T3, 15209 T4, 15210 T5, 15211 T6, 15212 T7, 15213 T8, 15214 T9, 15215 T10, 15216 T11, 15217 T12, 15218 T13, 15219 T14, 15220 T15, 15221 T16, 15222 T17, 15223 T18, 15224 T19, 15225 T20, 15226 T21, 15227 T22, 15228 T23, 15229 T24, 15230 T25, 15231 T26)> type_; 15232 15233 Event operator()(const EnqueueArgs& enqueueArgs, 15234 T0 arg0, 15235 T1 arg1, 15236 T2 arg2, 15237 T3 arg3, 15238 T4 arg4, 15239 T5 arg5, 15240 T6 arg6, 15241 T7 arg7, 15242 T8 arg8, 15243 T9 arg9, 15244 T10 arg10, 15245 T11 arg11, 15246 T12 arg12, 15247 T13 arg13, 15248 T14 arg14, 15249 T15 arg15, 15250 T16 arg16, 15251 T17 arg17, 15252 T18 arg18, 15253 T19 arg19, 15254 T20 arg20, 15255 T21 arg21, 15256 T22 arg22, 15257 T23 arg23, 15258 T24 arg24, 15259 T25 arg25, 15260 T26 arg26) 15261 { 15262 return functor_( 15263 enqueueArgs, 15264 arg0, 15265 arg1, 15266 arg2, 15267 arg3, 15268 arg4, 15269 arg5, 15270 arg6, 15271 arg7, 15272 arg8, 15273 arg9, 15274 arg10, 15275 arg11, 15276 arg12, 15277 arg13, 15278 arg14, 15279 arg15, 15280 arg16, 15281 arg17, 15282 arg18, 15283 arg19, 15284 arg20, 15285 arg21, 15286 arg22, 15287 arg23, 15288 arg24, 15289 arg25, 15290 arg26); 15291 } 15292 15293 operator type_ () 15294 { 15295 return type_(*this); 15296 } 15297 15298 }; 15299 15300 template< 15301 typename T0, 15302 typename T1, 15303 typename T2, 15304 typename T3, 15305 typename T4, 15306 typename T5, 15307 typename T6, 15308 typename T7, 15309 typename T8, 15310 typename T9, 15311 typename T10, 15312 typename T11, 15313 typename T12, 15314 typename T13, 15315 typename T14, 15316 typename T15, 15317 typename T16, 15318 typename T17, 15319 typename T18, 15320 typename T19, 15321 typename T20, 15322 typename T21, 15323 typename T22, 15324 typename T23, 15325 typename T24, 15326 typename T25, 15327 typename T26, 15328 typename T27> 15329 struct functionImplementation_< 15330 T0, 15331 T1, 15332 T2, 15333 T3, 15334 T4, 15335 T5, 15336 T6, 15337 T7, 15338 T8, 15339 T9, 15340 T10, 15341 T11, 15342 T12, 15343 T13, 15344 T14, 15345 T15, 15346 T16, 15347 T17, 15348 T18, 15349 T19, 15350 T20, 15351 T21, 15352 T22, 15353 T23, 15354 T24, 15355 T25, 15356 T26, 15357 T27, 15358 NullType, 15359 NullType, 15360 NullType, 15361 NullType, 15362 NullType, 15363 NullType, 15364 NullType, 15365 NullType, 15366 NullType, 15367 NullType, 15368 NullType, 15369 NullType, 15370 NullType, 15371 NullType, 15372 NullType, 15373 NullType, 15374 NullType, 15375 NullType, 15376 NullType, 15377 NullType, 15378 NullType, 15379 NullType, 15380 NullType, 15381 NullType, 15382 NullType, 15383 NullType, 15384 NullType, 15385 NullType, 15386 NullType, 15387 NullType, 15388 NullType, 15389 NullType, 15390 NullType, 15391 NullType, 15392 NullType, 15393 NullType, 15394 NullType, 15395 NullType, 15396 NullType, 15397 NullType, 15398 NullType, 15399 NullType, 15400 NullType, 15401 NullType, 15402 NullType, 15403 NullType, 15404 NullType, 15405 NullType, 15406 NullType, 15407 NullType, 15408 NullType, 15409 NullType, 15410 NullType, 15411 NullType, 15412 NullType, 15413 NullType, 15414 NullType, 15415 NullType, 15416 NullType, 15417 NullType, 15418 NullType, 15419 NullType, 15420 NullType, 15421 NullType, 15422 NullType, 15423 NullType, 15424 NullType, 15425 NullType, 15426 NullType, 15427 NullType, 15428 NullType, 15429 NullType, 15430 NullType, 15431 NullType, 15432 NullType, 15433 NullType, 15434 NullType, 15435 NullType, 15436 NullType, 15437 NullType, 15438 NullType, 15439 NullType, 15440 NullType, 15441 NullType, 15442 NullType, 15443 NullType, 15444 NullType, 15445 NullType, 15446 NullType, 15447 NullType, 15448 NullType, 15449 NullType, 15450 NullType, 15451 NullType, 15452 NullType, 15453 NullType, 15454 NullType, 15455 NullType, 15456 NullType, 15457 NullType> 15458 { 15459 typedef detail::KernelFunctorGlobal< 15460 T0, 15461 T1, 15462 T2, 15463 T3, 15464 T4, 15465 T5, 15466 T6, 15467 T7, 15468 T8, 15469 T9, 15470 T10, 15471 T11, 15472 T12, 15473 T13, 15474 T14, 15475 T15, 15476 T16, 15477 T17, 15478 T18, 15479 T19, 15480 T20, 15481 T21, 15482 T22, 15483 T23, 15484 T24, 15485 T25, 15486 T26, 15487 T27, 15488 NullType, 15489 NullType, 15490 NullType, 15491 NullType, 15492 NullType, 15493 NullType, 15494 NullType, 15495 NullType, 15496 NullType, 15497 NullType, 15498 NullType, 15499 NullType, 15500 NullType, 15501 NullType, 15502 NullType, 15503 NullType, 15504 NullType, 15505 NullType, 15506 NullType, 15507 NullType, 15508 NullType, 15509 NullType, 15510 NullType, 15511 NullType, 15512 NullType, 15513 NullType, 15514 NullType, 15515 NullType, 15516 NullType, 15517 NullType, 15518 NullType, 15519 NullType, 15520 NullType, 15521 NullType, 15522 NullType, 15523 NullType, 15524 NullType, 15525 NullType, 15526 NullType, 15527 NullType, 15528 NullType, 15529 NullType, 15530 NullType, 15531 NullType, 15532 NullType, 15533 NullType, 15534 NullType, 15535 NullType, 15536 NullType, 15537 NullType, 15538 NullType, 15539 NullType, 15540 NullType, 15541 NullType, 15542 NullType, 15543 NullType, 15544 NullType, 15545 NullType, 15546 NullType, 15547 NullType, 15548 NullType, 15549 NullType, 15550 NullType, 15551 NullType, 15552 NullType, 15553 NullType, 15554 NullType, 15555 NullType, 15556 NullType, 15557 NullType, 15558 NullType, 15559 NullType, 15560 NullType, 15561 NullType, 15562 NullType, 15563 NullType, 15564 NullType, 15565 NullType, 15566 NullType, 15567 NullType, 15568 NullType, 15569 NullType, 15570 NullType, 15571 NullType, 15572 NullType, 15573 NullType, 15574 NullType, 15575 NullType, 15576 NullType, 15577 NullType, 15578 NullType, 15579 NullType, 15580 NullType, 15581 NullType, 15582 NullType, 15583 NullType, 15584 NullType, 15585 NullType, 15586 NullType, 15587 NullType> FunctorType; 15588 15589 FunctorType functor_; 15590 15591 functionImplementation_(const FunctorType &functor) : 15592 functor_(functor) 15593 { 15594 } 15595 15596 typedef std::tr1::function<Event ( 15597 const EnqueueArgs&, 15598 T0, 15599 T1, 15600 T2, 15601 T3, 15602 T4, 15603 T5, 15604 T6, 15605 T7, 15606 T8, 15607 T9, 15608 T10, 15609 T11, 15610 T12, 15611 T13, 15612 T14, 15613 T15, 15614 T16, 15615 T17, 15616 T18, 15617 T19, 15618 T20, 15619 T21, 15620 T22, 15621 T23, 15622 T24, 15623 T25, 15624 T26, 15625 T27)> type_; 15626 15627 Event operator()(const EnqueueArgs& enqueueArgs, 15628 T0 arg0, 15629 T1 arg1, 15630 T2 arg2, 15631 T3 arg3, 15632 T4 arg4, 15633 T5 arg5, 15634 T6 arg6, 15635 T7 arg7, 15636 T8 arg8, 15637 T9 arg9, 15638 T10 arg10, 15639 T11 arg11, 15640 T12 arg12, 15641 T13 arg13, 15642 T14 arg14, 15643 T15 arg15, 15644 T16 arg16, 15645 T17 arg17, 15646 T18 arg18, 15647 T19 arg19, 15648 T20 arg20, 15649 T21 arg21, 15650 T22 arg22, 15651 T23 arg23, 15652 T24 arg24, 15653 T25 arg25, 15654 T26 arg26, 15655 T27 arg27) 15656 { 15657 return functor_( 15658 enqueueArgs, 15659 arg0, 15660 arg1, 15661 arg2, 15662 arg3, 15663 arg4, 15664 arg5, 15665 arg6, 15666 arg7, 15667 arg8, 15668 arg9, 15669 arg10, 15670 arg11, 15671 arg12, 15672 arg13, 15673 arg14, 15674 arg15, 15675 arg16, 15676 arg17, 15677 arg18, 15678 arg19, 15679 arg20, 15680 arg21, 15681 arg22, 15682 arg23, 15683 arg24, 15684 arg25, 15685 arg26, 15686 arg27); 15687 } 15688 15689 operator type_ () 15690 { 15691 return type_(*this); 15692 } 15693 15694 }; 15695 15696 template< 15697 typename T0, 15698 typename T1, 15699 typename T2, 15700 typename T3, 15701 typename T4, 15702 typename T5, 15703 typename T6, 15704 typename T7, 15705 typename T8, 15706 typename T9, 15707 typename T10, 15708 typename T11, 15709 typename T12, 15710 typename T13, 15711 typename T14, 15712 typename T15, 15713 typename T16, 15714 typename T17, 15715 typename T18, 15716 typename T19, 15717 typename T20, 15718 typename T21, 15719 typename T22, 15720 typename T23, 15721 typename T24, 15722 typename T25, 15723 typename T26, 15724 typename T27, 15725 typename T28> 15726 struct functionImplementation_< 15727 T0, 15728 T1, 15729 T2, 15730 T3, 15731 T4, 15732 T5, 15733 T6, 15734 T7, 15735 T8, 15736 T9, 15737 T10, 15738 T11, 15739 T12, 15740 T13, 15741 T14, 15742 T15, 15743 T16, 15744 T17, 15745 T18, 15746 T19, 15747 T20, 15748 T21, 15749 T22, 15750 T23, 15751 T24, 15752 T25, 15753 T26, 15754 T27, 15755 T28, 15756 NullType, 15757 NullType, 15758 NullType, 15759 NullType, 15760 NullType, 15761 NullType, 15762 NullType, 15763 NullType, 15764 NullType, 15765 NullType, 15766 NullType, 15767 NullType, 15768 NullType, 15769 NullType, 15770 NullType, 15771 NullType, 15772 NullType, 15773 NullType, 15774 NullType, 15775 NullType, 15776 NullType, 15777 NullType, 15778 NullType, 15779 NullType, 15780 NullType, 15781 NullType, 15782 NullType, 15783 NullType, 15784 NullType, 15785 NullType, 15786 NullType, 15787 NullType, 15788 NullType, 15789 NullType, 15790 NullType, 15791 NullType, 15792 NullType, 15793 NullType, 15794 NullType, 15795 NullType, 15796 NullType, 15797 NullType, 15798 NullType, 15799 NullType, 15800 NullType, 15801 NullType, 15802 NullType, 15803 NullType, 15804 NullType, 15805 NullType, 15806 NullType, 15807 NullType, 15808 NullType, 15809 NullType, 15810 NullType, 15811 NullType, 15812 NullType, 15813 NullType, 15814 NullType, 15815 NullType, 15816 NullType, 15817 NullType, 15818 NullType, 15819 NullType, 15820 NullType, 15821 NullType, 15822 NullType, 15823 NullType, 15824 NullType, 15825 NullType, 15826 NullType, 15827 NullType, 15828 NullType, 15829 NullType, 15830 NullType, 15831 NullType, 15832 NullType, 15833 NullType, 15834 NullType, 15835 NullType, 15836 NullType, 15837 NullType, 15838 NullType, 15839 NullType, 15840 NullType, 15841 NullType, 15842 NullType, 15843 NullType, 15844 NullType, 15845 NullType, 15846 NullType, 15847 NullType, 15848 NullType, 15849 NullType, 15850 NullType, 15851 NullType, 15852 NullType, 15853 NullType, 15854 NullType> 15855 { 15856 typedef detail::KernelFunctorGlobal< 15857 T0, 15858 T1, 15859 T2, 15860 T3, 15861 T4, 15862 T5, 15863 T6, 15864 T7, 15865 T8, 15866 T9, 15867 T10, 15868 T11, 15869 T12, 15870 T13, 15871 T14, 15872 T15, 15873 T16, 15874 T17, 15875 T18, 15876 T19, 15877 T20, 15878 T21, 15879 T22, 15880 T23, 15881 T24, 15882 T25, 15883 T26, 15884 T27, 15885 T28, 15886 NullType, 15887 NullType, 15888 NullType, 15889 NullType, 15890 NullType, 15891 NullType, 15892 NullType, 15893 NullType, 15894 NullType, 15895 NullType, 15896 NullType, 15897 NullType, 15898 NullType, 15899 NullType, 15900 NullType, 15901 NullType, 15902 NullType, 15903 NullType, 15904 NullType, 15905 NullType, 15906 NullType, 15907 NullType, 15908 NullType, 15909 NullType, 15910 NullType, 15911 NullType, 15912 NullType, 15913 NullType, 15914 NullType, 15915 NullType, 15916 NullType, 15917 NullType, 15918 NullType, 15919 NullType, 15920 NullType, 15921 NullType, 15922 NullType, 15923 NullType, 15924 NullType, 15925 NullType, 15926 NullType, 15927 NullType, 15928 NullType, 15929 NullType, 15930 NullType, 15931 NullType, 15932 NullType, 15933 NullType, 15934 NullType, 15935 NullType, 15936 NullType, 15937 NullType, 15938 NullType, 15939 NullType, 15940 NullType, 15941 NullType, 15942 NullType, 15943 NullType, 15944 NullType, 15945 NullType, 15946 NullType, 15947 NullType, 15948 NullType, 15949 NullType, 15950 NullType, 15951 NullType, 15952 NullType, 15953 NullType, 15954 NullType, 15955 NullType, 15956 NullType, 15957 NullType, 15958 NullType, 15959 NullType, 15960 NullType, 15961 NullType, 15962 NullType, 15963 NullType, 15964 NullType, 15965 NullType, 15966 NullType, 15967 NullType, 15968 NullType, 15969 NullType, 15970 NullType, 15971 NullType, 15972 NullType, 15973 NullType, 15974 NullType, 15975 NullType, 15976 NullType, 15977 NullType, 15978 NullType, 15979 NullType, 15980 NullType, 15981 NullType, 15982 NullType, 15983 NullType, 15984 NullType> FunctorType; 15985 15986 FunctorType functor_; 15987 15988 functionImplementation_(const FunctorType &functor) : 15989 functor_(functor) 15990 { 15991 } 15992 15993 typedef std::tr1::function<Event ( 15994 const EnqueueArgs&, 15995 T0, 15996 T1, 15997 T2, 15998 T3, 15999 T4, 16000 T5, 16001 T6, 16002 T7, 16003 T8, 16004 T9, 16005 T10, 16006 T11, 16007 T12, 16008 T13, 16009 T14, 16010 T15, 16011 T16, 16012 T17, 16013 T18, 16014 T19, 16015 T20, 16016 T21, 16017 T22, 16018 T23, 16019 T24, 16020 T25, 16021 T26, 16022 T27, 16023 T28)> type_; 16024 16025 Event operator()(const EnqueueArgs& enqueueArgs, 16026 T0 arg0, 16027 T1 arg1, 16028 T2 arg2, 16029 T3 arg3, 16030 T4 arg4, 16031 T5 arg5, 16032 T6 arg6, 16033 T7 arg7, 16034 T8 arg8, 16035 T9 arg9, 16036 T10 arg10, 16037 T11 arg11, 16038 T12 arg12, 16039 T13 arg13, 16040 T14 arg14, 16041 T15 arg15, 16042 T16 arg16, 16043 T17 arg17, 16044 T18 arg18, 16045 T19 arg19, 16046 T20 arg20, 16047 T21 arg21, 16048 T22 arg22, 16049 T23 arg23, 16050 T24 arg24, 16051 T25 arg25, 16052 T26 arg26, 16053 T27 arg27, 16054 T28 arg28) 16055 { 16056 return functor_( 16057 enqueueArgs, 16058 arg0, 16059 arg1, 16060 arg2, 16061 arg3, 16062 arg4, 16063 arg5, 16064 arg6, 16065 arg7, 16066 arg8, 16067 arg9, 16068 arg10, 16069 arg11, 16070 arg12, 16071 arg13, 16072 arg14, 16073 arg15, 16074 arg16, 16075 arg17, 16076 arg18, 16077 arg19, 16078 arg20, 16079 arg21, 16080 arg22, 16081 arg23, 16082 arg24, 16083 arg25, 16084 arg26, 16085 arg27, 16086 arg28); 16087 } 16088 16089 operator type_ () 16090 { 16091 return type_(*this); 16092 } 16093 16094 }; 16095 16096 template< 16097 typename T0, 16098 typename T1, 16099 typename T2, 16100 typename T3, 16101 typename T4, 16102 typename T5, 16103 typename T6, 16104 typename T7, 16105 typename T8, 16106 typename T9, 16107 typename T10, 16108 typename T11, 16109 typename T12, 16110 typename T13, 16111 typename T14, 16112 typename T15, 16113 typename T16, 16114 typename T17, 16115 typename T18, 16116 typename T19, 16117 typename T20, 16118 typename T21, 16119 typename T22, 16120 typename T23, 16121 typename T24, 16122 typename T25, 16123 typename T26, 16124 typename T27, 16125 typename T28, 16126 typename T29> 16127 struct functionImplementation_< 16128 T0, 16129 T1, 16130 T2, 16131 T3, 16132 T4, 16133 T5, 16134 T6, 16135 T7, 16136 T8, 16137 T9, 16138 T10, 16139 T11, 16140 T12, 16141 T13, 16142 T14, 16143 T15, 16144 T16, 16145 T17, 16146 T18, 16147 T19, 16148 T20, 16149 T21, 16150 T22, 16151 T23, 16152 T24, 16153 T25, 16154 T26, 16155 T27, 16156 T28, 16157 T29, 16158 NullType, 16159 NullType, 16160 NullType, 16161 NullType, 16162 NullType, 16163 NullType, 16164 NullType, 16165 NullType, 16166 NullType, 16167 NullType, 16168 NullType, 16169 NullType, 16170 NullType, 16171 NullType, 16172 NullType, 16173 NullType, 16174 NullType, 16175 NullType, 16176 NullType, 16177 NullType, 16178 NullType, 16179 NullType, 16180 NullType, 16181 NullType, 16182 NullType, 16183 NullType, 16184 NullType, 16185 NullType, 16186 NullType, 16187 NullType, 16188 NullType, 16189 NullType, 16190 NullType, 16191 NullType, 16192 NullType, 16193 NullType, 16194 NullType, 16195 NullType, 16196 NullType, 16197 NullType, 16198 NullType, 16199 NullType, 16200 NullType, 16201 NullType, 16202 NullType, 16203 NullType, 16204 NullType, 16205 NullType, 16206 NullType, 16207 NullType, 16208 NullType, 16209 NullType, 16210 NullType, 16211 NullType, 16212 NullType, 16213 NullType, 16214 NullType, 16215 NullType, 16216 NullType, 16217 NullType, 16218 NullType, 16219 NullType, 16220 NullType, 16221 NullType, 16222 NullType, 16223 NullType, 16224 NullType, 16225 NullType, 16226 NullType, 16227 NullType, 16228 NullType, 16229 NullType, 16230 NullType, 16231 NullType, 16232 NullType, 16233 NullType, 16234 NullType, 16235 NullType, 16236 NullType, 16237 NullType, 16238 NullType, 16239 NullType, 16240 NullType, 16241 NullType, 16242 NullType, 16243 NullType, 16244 NullType, 16245 NullType, 16246 NullType, 16247 NullType, 16248 NullType, 16249 NullType, 16250 NullType, 16251 NullType, 16252 NullType, 16253 NullType, 16254 NullType, 16255 NullType> 16256 { 16257 typedef detail::KernelFunctorGlobal< 16258 T0, 16259 T1, 16260 T2, 16261 T3, 16262 T4, 16263 T5, 16264 T6, 16265 T7, 16266 T8, 16267 T9, 16268 T10, 16269 T11, 16270 T12, 16271 T13, 16272 T14, 16273 T15, 16274 T16, 16275 T17, 16276 T18, 16277 T19, 16278 T20, 16279 T21, 16280 T22, 16281 T23, 16282 T24, 16283 T25, 16284 T26, 16285 T27, 16286 T28, 16287 T29, 16288 NullType, 16289 NullType, 16290 NullType, 16291 NullType, 16292 NullType, 16293 NullType, 16294 NullType, 16295 NullType, 16296 NullType, 16297 NullType, 16298 NullType, 16299 NullType, 16300 NullType, 16301 NullType, 16302 NullType, 16303 NullType, 16304 NullType, 16305 NullType, 16306 NullType, 16307 NullType, 16308 NullType, 16309 NullType, 16310 NullType, 16311 NullType, 16312 NullType, 16313 NullType, 16314 NullType, 16315 NullType, 16316 NullType, 16317 NullType, 16318 NullType, 16319 NullType, 16320 NullType, 16321 NullType, 16322 NullType, 16323 NullType, 16324 NullType, 16325 NullType, 16326 NullType, 16327 NullType, 16328 NullType, 16329 NullType, 16330 NullType, 16331 NullType, 16332 NullType, 16333 NullType, 16334 NullType, 16335 NullType, 16336 NullType, 16337 NullType, 16338 NullType, 16339 NullType, 16340 NullType, 16341 NullType, 16342 NullType, 16343 NullType, 16344 NullType, 16345 NullType, 16346 NullType, 16347 NullType, 16348 NullType, 16349 NullType, 16350 NullType, 16351 NullType, 16352 NullType, 16353 NullType, 16354 NullType, 16355 NullType, 16356 NullType, 16357 NullType, 16358 NullType, 16359 NullType, 16360 NullType, 16361 NullType, 16362 NullType, 16363 NullType, 16364 NullType, 16365 NullType, 16366 NullType, 16367 NullType, 16368 NullType, 16369 NullType, 16370 NullType, 16371 NullType, 16372 NullType, 16373 NullType, 16374 NullType, 16375 NullType, 16376 NullType, 16377 NullType, 16378 NullType, 16379 NullType, 16380 NullType, 16381 NullType, 16382 NullType, 16383 NullType, 16384 NullType, 16385 NullType> FunctorType; 16386 16387 FunctorType functor_; 16388 16389 functionImplementation_(const FunctorType &functor) : 16390 functor_(functor) 16391 { 16392 } 16393 16394 typedef std::tr1::function<Event ( 16395 const EnqueueArgs&, 16396 T0, 16397 T1, 16398 T2, 16399 T3, 16400 T4, 16401 T5, 16402 T6, 16403 T7, 16404 T8, 16405 T9, 16406 T10, 16407 T11, 16408 T12, 16409 T13, 16410 T14, 16411 T15, 16412 T16, 16413 T17, 16414 T18, 16415 T19, 16416 T20, 16417 T21, 16418 T22, 16419 T23, 16420 T24, 16421 T25, 16422 T26, 16423 T27, 16424 T28, 16425 T29)> type_; 16426 16427 Event operator()(const EnqueueArgs& enqueueArgs, 16428 T0 arg0, 16429 T1 arg1, 16430 T2 arg2, 16431 T3 arg3, 16432 T4 arg4, 16433 T5 arg5, 16434 T6 arg6, 16435 T7 arg7, 16436 T8 arg8, 16437 T9 arg9, 16438 T10 arg10, 16439 T11 arg11, 16440 T12 arg12, 16441 T13 arg13, 16442 T14 arg14, 16443 T15 arg15, 16444 T16 arg16, 16445 T17 arg17, 16446 T18 arg18, 16447 T19 arg19, 16448 T20 arg20, 16449 T21 arg21, 16450 T22 arg22, 16451 T23 arg23, 16452 T24 arg24, 16453 T25 arg25, 16454 T26 arg26, 16455 T27 arg27, 16456 T28 arg28, 16457 T29 arg29) 16458 { 16459 return functor_( 16460 enqueueArgs, 16461 arg0, 16462 arg1, 16463 arg2, 16464 arg3, 16465 arg4, 16466 arg5, 16467 arg6, 16468 arg7, 16469 arg8, 16470 arg9, 16471 arg10, 16472 arg11, 16473 arg12, 16474 arg13, 16475 arg14, 16476 arg15, 16477 arg16, 16478 arg17, 16479 arg18, 16480 arg19, 16481 arg20, 16482 arg21, 16483 arg22, 16484 arg23, 16485 arg24, 16486 arg25, 16487 arg26, 16488 arg27, 16489 arg28, 16490 arg29); 16491 } 16492 16493 operator type_ () 16494 { 16495 return type_(*this); 16496 } 16497 16498 }; 16499 16500 template< 16501 typename T0, 16502 typename T1, 16503 typename T2, 16504 typename T3, 16505 typename T4, 16506 typename T5, 16507 typename T6, 16508 typename T7, 16509 typename T8, 16510 typename T9, 16511 typename T10, 16512 typename T11, 16513 typename T12, 16514 typename T13, 16515 typename T14, 16516 typename T15, 16517 typename T16, 16518 typename T17, 16519 typename T18, 16520 typename T19, 16521 typename T20, 16522 typename T21, 16523 typename T22, 16524 typename T23, 16525 typename T24, 16526 typename T25, 16527 typename T26, 16528 typename T27, 16529 typename T28, 16530 typename T29, 16531 typename T30> 16532 struct functionImplementation_< 16533 T0, 16534 T1, 16535 T2, 16536 T3, 16537 T4, 16538 T5, 16539 T6, 16540 T7, 16541 T8, 16542 T9, 16543 T10, 16544 T11, 16545 T12, 16546 T13, 16547 T14, 16548 T15, 16549 T16, 16550 T17, 16551 T18, 16552 T19, 16553 T20, 16554 T21, 16555 T22, 16556 T23, 16557 T24, 16558 T25, 16559 T26, 16560 T27, 16561 T28, 16562 T29, 16563 T30, 16564 NullType, 16565 NullType, 16566 NullType, 16567 NullType, 16568 NullType, 16569 NullType, 16570 NullType, 16571 NullType, 16572 NullType, 16573 NullType, 16574 NullType, 16575 NullType, 16576 NullType, 16577 NullType, 16578 NullType, 16579 NullType, 16580 NullType, 16581 NullType, 16582 NullType, 16583 NullType, 16584 NullType, 16585 NullType, 16586 NullType, 16587 NullType, 16588 NullType, 16589 NullType, 16590 NullType, 16591 NullType, 16592 NullType, 16593 NullType, 16594 NullType, 16595 NullType, 16596 NullType, 16597 NullType, 16598 NullType, 16599 NullType, 16600 NullType, 16601 NullType, 16602 NullType, 16603 NullType, 16604 NullType, 16605 NullType, 16606 NullType, 16607 NullType, 16608 NullType, 16609 NullType, 16610 NullType, 16611 NullType, 16612 NullType, 16613 NullType, 16614 NullType, 16615 NullType, 16616 NullType, 16617 NullType, 16618 NullType, 16619 NullType, 16620 NullType, 16621 NullType, 16622 NullType, 16623 NullType, 16624 NullType, 16625 NullType, 16626 NullType, 16627 NullType, 16628 NullType, 16629 NullType, 16630 NullType, 16631 NullType, 16632 NullType, 16633 NullType, 16634 NullType, 16635 NullType, 16636 NullType, 16637 NullType, 16638 NullType, 16639 NullType, 16640 NullType, 16641 NullType, 16642 NullType, 16643 NullType, 16644 NullType, 16645 NullType, 16646 NullType, 16647 NullType, 16648 NullType, 16649 NullType, 16650 NullType, 16651 NullType, 16652 NullType, 16653 NullType, 16654 NullType, 16655 NullType, 16656 NullType, 16657 NullType, 16658 NullType, 16659 NullType, 16660 NullType> 16661 { 16662 typedef detail::KernelFunctorGlobal< 16663 T0, 16664 T1, 16665 T2, 16666 T3, 16667 T4, 16668 T5, 16669 T6, 16670 T7, 16671 T8, 16672 T9, 16673 T10, 16674 T11, 16675 T12, 16676 T13, 16677 T14, 16678 T15, 16679 T16, 16680 T17, 16681 T18, 16682 T19, 16683 T20, 16684 T21, 16685 T22, 16686 T23, 16687 T24, 16688 T25, 16689 T26, 16690 T27, 16691 T28, 16692 T29, 16693 T30, 16694 NullType, 16695 NullType, 16696 NullType, 16697 NullType, 16698 NullType, 16699 NullType, 16700 NullType, 16701 NullType, 16702 NullType, 16703 NullType, 16704 NullType, 16705 NullType, 16706 NullType, 16707 NullType, 16708 NullType, 16709 NullType, 16710 NullType, 16711 NullType, 16712 NullType, 16713 NullType, 16714 NullType, 16715 NullType, 16716 NullType, 16717 NullType, 16718 NullType, 16719 NullType, 16720 NullType, 16721 NullType, 16722 NullType, 16723 NullType, 16724 NullType, 16725 NullType, 16726 NullType, 16727 NullType, 16728 NullType, 16729 NullType, 16730 NullType, 16731 NullType, 16732 NullType, 16733 NullType, 16734 NullType, 16735 NullType, 16736 NullType, 16737 NullType, 16738 NullType, 16739 NullType, 16740 NullType, 16741 NullType, 16742 NullType, 16743 NullType, 16744 NullType, 16745 NullType, 16746 NullType, 16747 NullType, 16748 NullType, 16749 NullType, 16750 NullType, 16751 NullType, 16752 NullType, 16753 NullType, 16754 NullType, 16755 NullType, 16756 NullType, 16757 NullType, 16758 NullType, 16759 NullType, 16760 NullType, 16761 NullType, 16762 NullType, 16763 NullType, 16764 NullType, 16765 NullType, 16766 NullType, 16767 NullType, 16768 NullType, 16769 NullType, 16770 NullType, 16771 NullType, 16772 NullType, 16773 NullType, 16774 NullType, 16775 NullType, 16776 NullType, 16777 NullType, 16778 NullType, 16779 NullType, 16780 NullType, 16781 NullType, 16782 NullType, 16783 NullType, 16784 NullType, 16785 NullType, 16786 NullType, 16787 NullType, 16788 NullType, 16789 NullType, 16790 NullType> FunctorType; 16791 16792 FunctorType functor_; 16793 16794 functionImplementation_(const FunctorType &functor) : 16795 functor_(functor) 16796 { 16797 } 16798 16799 typedef std::tr1::function<Event ( 16800 const EnqueueArgs&, 16801 T0, 16802 T1, 16803 T2, 16804 T3, 16805 T4, 16806 T5, 16807 T6, 16808 T7, 16809 T8, 16810 T9, 16811 T10, 16812 T11, 16813 T12, 16814 T13, 16815 T14, 16816 T15, 16817 T16, 16818 T17, 16819 T18, 16820 T19, 16821 T20, 16822 T21, 16823 T22, 16824 T23, 16825 T24, 16826 T25, 16827 T26, 16828 T27, 16829 T28, 16830 T29, 16831 T30)> type_; 16832 16833 Event operator()(const EnqueueArgs& enqueueArgs, 16834 T0 arg0, 16835 T1 arg1, 16836 T2 arg2, 16837 T3 arg3, 16838 T4 arg4, 16839 T5 arg5, 16840 T6 arg6, 16841 T7 arg7, 16842 T8 arg8, 16843 T9 arg9, 16844 T10 arg10, 16845 T11 arg11, 16846 T12 arg12, 16847 T13 arg13, 16848 T14 arg14, 16849 T15 arg15, 16850 T16 arg16, 16851 T17 arg17, 16852 T18 arg18, 16853 T19 arg19, 16854 T20 arg20, 16855 T21 arg21, 16856 T22 arg22, 16857 T23 arg23, 16858 T24 arg24, 16859 T25 arg25, 16860 T26 arg26, 16861 T27 arg27, 16862 T28 arg28, 16863 T29 arg29, 16864 T30 arg30) 16865 { 16866 return functor_( 16867 enqueueArgs, 16868 arg0, 16869 arg1, 16870 arg2, 16871 arg3, 16872 arg4, 16873 arg5, 16874 arg6, 16875 arg7, 16876 arg8, 16877 arg9, 16878 arg10, 16879 arg11, 16880 arg12, 16881 arg13, 16882 arg14, 16883 arg15, 16884 arg16, 16885 arg17, 16886 arg18, 16887 arg19, 16888 arg20, 16889 arg21, 16890 arg22, 16891 arg23, 16892 arg24, 16893 arg25, 16894 arg26, 16895 arg27, 16896 arg28, 16897 arg29, 16898 arg30); 16899 } 16900 16901 operator type_ () 16902 { 16903 return type_(*this); 16904 } 16905 16906 }; 16907 16908 template< 16909 typename T0, 16910 typename T1, 16911 typename T2, 16912 typename T3, 16913 typename T4, 16914 typename T5, 16915 typename T6, 16916 typename T7, 16917 typename T8, 16918 typename T9, 16919 typename T10, 16920 typename T11, 16921 typename T12, 16922 typename T13, 16923 typename T14, 16924 typename T15, 16925 typename T16, 16926 typename T17, 16927 typename T18, 16928 typename T19, 16929 typename T20, 16930 typename T21, 16931 typename T22, 16932 typename T23, 16933 typename T24, 16934 typename T25, 16935 typename T26, 16936 typename T27, 16937 typename T28, 16938 typename T29, 16939 typename T30, 16940 typename T31> 16941 struct functionImplementation_< 16942 T0, 16943 T1, 16944 T2, 16945 T3, 16946 T4, 16947 T5, 16948 T6, 16949 T7, 16950 T8, 16951 T9, 16952 T10, 16953 T11, 16954 T12, 16955 T13, 16956 T14, 16957 T15, 16958 T16, 16959 T17, 16960 T18, 16961 T19, 16962 T20, 16963 T21, 16964 T22, 16965 T23, 16966 T24, 16967 T25, 16968 T26, 16969 T27, 16970 T28, 16971 T29, 16972 T30, 16973 T31, 16974 NullType, 16975 NullType, 16976 NullType, 16977 NullType, 16978 NullType, 16979 NullType, 16980 NullType, 16981 NullType, 16982 NullType, 16983 NullType, 16984 NullType, 16985 NullType, 16986 NullType, 16987 NullType, 16988 NullType, 16989 NullType, 16990 NullType, 16991 NullType, 16992 NullType, 16993 NullType, 16994 NullType, 16995 NullType, 16996 NullType, 16997 NullType, 16998 NullType, 16999 NullType, 17000 NullType, 17001 NullType, 17002 NullType, 17003 NullType, 17004 NullType, 17005 NullType, 17006 NullType, 17007 NullType, 17008 NullType, 17009 NullType, 17010 NullType, 17011 NullType, 17012 NullType, 17013 NullType, 17014 NullType, 17015 NullType, 17016 NullType, 17017 NullType, 17018 NullType, 17019 NullType, 17020 NullType, 17021 NullType, 17022 NullType, 17023 NullType, 17024 NullType, 17025 NullType, 17026 NullType, 17027 NullType, 17028 NullType, 17029 NullType, 17030 NullType, 17031 NullType, 17032 NullType, 17033 NullType, 17034 NullType, 17035 NullType, 17036 NullType, 17037 NullType, 17038 NullType, 17039 NullType, 17040 NullType, 17041 NullType, 17042 NullType, 17043 NullType, 17044 NullType, 17045 NullType, 17046 NullType, 17047 NullType, 17048 NullType, 17049 NullType, 17050 NullType, 17051 NullType, 17052 NullType, 17053 NullType, 17054 NullType, 17055 NullType, 17056 NullType, 17057 NullType, 17058 NullType, 17059 NullType, 17060 NullType, 17061 NullType, 17062 NullType, 17063 NullType, 17064 NullType, 17065 NullType, 17066 NullType, 17067 NullType, 17068 NullType, 17069 NullType> 17070 { 17071 typedef detail::KernelFunctorGlobal< 17072 T0, 17073 T1, 17074 T2, 17075 T3, 17076 T4, 17077 T5, 17078 T6, 17079 T7, 17080 T8, 17081 T9, 17082 T10, 17083 T11, 17084 T12, 17085 T13, 17086 T14, 17087 T15, 17088 T16, 17089 T17, 17090 T18, 17091 T19, 17092 T20, 17093 T21, 17094 T22, 17095 T23, 17096 T24, 17097 T25, 17098 T26, 17099 T27, 17100 T28, 17101 T29, 17102 T30, 17103 T31, 17104 NullType, 17105 NullType, 17106 NullType, 17107 NullType, 17108 NullType, 17109 NullType, 17110 NullType, 17111 NullType, 17112 NullType, 17113 NullType, 17114 NullType, 17115 NullType, 17116 NullType, 17117 NullType, 17118 NullType, 17119 NullType, 17120 NullType, 17121 NullType, 17122 NullType, 17123 NullType, 17124 NullType, 17125 NullType, 17126 NullType, 17127 NullType, 17128 NullType, 17129 NullType, 17130 NullType, 17131 NullType, 17132 NullType, 17133 NullType, 17134 NullType, 17135 NullType, 17136 NullType, 17137 NullType, 17138 NullType, 17139 NullType, 17140 NullType, 17141 NullType, 17142 NullType, 17143 NullType, 17144 NullType, 17145 NullType, 17146 NullType, 17147 NullType, 17148 NullType, 17149 NullType, 17150 NullType, 17151 NullType, 17152 NullType, 17153 NullType, 17154 NullType, 17155 NullType, 17156 NullType, 17157 NullType, 17158 NullType, 17159 NullType, 17160 NullType, 17161 NullType, 17162 NullType, 17163 NullType, 17164 NullType, 17165 NullType, 17166 NullType, 17167 NullType, 17168 NullType, 17169 NullType, 17170 NullType, 17171 NullType, 17172 NullType, 17173 NullType, 17174 NullType, 17175 NullType, 17176 NullType, 17177 NullType, 17178 NullType, 17179 NullType, 17180 NullType, 17181 NullType, 17182 NullType, 17183 NullType, 17184 NullType, 17185 NullType, 17186 NullType, 17187 NullType, 17188 NullType, 17189 NullType, 17190 NullType, 17191 NullType, 17192 NullType, 17193 NullType, 17194 NullType, 17195 NullType, 17196 NullType, 17197 NullType, 17198 NullType, 17199 NullType> FunctorType; 17200 17201 FunctorType functor_; 17202 17203 functionImplementation_(const FunctorType &functor) : 17204 functor_(functor) 17205 { 17206 } 17207 17208 typedef std::tr1::function<Event ( 17209 const EnqueueArgs&, 17210 T0, 17211 T1, 17212 T2, 17213 T3, 17214 T4, 17215 T5, 17216 T6, 17217 T7, 17218 T8, 17219 T9, 17220 T10, 17221 T11, 17222 T12, 17223 T13, 17224 T14, 17225 T15, 17226 T16, 17227 T17, 17228 T18, 17229 T19, 17230 T20, 17231 T21, 17232 T22, 17233 T23, 17234 T24, 17235 T25, 17236 T26, 17237 T27, 17238 T28, 17239 T29, 17240 T30, 17241 T31)> type_; 17242 17243 Event operator()(const EnqueueArgs& enqueueArgs, 17244 T0 arg0, 17245 T1 arg1, 17246 T2 arg2, 17247 T3 arg3, 17248 T4 arg4, 17249 T5 arg5, 17250 T6 arg6, 17251 T7 arg7, 17252 T8 arg8, 17253 T9 arg9, 17254 T10 arg10, 17255 T11 arg11, 17256 T12 arg12, 17257 T13 arg13, 17258 T14 arg14, 17259 T15 arg15, 17260 T16 arg16, 17261 T17 arg17, 17262 T18 arg18, 17263 T19 arg19, 17264 T20 arg20, 17265 T21 arg21, 17266 T22 arg22, 17267 T23 arg23, 17268 T24 arg24, 17269 T25 arg25, 17270 T26 arg26, 17271 T27 arg27, 17272 T28 arg28, 17273 T29 arg29, 17274 T30 arg30, 17275 T31 arg31) 17276 { 17277 return functor_( 17278 enqueueArgs, 17279 arg0, 17280 arg1, 17281 arg2, 17282 arg3, 17283 arg4, 17284 arg5, 17285 arg6, 17286 arg7, 17287 arg8, 17288 arg9, 17289 arg10, 17290 arg11, 17291 arg12, 17292 arg13, 17293 arg14, 17294 arg15, 17295 arg16, 17296 arg17, 17297 arg18, 17298 arg19, 17299 arg20, 17300 arg21, 17301 arg22, 17302 arg23, 17303 arg24, 17304 arg25, 17305 arg26, 17306 arg27, 17307 arg28, 17308 arg29, 17309 arg30, 17310 arg31); 17311 } 17312 17313 operator type_ () 17314 { 17315 return type_(*this); 17316 } 17317 17318 }; 17319 17320 template< 17321 typename T0, 17322 typename T1, 17323 typename T2, 17324 typename T3, 17325 typename T4, 17326 typename T5, 17327 typename T6, 17328 typename T7, 17329 typename T8, 17330 typename T9, 17331 typename T10, 17332 typename T11, 17333 typename T12, 17334 typename T13, 17335 typename T14, 17336 typename T15, 17337 typename T16, 17338 typename T17, 17339 typename T18, 17340 typename T19, 17341 typename T20, 17342 typename T21, 17343 typename T22, 17344 typename T23, 17345 typename T24, 17346 typename T25, 17347 typename T26, 17348 typename T27, 17349 typename T28, 17350 typename T29, 17351 typename T30, 17352 typename T31, 17353 typename T32> 17354 struct functionImplementation_< 17355 T0, 17356 T1, 17357 T2, 17358 T3, 17359 T4, 17360 T5, 17361 T6, 17362 T7, 17363 T8, 17364 T9, 17365 T10, 17366 T11, 17367 T12, 17368 T13, 17369 T14, 17370 T15, 17371 T16, 17372 T17, 17373 T18, 17374 T19, 17375 T20, 17376 T21, 17377 T22, 17378 T23, 17379 T24, 17380 T25, 17381 T26, 17382 T27, 17383 T28, 17384 T29, 17385 T30, 17386 T31, 17387 T32, 17388 NullType, 17389 NullType, 17390 NullType, 17391 NullType, 17392 NullType, 17393 NullType, 17394 NullType, 17395 NullType, 17396 NullType, 17397 NullType, 17398 NullType, 17399 NullType, 17400 NullType, 17401 NullType, 17402 NullType, 17403 NullType, 17404 NullType, 17405 NullType, 17406 NullType, 17407 NullType, 17408 NullType, 17409 NullType, 17410 NullType, 17411 NullType, 17412 NullType, 17413 NullType, 17414 NullType, 17415 NullType, 17416 NullType, 17417 NullType, 17418 NullType, 17419 NullType, 17420 NullType, 17421 NullType, 17422 NullType, 17423 NullType, 17424 NullType, 17425 NullType, 17426 NullType, 17427 NullType, 17428 NullType, 17429 NullType, 17430 NullType, 17431 NullType, 17432 NullType, 17433 NullType, 17434 NullType, 17435 NullType, 17436 NullType, 17437 NullType, 17438 NullType, 17439 NullType, 17440 NullType, 17441 NullType, 17442 NullType, 17443 NullType, 17444 NullType, 17445 NullType, 17446 NullType, 17447 NullType, 17448 NullType, 17449 NullType, 17450 NullType, 17451 NullType, 17452 NullType, 17453 NullType, 17454 NullType, 17455 NullType, 17456 NullType, 17457 NullType, 17458 NullType, 17459 NullType, 17460 NullType, 17461 NullType, 17462 NullType, 17463 NullType, 17464 NullType, 17465 NullType, 17466 NullType, 17467 NullType, 17468 NullType, 17469 NullType, 17470 NullType, 17471 NullType, 17472 NullType, 17473 NullType, 17474 NullType, 17475 NullType, 17476 NullType, 17477 NullType, 17478 NullType, 17479 NullType, 17480 NullType, 17481 NullType, 17482 NullType> 17483 { 17484 typedef detail::KernelFunctorGlobal< 17485 T0, 17486 T1, 17487 T2, 17488 T3, 17489 T4, 17490 T5, 17491 T6, 17492 T7, 17493 T8, 17494 T9, 17495 T10, 17496 T11, 17497 T12, 17498 T13, 17499 T14, 17500 T15, 17501 T16, 17502 T17, 17503 T18, 17504 T19, 17505 T20, 17506 T21, 17507 T22, 17508 T23, 17509 T24, 17510 T25, 17511 T26, 17512 T27, 17513 T28, 17514 T29, 17515 T30, 17516 T31, 17517 T32, 17518 NullType, 17519 NullType, 17520 NullType, 17521 NullType, 17522 NullType, 17523 NullType, 17524 NullType, 17525 NullType, 17526 NullType, 17527 NullType, 17528 NullType, 17529 NullType, 17530 NullType, 17531 NullType, 17532 NullType, 17533 NullType, 17534 NullType, 17535 NullType, 17536 NullType, 17537 NullType, 17538 NullType, 17539 NullType, 17540 NullType, 17541 NullType, 17542 NullType, 17543 NullType, 17544 NullType, 17545 NullType, 17546 NullType, 17547 NullType, 17548 NullType, 17549 NullType, 17550 NullType, 17551 NullType, 17552 NullType, 17553 NullType, 17554 NullType, 17555 NullType, 17556 NullType, 17557 NullType, 17558 NullType, 17559 NullType, 17560 NullType, 17561 NullType, 17562 NullType, 17563 NullType, 17564 NullType, 17565 NullType, 17566 NullType, 17567 NullType, 17568 NullType, 17569 NullType, 17570 NullType, 17571 NullType, 17572 NullType, 17573 NullType, 17574 NullType, 17575 NullType, 17576 NullType, 17577 NullType, 17578 NullType, 17579 NullType, 17580 NullType, 17581 NullType, 17582 NullType, 17583 NullType, 17584 NullType, 17585 NullType, 17586 NullType, 17587 NullType, 17588 NullType, 17589 NullType, 17590 NullType, 17591 NullType, 17592 NullType, 17593 NullType, 17594 NullType, 17595 NullType, 17596 NullType, 17597 NullType, 17598 NullType, 17599 NullType, 17600 NullType, 17601 NullType, 17602 NullType, 17603 NullType, 17604 NullType, 17605 NullType, 17606 NullType, 17607 NullType, 17608 NullType, 17609 NullType, 17610 NullType, 17611 NullType, 17612 NullType> FunctorType; 17613 17614 FunctorType functor_; 17615 17616 functionImplementation_(const FunctorType &functor) : 17617 functor_(functor) 17618 { 17619 } 17620 17621 typedef std::tr1::function<Event ( 17622 const EnqueueArgs&, 17623 T0, 17624 T1, 17625 T2, 17626 T3, 17627 T4, 17628 T5, 17629 T6, 17630 T7, 17631 T8, 17632 T9, 17633 T10, 17634 T11, 17635 T12, 17636 T13, 17637 T14, 17638 T15, 17639 T16, 17640 T17, 17641 T18, 17642 T19, 17643 T20, 17644 T21, 17645 T22, 17646 T23, 17647 T24, 17648 T25, 17649 T26, 17650 T27, 17651 T28, 17652 T29, 17653 T30, 17654 T31, 17655 T32)> type_; 17656 17657 Event operator()(const EnqueueArgs& enqueueArgs, 17658 T0 arg0, 17659 T1 arg1, 17660 T2 arg2, 17661 T3 arg3, 17662 T4 arg4, 17663 T5 arg5, 17664 T6 arg6, 17665 T7 arg7, 17666 T8 arg8, 17667 T9 arg9, 17668 T10 arg10, 17669 T11 arg11, 17670 T12 arg12, 17671 T13 arg13, 17672 T14 arg14, 17673 T15 arg15, 17674 T16 arg16, 17675 T17 arg17, 17676 T18 arg18, 17677 T19 arg19, 17678 T20 arg20, 17679 T21 arg21, 17680 T22 arg22, 17681 T23 arg23, 17682 T24 arg24, 17683 T25 arg25, 17684 T26 arg26, 17685 T27 arg27, 17686 T28 arg28, 17687 T29 arg29, 17688 T30 arg30, 17689 T31 arg31, 17690 T32 arg32) 17691 { 17692 return functor_( 17693 enqueueArgs, 17694 arg0, 17695 arg1, 17696 arg2, 17697 arg3, 17698 arg4, 17699 arg5, 17700 arg6, 17701 arg7, 17702 arg8, 17703 arg9, 17704 arg10, 17705 arg11, 17706 arg12, 17707 arg13, 17708 arg14, 17709 arg15, 17710 arg16, 17711 arg17, 17712 arg18, 17713 arg19, 17714 arg20, 17715 arg21, 17716 arg22, 17717 arg23, 17718 arg24, 17719 arg25, 17720 arg26, 17721 arg27, 17722 arg28, 17723 arg29, 17724 arg30, 17725 arg31, 17726 arg32); 17727 } 17728 17729 operator type_ () 17730 { 17731 return type_(*this); 17732 } 17733 17734 }; 17735 17736 template< 17737 typename T0, 17738 typename T1, 17739 typename T2, 17740 typename T3, 17741 typename T4, 17742 typename T5, 17743 typename T6, 17744 typename T7, 17745 typename T8, 17746 typename T9, 17747 typename T10, 17748 typename T11, 17749 typename T12, 17750 typename T13, 17751 typename T14, 17752 typename T15, 17753 typename T16, 17754 typename T17, 17755 typename T18, 17756 typename T19, 17757 typename T20, 17758 typename T21, 17759 typename T22, 17760 typename T23, 17761 typename T24, 17762 typename T25, 17763 typename T26, 17764 typename T27, 17765 typename T28, 17766 typename T29, 17767 typename T30, 17768 typename T31, 17769 typename T32, 17770 typename T33> 17771 struct functionImplementation_< 17772 T0, 17773 T1, 17774 T2, 17775 T3, 17776 T4, 17777 T5, 17778 T6, 17779 T7, 17780 T8, 17781 T9, 17782 T10, 17783 T11, 17784 T12, 17785 T13, 17786 T14, 17787 T15, 17788 T16, 17789 T17, 17790 T18, 17791 T19, 17792 T20, 17793 T21, 17794 T22, 17795 T23, 17796 T24, 17797 T25, 17798 T26, 17799 T27, 17800 T28, 17801 T29, 17802 T30, 17803 T31, 17804 T32, 17805 T33, 17806 NullType, 17807 NullType, 17808 NullType, 17809 NullType, 17810 NullType, 17811 NullType, 17812 NullType, 17813 NullType, 17814 NullType, 17815 NullType, 17816 NullType, 17817 NullType, 17818 NullType, 17819 NullType, 17820 NullType, 17821 NullType, 17822 NullType, 17823 NullType, 17824 NullType, 17825 NullType, 17826 NullType, 17827 NullType, 17828 NullType, 17829 NullType, 17830 NullType, 17831 NullType, 17832 NullType, 17833 NullType, 17834 NullType, 17835 NullType, 17836 NullType, 17837 NullType, 17838 NullType, 17839 NullType, 17840 NullType, 17841 NullType, 17842 NullType, 17843 NullType, 17844 NullType, 17845 NullType, 17846 NullType, 17847 NullType, 17848 NullType, 17849 NullType, 17850 NullType, 17851 NullType, 17852 NullType, 17853 NullType, 17854 NullType, 17855 NullType, 17856 NullType, 17857 NullType, 17858 NullType, 17859 NullType, 17860 NullType, 17861 NullType, 17862 NullType, 17863 NullType, 17864 NullType, 17865 NullType, 17866 NullType, 17867 NullType, 17868 NullType, 17869 NullType, 17870 NullType, 17871 NullType, 17872 NullType, 17873 NullType, 17874 NullType, 17875 NullType, 17876 NullType, 17877 NullType, 17878 NullType, 17879 NullType, 17880 NullType, 17881 NullType, 17882 NullType, 17883 NullType, 17884 NullType, 17885 NullType, 17886 NullType, 17887 NullType, 17888 NullType, 17889 NullType, 17890 NullType, 17891 NullType, 17892 NullType, 17893 NullType, 17894 NullType, 17895 NullType, 17896 NullType, 17897 NullType, 17898 NullType, 17899 NullType> 17900 { 17901 typedef detail::KernelFunctorGlobal< 17902 T0, 17903 T1, 17904 T2, 17905 T3, 17906 T4, 17907 T5, 17908 T6, 17909 T7, 17910 T8, 17911 T9, 17912 T10, 17913 T11, 17914 T12, 17915 T13, 17916 T14, 17917 T15, 17918 T16, 17919 T17, 17920 T18, 17921 T19, 17922 T20, 17923 T21, 17924 T22, 17925 T23, 17926 T24, 17927 T25, 17928 T26, 17929 T27, 17930 T28, 17931 T29, 17932 T30, 17933 T31, 17934 T32, 17935 T33, 17936 NullType, 17937 NullType, 17938 NullType, 17939 NullType, 17940 NullType, 17941 NullType, 17942 NullType, 17943 NullType, 17944 NullType, 17945 NullType, 17946 NullType, 17947 NullType, 17948 NullType, 17949 NullType, 17950 NullType, 17951 NullType, 17952 NullType, 17953 NullType, 17954 NullType, 17955 NullType, 17956 NullType, 17957 NullType, 17958 NullType, 17959 NullType, 17960 NullType, 17961 NullType, 17962 NullType, 17963 NullType, 17964 NullType, 17965 NullType, 17966 NullType, 17967 NullType, 17968 NullType, 17969 NullType, 17970 NullType, 17971 NullType, 17972 NullType, 17973 NullType, 17974 NullType, 17975 NullType, 17976 NullType, 17977 NullType, 17978 NullType, 17979 NullType, 17980 NullType, 17981 NullType, 17982 NullType, 17983 NullType, 17984 NullType, 17985 NullType, 17986 NullType, 17987 NullType, 17988 NullType, 17989 NullType, 17990 NullType, 17991 NullType, 17992 NullType, 17993 NullType, 17994 NullType, 17995 NullType, 17996 NullType, 17997 NullType, 17998 NullType, 17999 NullType, 18000 NullType, 18001 NullType, 18002 NullType, 18003 NullType, 18004 NullType, 18005 NullType, 18006 NullType, 18007 NullType, 18008 NullType, 18009 NullType, 18010 NullType, 18011 NullType, 18012 NullType, 18013 NullType, 18014 NullType, 18015 NullType, 18016 NullType, 18017 NullType, 18018 NullType, 18019 NullType, 18020 NullType, 18021 NullType, 18022 NullType, 18023 NullType, 18024 NullType, 18025 NullType, 18026 NullType, 18027 NullType, 18028 NullType, 18029 NullType> FunctorType; 18030 18031 FunctorType functor_; 18032 18033 functionImplementation_(const FunctorType &functor) : 18034 functor_(functor) 18035 { 18036 } 18037 18038 typedef std::tr1::function<Event ( 18039 const EnqueueArgs&, 18040 T0, 18041 T1, 18042 T2, 18043 T3, 18044 T4, 18045 T5, 18046 T6, 18047 T7, 18048 T8, 18049 T9, 18050 T10, 18051 T11, 18052 T12, 18053 T13, 18054 T14, 18055 T15, 18056 T16, 18057 T17, 18058 T18, 18059 T19, 18060 T20, 18061 T21, 18062 T22, 18063 T23, 18064 T24, 18065 T25, 18066 T26, 18067 T27, 18068 T28, 18069 T29, 18070 T30, 18071 T31, 18072 T32, 18073 T33)> type_; 18074 18075 Event operator()(const EnqueueArgs& enqueueArgs, 18076 T0 arg0, 18077 T1 arg1, 18078 T2 arg2, 18079 T3 arg3, 18080 T4 arg4, 18081 T5 arg5, 18082 T6 arg6, 18083 T7 arg7, 18084 T8 arg8, 18085 T9 arg9, 18086 T10 arg10, 18087 T11 arg11, 18088 T12 arg12, 18089 T13 arg13, 18090 T14 arg14, 18091 T15 arg15, 18092 T16 arg16, 18093 T17 arg17, 18094 T18 arg18, 18095 T19 arg19, 18096 T20 arg20, 18097 T21 arg21, 18098 T22 arg22, 18099 T23 arg23, 18100 T24 arg24, 18101 T25 arg25, 18102 T26 arg26, 18103 T27 arg27, 18104 T28 arg28, 18105 T29 arg29, 18106 T30 arg30, 18107 T31 arg31, 18108 T32 arg32, 18109 T33 arg33) 18110 { 18111 return functor_( 18112 enqueueArgs, 18113 arg0, 18114 arg1, 18115 arg2, 18116 arg3, 18117 arg4, 18118 arg5, 18119 arg6, 18120 arg7, 18121 arg8, 18122 arg9, 18123 arg10, 18124 arg11, 18125 arg12, 18126 arg13, 18127 arg14, 18128 arg15, 18129 arg16, 18130 arg17, 18131 arg18, 18132 arg19, 18133 arg20, 18134 arg21, 18135 arg22, 18136 arg23, 18137 arg24, 18138 arg25, 18139 arg26, 18140 arg27, 18141 arg28, 18142 arg29, 18143 arg30, 18144 arg31, 18145 arg32, 18146 arg33); 18147 } 18148 18149 operator type_ () 18150 { 18151 return type_(*this); 18152 } 18153 18154 }; 18155 18156 template< 18157 typename T0, 18158 typename T1, 18159 typename T2, 18160 typename T3, 18161 typename T4, 18162 typename T5, 18163 typename T6, 18164 typename T7, 18165 typename T8, 18166 typename T9, 18167 typename T10, 18168 typename T11, 18169 typename T12, 18170 typename T13, 18171 typename T14, 18172 typename T15, 18173 typename T16, 18174 typename T17, 18175 typename T18, 18176 typename T19, 18177 typename T20, 18178 typename T21, 18179 typename T22, 18180 typename T23, 18181 typename T24, 18182 typename T25, 18183 typename T26, 18184 typename T27, 18185 typename T28, 18186 typename T29, 18187 typename T30, 18188 typename T31, 18189 typename T32, 18190 typename T33, 18191 typename T34> 18192 struct functionImplementation_< 18193 T0, 18194 T1, 18195 T2, 18196 T3, 18197 T4, 18198 T5, 18199 T6, 18200 T7, 18201 T8, 18202 T9, 18203 T10, 18204 T11, 18205 T12, 18206 T13, 18207 T14, 18208 T15, 18209 T16, 18210 T17, 18211 T18, 18212 T19, 18213 T20, 18214 T21, 18215 T22, 18216 T23, 18217 T24, 18218 T25, 18219 T26, 18220 T27, 18221 T28, 18222 T29, 18223 T30, 18224 T31, 18225 T32, 18226 T33, 18227 T34, 18228 NullType, 18229 NullType, 18230 NullType, 18231 NullType, 18232 NullType, 18233 NullType, 18234 NullType, 18235 NullType, 18236 NullType, 18237 NullType, 18238 NullType, 18239 NullType, 18240 NullType, 18241 NullType, 18242 NullType, 18243 NullType, 18244 NullType, 18245 NullType, 18246 NullType, 18247 NullType, 18248 NullType, 18249 NullType, 18250 NullType, 18251 NullType, 18252 NullType, 18253 NullType, 18254 NullType, 18255 NullType, 18256 NullType, 18257 NullType, 18258 NullType, 18259 NullType, 18260 NullType, 18261 NullType, 18262 NullType, 18263 NullType, 18264 NullType, 18265 NullType, 18266 NullType, 18267 NullType, 18268 NullType, 18269 NullType, 18270 NullType, 18271 NullType, 18272 NullType, 18273 NullType, 18274 NullType, 18275 NullType, 18276 NullType, 18277 NullType, 18278 NullType, 18279 NullType, 18280 NullType, 18281 NullType, 18282 NullType, 18283 NullType, 18284 NullType, 18285 NullType, 18286 NullType, 18287 NullType, 18288 NullType, 18289 NullType, 18290 NullType, 18291 NullType, 18292 NullType, 18293 NullType, 18294 NullType, 18295 NullType, 18296 NullType, 18297 NullType, 18298 NullType, 18299 NullType, 18300 NullType, 18301 NullType, 18302 NullType, 18303 NullType, 18304 NullType, 18305 NullType, 18306 NullType, 18307 NullType, 18308 NullType, 18309 NullType, 18310 NullType, 18311 NullType, 18312 NullType, 18313 NullType, 18314 NullType, 18315 NullType, 18316 NullType, 18317 NullType, 18318 NullType, 18319 NullType, 18320 NullType> 18321 { 18322 typedef detail::KernelFunctorGlobal< 18323 T0, 18324 T1, 18325 T2, 18326 T3, 18327 T4, 18328 T5, 18329 T6, 18330 T7, 18331 T8, 18332 T9, 18333 T10, 18334 T11, 18335 T12, 18336 T13, 18337 T14, 18338 T15, 18339 T16, 18340 T17, 18341 T18, 18342 T19, 18343 T20, 18344 T21, 18345 T22, 18346 T23, 18347 T24, 18348 T25, 18349 T26, 18350 T27, 18351 T28, 18352 T29, 18353 T30, 18354 T31, 18355 T32, 18356 T33, 18357 T34, 18358 NullType, 18359 NullType, 18360 NullType, 18361 NullType, 18362 NullType, 18363 NullType, 18364 NullType, 18365 NullType, 18366 NullType, 18367 NullType, 18368 NullType, 18369 NullType, 18370 NullType, 18371 NullType, 18372 NullType, 18373 NullType, 18374 NullType, 18375 NullType, 18376 NullType, 18377 NullType, 18378 NullType, 18379 NullType, 18380 NullType, 18381 NullType, 18382 NullType, 18383 NullType, 18384 NullType, 18385 NullType, 18386 NullType, 18387 NullType, 18388 NullType, 18389 NullType, 18390 NullType, 18391 NullType, 18392 NullType, 18393 NullType, 18394 NullType, 18395 NullType, 18396 NullType, 18397 NullType, 18398 NullType, 18399 NullType, 18400 NullType, 18401 NullType, 18402 NullType, 18403 NullType, 18404 NullType, 18405 NullType, 18406 NullType, 18407 NullType, 18408 NullType, 18409 NullType, 18410 NullType, 18411 NullType, 18412 NullType, 18413 NullType, 18414 NullType, 18415 NullType, 18416 NullType, 18417 NullType, 18418 NullType, 18419 NullType, 18420 NullType, 18421 NullType, 18422 NullType, 18423 NullType, 18424 NullType, 18425 NullType, 18426 NullType, 18427 NullType, 18428 NullType, 18429 NullType, 18430 NullType, 18431 NullType, 18432 NullType, 18433 NullType, 18434 NullType, 18435 NullType, 18436 NullType, 18437 NullType, 18438 NullType, 18439 NullType, 18440 NullType, 18441 NullType, 18442 NullType, 18443 NullType, 18444 NullType, 18445 NullType, 18446 NullType, 18447 NullType, 18448 NullType, 18449 NullType, 18450 NullType> FunctorType; 18451 18452 FunctorType functor_; 18453 18454 functionImplementation_(const FunctorType &functor) : 18455 functor_(functor) 18456 { 18457 } 18458 18459 typedef std::tr1::function<Event ( 18460 const EnqueueArgs&, 18461 T0, 18462 T1, 18463 T2, 18464 T3, 18465 T4, 18466 T5, 18467 T6, 18468 T7, 18469 T8, 18470 T9, 18471 T10, 18472 T11, 18473 T12, 18474 T13, 18475 T14, 18476 T15, 18477 T16, 18478 T17, 18479 T18, 18480 T19, 18481 T20, 18482 T21, 18483 T22, 18484 T23, 18485 T24, 18486 T25, 18487 T26, 18488 T27, 18489 T28, 18490 T29, 18491 T30, 18492 T31, 18493 T32, 18494 T33, 18495 T34)> type_; 18496 18497 Event operator()(const EnqueueArgs& enqueueArgs, 18498 T0 arg0, 18499 T1 arg1, 18500 T2 arg2, 18501 T3 arg3, 18502 T4 arg4, 18503 T5 arg5, 18504 T6 arg6, 18505 T7 arg7, 18506 T8 arg8, 18507 T9 arg9, 18508 T10 arg10, 18509 T11 arg11, 18510 T12 arg12, 18511 T13 arg13, 18512 T14 arg14, 18513 T15 arg15, 18514 T16 arg16, 18515 T17 arg17, 18516 T18 arg18, 18517 T19 arg19, 18518 T20 arg20, 18519 T21 arg21, 18520 T22 arg22, 18521 T23 arg23, 18522 T24 arg24, 18523 T25 arg25, 18524 T26 arg26, 18525 T27 arg27, 18526 T28 arg28, 18527 T29 arg29, 18528 T30 arg30, 18529 T31 arg31, 18530 T32 arg32, 18531 T33 arg33, 18532 T34 arg34) 18533 { 18534 return functor_( 18535 enqueueArgs, 18536 arg0, 18537 arg1, 18538 arg2, 18539 arg3, 18540 arg4, 18541 arg5, 18542 arg6, 18543 arg7, 18544 arg8, 18545 arg9, 18546 arg10, 18547 arg11, 18548 arg12, 18549 arg13, 18550 arg14, 18551 arg15, 18552 arg16, 18553 arg17, 18554 arg18, 18555 arg19, 18556 arg20, 18557 arg21, 18558 arg22, 18559 arg23, 18560 arg24, 18561 arg25, 18562 arg26, 18563 arg27, 18564 arg28, 18565 arg29, 18566 arg30, 18567 arg31, 18568 arg32, 18569 arg33, 18570 arg34); 18571 } 18572 18573 operator type_ () 18574 { 18575 return type_(*this); 18576 } 18577 18578 }; 18579 18580 template< 18581 typename T0, 18582 typename T1, 18583 typename T2, 18584 typename T3, 18585 typename T4, 18586 typename T5, 18587 typename T6, 18588 typename T7, 18589 typename T8, 18590 typename T9, 18591 typename T10, 18592 typename T11, 18593 typename T12, 18594 typename T13, 18595 typename T14, 18596 typename T15, 18597 typename T16, 18598 typename T17, 18599 typename T18, 18600 typename T19, 18601 typename T20, 18602 typename T21, 18603 typename T22, 18604 typename T23, 18605 typename T24, 18606 typename T25, 18607 typename T26, 18608 typename T27, 18609 typename T28, 18610 typename T29, 18611 typename T30, 18612 typename T31, 18613 typename T32, 18614 typename T33, 18615 typename T34, 18616 typename T35> 18617 struct functionImplementation_< 18618 T0, 18619 T1, 18620 T2, 18621 T3, 18622 T4, 18623 T5, 18624 T6, 18625 T7, 18626 T8, 18627 T9, 18628 T10, 18629 T11, 18630 T12, 18631 T13, 18632 T14, 18633 T15, 18634 T16, 18635 T17, 18636 T18, 18637 T19, 18638 T20, 18639 T21, 18640 T22, 18641 T23, 18642 T24, 18643 T25, 18644 T26, 18645 T27, 18646 T28, 18647 T29, 18648 T30, 18649 T31, 18650 T32, 18651 T33, 18652 T34, 18653 T35, 18654 NullType, 18655 NullType, 18656 NullType, 18657 NullType, 18658 NullType, 18659 NullType, 18660 NullType, 18661 NullType, 18662 NullType, 18663 NullType, 18664 NullType, 18665 NullType, 18666 NullType, 18667 NullType, 18668 NullType, 18669 NullType, 18670 NullType, 18671 NullType, 18672 NullType, 18673 NullType, 18674 NullType, 18675 NullType, 18676 NullType, 18677 NullType, 18678 NullType, 18679 NullType, 18680 NullType, 18681 NullType, 18682 NullType, 18683 NullType, 18684 NullType, 18685 NullType, 18686 NullType, 18687 NullType, 18688 NullType, 18689 NullType, 18690 NullType, 18691 NullType, 18692 NullType, 18693 NullType, 18694 NullType, 18695 NullType, 18696 NullType, 18697 NullType, 18698 NullType, 18699 NullType, 18700 NullType, 18701 NullType, 18702 NullType, 18703 NullType, 18704 NullType, 18705 NullType, 18706 NullType, 18707 NullType, 18708 NullType, 18709 NullType, 18710 NullType, 18711 NullType, 18712 NullType, 18713 NullType, 18714 NullType, 18715 NullType, 18716 NullType, 18717 NullType, 18718 NullType, 18719 NullType, 18720 NullType, 18721 NullType, 18722 NullType, 18723 NullType, 18724 NullType, 18725 NullType, 18726 NullType, 18727 NullType, 18728 NullType, 18729 NullType, 18730 NullType, 18731 NullType, 18732 NullType, 18733 NullType, 18734 NullType, 18735 NullType, 18736 NullType, 18737 NullType, 18738 NullType, 18739 NullType, 18740 NullType, 18741 NullType, 18742 NullType, 18743 NullType, 18744 NullType, 18745 NullType> 18746 { 18747 typedef detail::KernelFunctorGlobal< 18748 T0, 18749 T1, 18750 T2, 18751 T3, 18752 T4, 18753 T5, 18754 T6, 18755 T7, 18756 T8, 18757 T9, 18758 T10, 18759 T11, 18760 T12, 18761 T13, 18762 T14, 18763 T15, 18764 T16, 18765 T17, 18766 T18, 18767 T19, 18768 T20, 18769 T21, 18770 T22, 18771 T23, 18772 T24, 18773 T25, 18774 T26, 18775 T27, 18776 T28, 18777 T29, 18778 T30, 18779 T31, 18780 T32, 18781 T33, 18782 T34, 18783 T35, 18784 NullType, 18785 NullType, 18786 NullType, 18787 NullType, 18788 NullType, 18789 NullType, 18790 NullType, 18791 NullType, 18792 NullType, 18793 NullType, 18794 NullType, 18795 NullType, 18796 NullType, 18797 NullType, 18798 NullType, 18799 NullType, 18800 NullType, 18801 NullType, 18802 NullType, 18803 NullType, 18804 NullType, 18805 NullType, 18806 NullType, 18807 NullType, 18808 NullType, 18809 NullType, 18810 NullType, 18811 NullType, 18812 NullType, 18813 NullType, 18814 NullType, 18815 NullType, 18816 NullType, 18817 NullType, 18818 NullType, 18819 NullType, 18820 NullType, 18821 NullType, 18822 NullType, 18823 NullType, 18824 NullType, 18825 NullType, 18826 NullType, 18827 NullType, 18828 NullType, 18829 NullType, 18830 NullType, 18831 NullType, 18832 NullType, 18833 NullType, 18834 NullType, 18835 NullType, 18836 NullType, 18837 NullType, 18838 NullType, 18839 NullType, 18840 NullType, 18841 NullType, 18842 NullType, 18843 NullType, 18844 NullType, 18845 NullType, 18846 NullType, 18847 NullType, 18848 NullType, 18849 NullType, 18850 NullType, 18851 NullType, 18852 NullType, 18853 NullType, 18854 NullType, 18855 NullType, 18856 NullType, 18857 NullType, 18858 NullType, 18859 NullType, 18860 NullType, 18861 NullType, 18862 NullType, 18863 NullType, 18864 NullType, 18865 NullType, 18866 NullType, 18867 NullType, 18868 NullType, 18869 NullType, 18870 NullType, 18871 NullType, 18872 NullType, 18873 NullType, 18874 NullType, 18875 NullType> FunctorType; 18876 18877 FunctorType functor_; 18878 18879 functionImplementation_(const FunctorType &functor) : 18880 functor_(functor) 18881 { 18882 } 18883 18884 typedef std::tr1::function<Event ( 18885 const EnqueueArgs&, 18886 T0, 18887 T1, 18888 T2, 18889 T3, 18890 T4, 18891 T5, 18892 T6, 18893 T7, 18894 T8, 18895 T9, 18896 T10, 18897 T11, 18898 T12, 18899 T13, 18900 T14, 18901 T15, 18902 T16, 18903 T17, 18904 T18, 18905 T19, 18906 T20, 18907 T21, 18908 T22, 18909 T23, 18910 T24, 18911 T25, 18912 T26, 18913 T27, 18914 T28, 18915 T29, 18916 T30, 18917 T31, 18918 T32, 18919 T33, 18920 T34, 18921 T35)> type_; 18922 18923 Event operator()(const EnqueueArgs& enqueueArgs, 18924 T0 arg0, 18925 T1 arg1, 18926 T2 arg2, 18927 T3 arg3, 18928 T4 arg4, 18929 T5 arg5, 18930 T6 arg6, 18931 T7 arg7, 18932 T8 arg8, 18933 T9 arg9, 18934 T10 arg10, 18935 T11 arg11, 18936 T12 arg12, 18937 T13 arg13, 18938 T14 arg14, 18939 T15 arg15, 18940 T16 arg16, 18941 T17 arg17, 18942 T18 arg18, 18943 T19 arg19, 18944 T20 arg20, 18945 T21 arg21, 18946 T22 arg22, 18947 T23 arg23, 18948 T24 arg24, 18949 T25 arg25, 18950 T26 arg26, 18951 T27 arg27, 18952 T28 arg28, 18953 T29 arg29, 18954 T30 arg30, 18955 T31 arg31, 18956 T32 arg32, 18957 T33 arg33, 18958 T34 arg34, 18959 T35 arg35) 18960 { 18961 return functor_( 18962 enqueueArgs, 18963 arg0, 18964 arg1, 18965 arg2, 18966 arg3, 18967 arg4, 18968 arg5, 18969 arg6, 18970 arg7, 18971 arg8, 18972 arg9, 18973 arg10, 18974 arg11, 18975 arg12, 18976 arg13, 18977 arg14, 18978 arg15, 18979 arg16, 18980 arg17, 18981 arg18, 18982 arg19, 18983 arg20, 18984 arg21, 18985 arg22, 18986 arg23, 18987 arg24, 18988 arg25, 18989 arg26, 18990 arg27, 18991 arg28, 18992 arg29, 18993 arg30, 18994 arg31, 18995 arg32, 18996 arg33, 18997 arg34, 18998 arg35); 18999 } 19000 19001 operator type_ () 19002 { 19003 return type_(*this); 19004 } 19005 19006 }; 19007 19008 template< 19009 typename T0, 19010 typename T1, 19011 typename T2, 19012 typename T3, 19013 typename T4, 19014 typename T5, 19015 typename T6, 19016 typename T7, 19017 typename T8, 19018 typename T9, 19019 typename T10, 19020 typename T11, 19021 typename T12, 19022 typename T13, 19023 typename T14, 19024 typename T15, 19025 typename T16, 19026 typename T17, 19027 typename T18, 19028 typename T19, 19029 typename T20, 19030 typename T21, 19031 typename T22, 19032 typename T23, 19033 typename T24, 19034 typename T25, 19035 typename T26, 19036 typename T27, 19037 typename T28, 19038 typename T29, 19039 typename T30, 19040 typename T31, 19041 typename T32, 19042 typename T33, 19043 typename T34, 19044 typename T35, 19045 typename T36> 19046 struct functionImplementation_< 19047 T0, 19048 T1, 19049 T2, 19050 T3, 19051 T4, 19052 T5, 19053 T6, 19054 T7, 19055 T8, 19056 T9, 19057 T10, 19058 T11, 19059 T12, 19060 T13, 19061 T14, 19062 T15, 19063 T16, 19064 T17, 19065 T18, 19066 T19, 19067 T20, 19068 T21, 19069 T22, 19070 T23, 19071 T24, 19072 T25, 19073 T26, 19074 T27, 19075 T28, 19076 T29, 19077 T30, 19078 T31, 19079 T32, 19080 T33, 19081 T34, 19082 T35, 19083 T36, 19084 NullType, 19085 NullType, 19086 NullType, 19087 NullType, 19088 NullType, 19089 NullType, 19090 NullType, 19091 NullType, 19092 NullType, 19093 NullType, 19094 NullType, 19095 NullType, 19096 NullType, 19097 NullType, 19098 NullType, 19099 NullType, 19100 NullType, 19101 NullType, 19102 NullType, 19103 NullType, 19104 NullType, 19105 NullType, 19106 NullType, 19107 NullType, 19108 NullType, 19109 NullType, 19110 NullType, 19111 NullType, 19112 NullType, 19113 NullType, 19114 NullType, 19115 NullType, 19116 NullType, 19117 NullType, 19118 NullType, 19119 NullType, 19120 NullType, 19121 NullType, 19122 NullType, 19123 NullType, 19124 NullType, 19125 NullType, 19126 NullType, 19127 NullType, 19128 NullType, 19129 NullType, 19130 NullType, 19131 NullType, 19132 NullType, 19133 NullType, 19134 NullType, 19135 NullType, 19136 NullType, 19137 NullType, 19138 NullType, 19139 NullType, 19140 NullType, 19141 NullType, 19142 NullType, 19143 NullType, 19144 NullType, 19145 NullType, 19146 NullType, 19147 NullType, 19148 NullType, 19149 NullType, 19150 NullType, 19151 NullType, 19152 NullType, 19153 NullType, 19154 NullType, 19155 NullType, 19156 NullType, 19157 NullType, 19158 NullType, 19159 NullType, 19160 NullType, 19161 NullType, 19162 NullType, 19163 NullType, 19164 NullType, 19165 NullType, 19166 NullType, 19167 NullType, 19168 NullType, 19169 NullType, 19170 NullType, 19171 NullType, 19172 NullType, 19173 NullType, 19174 NullType> 19175 { 19176 typedef detail::KernelFunctorGlobal< 19177 T0, 19178 T1, 19179 T2, 19180 T3, 19181 T4, 19182 T5, 19183 T6, 19184 T7, 19185 T8, 19186 T9, 19187 T10, 19188 T11, 19189 T12, 19190 T13, 19191 T14, 19192 T15, 19193 T16, 19194 T17, 19195 T18, 19196 T19, 19197 T20, 19198 T21, 19199 T22, 19200 T23, 19201 T24, 19202 T25, 19203 T26, 19204 T27, 19205 T28, 19206 T29, 19207 T30, 19208 T31, 19209 T32, 19210 T33, 19211 T34, 19212 T35, 19213 T36, 19214 NullType, 19215 NullType, 19216 NullType, 19217 NullType, 19218 NullType, 19219 NullType, 19220 NullType, 19221 NullType, 19222 NullType, 19223 NullType, 19224 NullType, 19225 NullType, 19226 NullType, 19227 NullType, 19228 NullType, 19229 NullType, 19230 NullType, 19231 NullType, 19232 NullType, 19233 NullType, 19234 NullType, 19235 NullType, 19236 NullType, 19237 NullType, 19238 NullType, 19239 NullType, 19240 NullType, 19241 NullType, 19242 NullType, 19243 NullType, 19244 NullType, 19245 NullType, 19246 NullType, 19247 NullType, 19248 NullType, 19249 NullType, 19250 NullType, 19251 NullType, 19252 NullType, 19253 NullType, 19254 NullType, 19255 NullType, 19256 NullType, 19257 NullType, 19258 NullType, 19259 NullType, 19260 NullType, 19261 NullType, 19262 NullType, 19263 NullType, 19264 NullType, 19265 NullType, 19266 NullType, 19267 NullType, 19268 NullType, 19269 NullType, 19270 NullType, 19271 NullType, 19272 NullType, 19273 NullType, 19274 NullType, 19275 NullType, 19276 NullType, 19277 NullType, 19278 NullType, 19279 NullType, 19280 NullType, 19281 NullType, 19282 NullType, 19283 NullType, 19284 NullType, 19285 NullType, 19286 NullType, 19287 NullType, 19288 NullType, 19289 NullType, 19290 NullType, 19291 NullType, 19292 NullType, 19293 NullType, 19294 NullType, 19295 NullType, 19296 NullType, 19297 NullType, 19298 NullType, 19299 NullType, 19300 NullType, 19301 NullType, 19302 NullType, 19303 NullType, 19304 NullType> FunctorType; 19305 19306 FunctorType functor_; 19307 19308 functionImplementation_(const FunctorType &functor) : 19309 functor_(functor) 19310 { 19311 } 19312 19313 typedef std::tr1::function<Event ( 19314 const EnqueueArgs&, 19315 T0, 19316 T1, 19317 T2, 19318 T3, 19319 T4, 19320 T5, 19321 T6, 19322 T7, 19323 T8, 19324 T9, 19325 T10, 19326 T11, 19327 T12, 19328 T13, 19329 T14, 19330 T15, 19331 T16, 19332 T17, 19333 T18, 19334 T19, 19335 T20, 19336 T21, 19337 T22, 19338 T23, 19339 T24, 19340 T25, 19341 T26, 19342 T27, 19343 T28, 19344 T29, 19345 T30, 19346 T31, 19347 T32, 19348 T33, 19349 T34, 19350 T35, 19351 T36)> type_; 19352 19353 Event operator()(const EnqueueArgs& enqueueArgs, 19354 T0 arg0, 19355 T1 arg1, 19356 T2 arg2, 19357 T3 arg3, 19358 T4 arg4, 19359 T5 arg5, 19360 T6 arg6, 19361 T7 arg7, 19362 T8 arg8, 19363 T9 arg9, 19364 T10 arg10, 19365 T11 arg11, 19366 T12 arg12, 19367 T13 arg13, 19368 T14 arg14, 19369 T15 arg15, 19370 T16 arg16, 19371 T17 arg17, 19372 T18 arg18, 19373 T19 arg19, 19374 T20 arg20, 19375 T21 arg21, 19376 T22 arg22, 19377 T23 arg23, 19378 T24 arg24, 19379 T25 arg25, 19380 T26 arg26, 19381 T27 arg27, 19382 T28 arg28, 19383 T29 arg29, 19384 T30 arg30, 19385 T31 arg31, 19386 T32 arg32, 19387 T33 arg33, 19388 T34 arg34, 19389 T35 arg35, 19390 T36 arg36) 19391 { 19392 return functor_( 19393 enqueueArgs, 19394 arg0, 19395 arg1, 19396 arg2, 19397 arg3, 19398 arg4, 19399 arg5, 19400 arg6, 19401 arg7, 19402 arg8, 19403 arg9, 19404 arg10, 19405 arg11, 19406 arg12, 19407 arg13, 19408 arg14, 19409 arg15, 19410 arg16, 19411 arg17, 19412 arg18, 19413 arg19, 19414 arg20, 19415 arg21, 19416 arg22, 19417 arg23, 19418 arg24, 19419 arg25, 19420 arg26, 19421 arg27, 19422 arg28, 19423 arg29, 19424 arg30, 19425 arg31, 19426 arg32, 19427 arg33, 19428 arg34, 19429 arg35, 19430 arg36); 19431 } 19432 19433 operator type_ () 19434 { 19435 return type_(*this); 19436 } 19437 19438 }; 19439 19440 template< 19441 typename T0, 19442 typename T1, 19443 typename T2, 19444 typename T3, 19445 typename T4, 19446 typename T5, 19447 typename T6, 19448 typename T7, 19449 typename T8, 19450 typename T9, 19451 typename T10, 19452 typename T11, 19453 typename T12, 19454 typename T13, 19455 typename T14, 19456 typename T15, 19457 typename T16, 19458 typename T17, 19459 typename T18, 19460 typename T19, 19461 typename T20, 19462 typename T21, 19463 typename T22, 19464 typename T23, 19465 typename T24, 19466 typename T25, 19467 typename T26, 19468 typename T27, 19469 typename T28, 19470 typename T29, 19471 typename T30, 19472 typename T31, 19473 typename T32, 19474 typename T33, 19475 typename T34, 19476 typename T35, 19477 typename T36, 19478 typename T37> 19479 struct functionImplementation_< 19480 T0, 19481 T1, 19482 T2, 19483 T3, 19484 T4, 19485 T5, 19486 T6, 19487 T7, 19488 T8, 19489 T9, 19490 T10, 19491 T11, 19492 T12, 19493 T13, 19494 T14, 19495 T15, 19496 T16, 19497 T17, 19498 T18, 19499 T19, 19500 T20, 19501 T21, 19502 T22, 19503 T23, 19504 T24, 19505 T25, 19506 T26, 19507 T27, 19508 T28, 19509 T29, 19510 T30, 19511 T31, 19512 T32, 19513 T33, 19514 T34, 19515 T35, 19516 T36, 19517 T37, 19518 NullType, 19519 NullType, 19520 NullType, 19521 NullType, 19522 NullType, 19523 NullType, 19524 NullType, 19525 NullType, 19526 NullType, 19527 NullType, 19528 NullType, 19529 NullType, 19530 NullType, 19531 NullType, 19532 NullType, 19533 NullType, 19534 NullType, 19535 NullType, 19536 NullType, 19537 NullType, 19538 NullType, 19539 NullType, 19540 NullType, 19541 NullType, 19542 NullType, 19543 NullType, 19544 NullType, 19545 NullType, 19546 NullType, 19547 NullType, 19548 NullType, 19549 NullType, 19550 NullType, 19551 NullType, 19552 NullType, 19553 NullType, 19554 NullType, 19555 NullType, 19556 NullType, 19557 NullType, 19558 NullType, 19559 NullType, 19560 NullType, 19561 NullType, 19562 NullType, 19563 NullType, 19564 NullType, 19565 NullType, 19566 NullType, 19567 NullType, 19568 NullType, 19569 NullType, 19570 NullType, 19571 NullType, 19572 NullType, 19573 NullType, 19574 NullType, 19575 NullType, 19576 NullType, 19577 NullType, 19578 NullType, 19579 NullType, 19580 NullType, 19581 NullType, 19582 NullType, 19583 NullType, 19584 NullType, 19585 NullType, 19586 NullType, 19587 NullType, 19588 NullType, 19589 NullType, 19590 NullType, 19591 NullType, 19592 NullType, 19593 NullType, 19594 NullType, 19595 NullType, 19596 NullType, 19597 NullType, 19598 NullType, 19599 NullType, 19600 NullType, 19601 NullType, 19602 NullType, 19603 NullType, 19604 NullType, 19605 NullType, 19606 NullType, 19607 NullType> 19608 { 19609 typedef detail::KernelFunctorGlobal< 19610 T0, 19611 T1, 19612 T2, 19613 T3, 19614 T4, 19615 T5, 19616 T6, 19617 T7, 19618 T8, 19619 T9, 19620 T10, 19621 T11, 19622 T12, 19623 T13, 19624 T14, 19625 T15, 19626 T16, 19627 T17, 19628 T18, 19629 T19, 19630 T20, 19631 T21, 19632 T22, 19633 T23, 19634 T24, 19635 T25, 19636 T26, 19637 T27, 19638 T28, 19639 T29, 19640 T30, 19641 T31, 19642 T32, 19643 T33, 19644 T34, 19645 T35, 19646 T36, 19647 T37, 19648 NullType, 19649 NullType, 19650 NullType, 19651 NullType, 19652 NullType, 19653 NullType, 19654 NullType, 19655 NullType, 19656 NullType, 19657 NullType, 19658 NullType, 19659 NullType, 19660 NullType, 19661 NullType, 19662 NullType, 19663 NullType, 19664 NullType, 19665 NullType, 19666 NullType, 19667 NullType, 19668 NullType, 19669 NullType, 19670 NullType, 19671 NullType, 19672 NullType, 19673 NullType, 19674 NullType, 19675 NullType, 19676 NullType, 19677 NullType, 19678 NullType, 19679 NullType, 19680 NullType, 19681 NullType, 19682 NullType, 19683 NullType, 19684 NullType, 19685 NullType, 19686 NullType, 19687 NullType, 19688 NullType, 19689 NullType, 19690 NullType, 19691 NullType, 19692 NullType, 19693 NullType, 19694 NullType, 19695 NullType, 19696 NullType, 19697 NullType, 19698 NullType, 19699 NullType, 19700 NullType, 19701 NullType, 19702 NullType, 19703 NullType, 19704 NullType, 19705 NullType, 19706 NullType, 19707 NullType, 19708 NullType, 19709 NullType, 19710 NullType, 19711 NullType, 19712 NullType, 19713 NullType, 19714 NullType, 19715 NullType, 19716 NullType, 19717 NullType, 19718 NullType, 19719 NullType, 19720 NullType, 19721 NullType, 19722 NullType, 19723 NullType, 19724 NullType, 19725 NullType, 19726 NullType, 19727 NullType, 19728 NullType, 19729 NullType, 19730 NullType, 19731 NullType, 19732 NullType, 19733 NullType, 19734 NullType, 19735 NullType, 19736 NullType, 19737 NullType> FunctorType; 19738 19739 FunctorType functor_; 19740 19741 functionImplementation_(const FunctorType &functor) : 19742 functor_(functor) 19743 { 19744 } 19745 19746 typedef std::tr1::function<Event ( 19747 const EnqueueArgs&, 19748 T0, 19749 T1, 19750 T2, 19751 T3, 19752 T4, 19753 T5, 19754 T6, 19755 T7, 19756 T8, 19757 T9, 19758 T10, 19759 T11, 19760 T12, 19761 T13, 19762 T14, 19763 T15, 19764 T16, 19765 T17, 19766 T18, 19767 T19, 19768 T20, 19769 T21, 19770 T22, 19771 T23, 19772 T24, 19773 T25, 19774 T26, 19775 T27, 19776 T28, 19777 T29, 19778 T30, 19779 T31, 19780 T32, 19781 T33, 19782 T34, 19783 T35, 19784 T36, 19785 T37)> type_; 19786 19787 Event operator()(const EnqueueArgs& enqueueArgs, 19788 T0 arg0, 19789 T1 arg1, 19790 T2 arg2, 19791 T3 arg3, 19792 T4 arg4, 19793 T5 arg5, 19794 T6 arg6, 19795 T7 arg7, 19796 T8 arg8, 19797 T9 arg9, 19798 T10 arg10, 19799 T11 arg11, 19800 T12 arg12, 19801 T13 arg13, 19802 T14 arg14, 19803 T15 arg15, 19804 T16 arg16, 19805 T17 arg17, 19806 T18 arg18, 19807 T19 arg19, 19808 T20 arg20, 19809 T21 arg21, 19810 T22 arg22, 19811 T23 arg23, 19812 T24 arg24, 19813 T25 arg25, 19814 T26 arg26, 19815 T27 arg27, 19816 T28 arg28, 19817 T29 arg29, 19818 T30 arg30, 19819 T31 arg31, 19820 T32 arg32, 19821 T33 arg33, 19822 T34 arg34, 19823 T35 arg35, 19824 T36 arg36, 19825 T37 arg37) 19826 { 19827 return functor_( 19828 enqueueArgs, 19829 arg0, 19830 arg1, 19831 arg2, 19832 arg3, 19833 arg4, 19834 arg5, 19835 arg6, 19836 arg7, 19837 arg8, 19838 arg9, 19839 arg10, 19840 arg11, 19841 arg12, 19842 arg13, 19843 arg14, 19844 arg15, 19845 arg16, 19846 arg17, 19847 arg18, 19848 arg19, 19849 arg20, 19850 arg21, 19851 arg22, 19852 arg23, 19853 arg24, 19854 arg25, 19855 arg26, 19856 arg27, 19857 arg28, 19858 arg29, 19859 arg30, 19860 arg31, 19861 arg32, 19862 arg33, 19863 arg34, 19864 arg35, 19865 arg36, 19866 arg37); 19867 } 19868 19869 operator type_ () 19870 { 19871 return type_(*this); 19872 } 19873 19874 }; 19875 19876 template< 19877 typename T0, 19878 typename T1, 19879 typename T2, 19880 typename T3, 19881 typename T4, 19882 typename T5, 19883 typename T6, 19884 typename T7, 19885 typename T8, 19886 typename T9, 19887 typename T10, 19888 typename T11, 19889 typename T12, 19890 typename T13, 19891 typename T14, 19892 typename T15, 19893 typename T16, 19894 typename T17, 19895 typename T18, 19896 typename T19, 19897 typename T20, 19898 typename T21, 19899 typename T22, 19900 typename T23, 19901 typename T24, 19902 typename T25, 19903 typename T26, 19904 typename T27, 19905 typename T28, 19906 typename T29, 19907 typename T30, 19908 typename T31, 19909 typename T32, 19910 typename T33, 19911 typename T34, 19912 typename T35, 19913 typename T36, 19914 typename T37, 19915 typename T38> 19916 struct functionImplementation_< 19917 T0, 19918 T1, 19919 T2, 19920 T3, 19921 T4, 19922 T5, 19923 T6, 19924 T7, 19925 T8, 19926 T9, 19927 T10, 19928 T11, 19929 T12, 19930 T13, 19931 T14, 19932 T15, 19933 T16, 19934 T17, 19935 T18, 19936 T19, 19937 T20, 19938 T21, 19939 T22, 19940 T23, 19941 T24, 19942 T25, 19943 T26, 19944 T27, 19945 T28, 19946 T29, 19947 T30, 19948 T31, 19949 T32, 19950 T33, 19951 T34, 19952 T35, 19953 T36, 19954 T37, 19955 T38, 19956 NullType, 19957 NullType, 19958 NullType, 19959 NullType, 19960 NullType, 19961 NullType, 19962 NullType, 19963 NullType, 19964 NullType, 19965 NullType, 19966 NullType, 19967 NullType, 19968 NullType, 19969 NullType, 19970 NullType, 19971 NullType, 19972 NullType, 19973 NullType, 19974 NullType, 19975 NullType, 19976 NullType, 19977 NullType, 19978 NullType, 19979 NullType, 19980 NullType, 19981 NullType, 19982 NullType, 19983 NullType, 19984 NullType, 19985 NullType, 19986 NullType, 19987 NullType, 19988 NullType, 19989 NullType, 19990 NullType, 19991 NullType, 19992 NullType, 19993 NullType, 19994 NullType, 19995 NullType, 19996 NullType, 19997 NullType, 19998 NullType, 19999 NullType, 20000 NullType, 20001 NullType, 20002 NullType, 20003 NullType, 20004 NullType, 20005 NullType, 20006 NullType, 20007 NullType, 20008 NullType, 20009 NullType, 20010 NullType, 20011 NullType, 20012 NullType, 20013 NullType, 20014 NullType, 20015 NullType, 20016 NullType, 20017 NullType, 20018 NullType, 20019 NullType, 20020 NullType, 20021 NullType, 20022 NullType, 20023 NullType, 20024 NullType, 20025 NullType, 20026 NullType, 20027 NullType, 20028 NullType, 20029 NullType, 20030 NullType, 20031 NullType, 20032 NullType, 20033 NullType, 20034 NullType, 20035 NullType, 20036 NullType, 20037 NullType, 20038 NullType, 20039 NullType, 20040 NullType, 20041 NullType, 20042 NullType, 20043 NullType, 20044 NullType> 20045 { 20046 typedef detail::KernelFunctorGlobal< 20047 T0, 20048 T1, 20049 T2, 20050 T3, 20051 T4, 20052 T5, 20053 T6, 20054 T7, 20055 T8, 20056 T9, 20057 T10, 20058 T11, 20059 T12, 20060 T13, 20061 T14, 20062 T15, 20063 T16, 20064 T17, 20065 T18, 20066 T19, 20067 T20, 20068 T21, 20069 T22, 20070 T23, 20071 T24, 20072 T25, 20073 T26, 20074 T27, 20075 T28, 20076 T29, 20077 T30, 20078 T31, 20079 T32, 20080 T33, 20081 T34, 20082 T35, 20083 T36, 20084 T37, 20085 T38, 20086 NullType, 20087 NullType, 20088 NullType, 20089 NullType, 20090 NullType, 20091 NullType, 20092 NullType, 20093 NullType, 20094 NullType, 20095 NullType, 20096 NullType, 20097 NullType, 20098 NullType, 20099 NullType, 20100 NullType, 20101 NullType, 20102 NullType, 20103 NullType, 20104 NullType, 20105 NullType, 20106 NullType, 20107 NullType, 20108 NullType, 20109 NullType, 20110 NullType, 20111 NullType, 20112 NullType, 20113 NullType, 20114 NullType, 20115 NullType, 20116 NullType, 20117 NullType, 20118 NullType, 20119 NullType, 20120 NullType, 20121 NullType, 20122 NullType, 20123 NullType, 20124 NullType, 20125 NullType, 20126 NullType, 20127 NullType, 20128 NullType, 20129 NullType, 20130 NullType, 20131 NullType, 20132 NullType, 20133 NullType, 20134 NullType, 20135 NullType, 20136 NullType, 20137 NullType, 20138 NullType, 20139 NullType, 20140 NullType, 20141 NullType, 20142 NullType, 20143 NullType, 20144 NullType, 20145 NullType, 20146 NullType, 20147 NullType, 20148 NullType, 20149 NullType, 20150 NullType, 20151 NullType, 20152 NullType, 20153 NullType, 20154 NullType, 20155 NullType, 20156 NullType, 20157 NullType, 20158 NullType, 20159 NullType, 20160 NullType, 20161 NullType, 20162 NullType, 20163 NullType, 20164 NullType, 20165 NullType, 20166 NullType, 20167 NullType, 20168 NullType, 20169 NullType, 20170 NullType, 20171 NullType, 20172 NullType, 20173 NullType, 20174 NullType> FunctorType; 20175 20176 FunctorType functor_; 20177 20178 functionImplementation_(const FunctorType &functor) : 20179 functor_(functor) 20180 { 20181 } 20182 20183 typedef std::tr1::function<Event ( 20184 const EnqueueArgs&, 20185 T0, 20186 T1, 20187 T2, 20188 T3, 20189 T4, 20190 T5, 20191 T6, 20192 T7, 20193 T8, 20194 T9, 20195 T10, 20196 T11, 20197 T12, 20198 T13, 20199 T14, 20200 T15, 20201 T16, 20202 T17, 20203 T18, 20204 T19, 20205 T20, 20206 T21, 20207 T22, 20208 T23, 20209 T24, 20210 T25, 20211 T26, 20212 T27, 20213 T28, 20214 T29, 20215 T30, 20216 T31, 20217 T32, 20218 T33, 20219 T34, 20220 T35, 20221 T36, 20222 T37, 20223 T38)> type_; 20224 20225 Event operator()(const EnqueueArgs& enqueueArgs, 20226 T0 arg0, 20227 T1 arg1, 20228 T2 arg2, 20229 T3 arg3, 20230 T4 arg4, 20231 T5 arg5, 20232 T6 arg6, 20233 T7 arg7, 20234 T8 arg8, 20235 T9 arg9, 20236 T10 arg10, 20237 T11 arg11, 20238 T12 arg12, 20239 T13 arg13, 20240 T14 arg14, 20241 T15 arg15, 20242 T16 arg16, 20243 T17 arg17, 20244 T18 arg18, 20245 T19 arg19, 20246 T20 arg20, 20247 T21 arg21, 20248 T22 arg22, 20249 T23 arg23, 20250 T24 arg24, 20251 T25 arg25, 20252 T26 arg26, 20253 T27 arg27, 20254 T28 arg28, 20255 T29 arg29, 20256 T30 arg30, 20257 T31 arg31, 20258 T32 arg32, 20259 T33 arg33, 20260 T34 arg34, 20261 T35 arg35, 20262 T36 arg36, 20263 T37 arg37, 20264 T38 arg38) 20265 { 20266 return functor_( 20267 enqueueArgs, 20268 arg0, 20269 arg1, 20270 arg2, 20271 arg3, 20272 arg4, 20273 arg5, 20274 arg6, 20275 arg7, 20276 arg8, 20277 arg9, 20278 arg10, 20279 arg11, 20280 arg12, 20281 arg13, 20282 arg14, 20283 arg15, 20284 arg16, 20285 arg17, 20286 arg18, 20287 arg19, 20288 arg20, 20289 arg21, 20290 arg22, 20291 arg23, 20292 arg24, 20293 arg25, 20294 arg26, 20295 arg27, 20296 arg28, 20297 arg29, 20298 arg30, 20299 arg31, 20300 arg32, 20301 arg33, 20302 arg34, 20303 arg35, 20304 arg36, 20305 arg37, 20306 arg38); 20307 } 20308 20309 operator type_ () 20310 { 20311 return type_(*this); 20312 } 20313 20314 }; 20315 20316 template< 20317 typename T0, 20318 typename T1, 20319 typename T2, 20320 typename T3, 20321 typename T4, 20322 typename T5, 20323 typename T6, 20324 typename T7, 20325 typename T8, 20326 typename T9, 20327 typename T10, 20328 typename T11, 20329 typename T12, 20330 typename T13, 20331 typename T14, 20332 typename T15, 20333 typename T16, 20334 typename T17, 20335 typename T18, 20336 typename T19, 20337 typename T20, 20338 typename T21, 20339 typename T22, 20340 typename T23, 20341 typename T24, 20342 typename T25, 20343 typename T26, 20344 typename T27, 20345 typename T28, 20346 typename T29, 20347 typename T30, 20348 typename T31, 20349 typename T32, 20350 typename T33, 20351 typename T34, 20352 typename T35, 20353 typename T36, 20354 typename T37, 20355 typename T38, 20356 typename T39> 20357 struct functionImplementation_< 20358 T0, 20359 T1, 20360 T2, 20361 T3, 20362 T4, 20363 T5, 20364 T6, 20365 T7, 20366 T8, 20367 T9, 20368 T10, 20369 T11, 20370 T12, 20371 T13, 20372 T14, 20373 T15, 20374 T16, 20375 T17, 20376 T18, 20377 T19, 20378 T20, 20379 T21, 20380 T22, 20381 T23, 20382 T24, 20383 T25, 20384 T26, 20385 T27, 20386 T28, 20387 T29, 20388 T30, 20389 T31, 20390 T32, 20391 T33, 20392 T34, 20393 T35, 20394 T36, 20395 T37, 20396 T38, 20397 T39, 20398 NullType, 20399 NullType, 20400 NullType, 20401 NullType, 20402 NullType, 20403 NullType, 20404 NullType, 20405 NullType, 20406 NullType, 20407 NullType, 20408 NullType, 20409 NullType, 20410 NullType, 20411 NullType, 20412 NullType, 20413 NullType, 20414 NullType, 20415 NullType, 20416 NullType, 20417 NullType, 20418 NullType, 20419 NullType, 20420 NullType, 20421 NullType, 20422 NullType, 20423 NullType, 20424 NullType, 20425 NullType, 20426 NullType, 20427 NullType, 20428 NullType, 20429 NullType, 20430 NullType, 20431 NullType, 20432 NullType, 20433 NullType, 20434 NullType, 20435 NullType, 20436 NullType, 20437 NullType, 20438 NullType, 20439 NullType, 20440 NullType, 20441 NullType, 20442 NullType, 20443 NullType, 20444 NullType, 20445 NullType, 20446 NullType, 20447 NullType, 20448 NullType, 20449 NullType, 20450 NullType, 20451 NullType, 20452 NullType, 20453 NullType, 20454 NullType, 20455 NullType, 20456 NullType, 20457 NullType, 20458 NullType, 20459 NullType, 20460 NullType, 20461 NullType, 20462 NullType, 20463 NullType, 20464 NullType, 20465 NullType, 20466 NullType, 20467 NullType, 20468 NullType, 20469 NullType, 20470 NullType, 20471 NullType, 20472 NullType, 20473 NullType, 20474 NullType, 20475 NullType, 20476 NullType, 20477 NullType, 20478 NullType, 20479 NullType, 20480 NullType, 20481 NullType, 20482 NullType, 20483 NullType, 20484 NullType, 20485 NullType> 20486 { 20487 typedef detail::KernelFunctorGlobal< 20488 T0, 20489 T1, 20490 T2, 20491 T3, 20492 T4, 20493 T5, 20494 T6, 20495 T7, 20496 T8, 20497 T9, 20498 T10, 20499 T11, 20500 T12, 20501 T13, 20502 T14, 20503 T15, 20504 T16, 20505 T17, 20506 T18, 20507 T19, 20508 T20, 20509 T21, 20510 T22, 20511 T23, 20512 T24, 20513 T25, 20514 T26, 20515 T27, 20516 T28, 20517 T29, 20518 T30, 20519 T31, 20520 T32, 20521 T33, 20522 T34, 20523 T35, 20524 T36, 20525 T37, 20526 T38, 20527 T39, 20528 NullType, 20529 NullType, 20530 NullType, 20531 NullType, 20532 NullType, 20533 NullType, 20534 NullType, 20535 NullType, 20536 NullType, 20537 NullType, 20538 NullType, 20539 NullType, 20540 NullType, 20541 NullType, 20542 NullType, 20543 NullType, 20544 NullType, 20545 NullType, 20546 NullType, 20547 NullType, 20548 NullType, 20549 NullType, 20550 NullType, 20551 NullType, 20552 NullType, 20553 NullType, 20554 NullType, 20555 NullType, 20556 NullType, 20557 NullType, 20558 NullType, 20559 NullType, 20560 NullType, 20561 NullType, 20562 NullType, 20563 NullType, 20564 NullType, 20565 NullType, 20566 NullType, 20567 NullType, 20568 NullType, 20569 NullType, 20570 NullType, 20571 NullType, 20572 NullType, 20573 NullType, 20574 NullType, 20575 NullType, 20576 NullType, 20577 NullType, 20578 NullType, 20579 NullType, 20580 NullType, 20581 NullType, 20582 NullType, 20583 NullType, 20584 NullType, 20585 NullType, 20586 NullType, 20587 NullType, 20588 NullType, 20589 NullType, 20590 NullType, 20591 NullType, 20592 NullType, 20593 NullType, 20594 NullType, 20595 NullType, 20596 NullType, 20597 NullType, 20598 NullType, 20599 NullType, 20600 NullType, 20601 NullType, 20602 NullType, 20603 NullType, 20604 NullType, 20605 NullType, 20606 NullType, 20607 NullType, 20608 NullType, 20609 NullType, 20610 NullType, 20611 NullType, 20612 NullType, 20613 NullType, 20614 NullType, 20615 NullType> FunctorType; 20616 20617 FunctorType functor_; 20618 20619 functionImplementation_(const FunctorType &functor) : 20620 functor_(functor) 20621 { 20622 } 20623 20624 typedef std::tr1::function<Event ( 20625 const EnqueueArgs&, 20626 T0, 20627 T1, 20628 T2, 20629 T3, 20630 T4, 20631 T5, 20632 T6, 20633 T7, 20634 T8, 20635 T9, 20636 T10, 20637 T11, 20638 T12, 20639 T13, 20640 T14, 20641 T15, 20642 T16, 20643 T17, 20644 T18, 20645 T19, 20646 T20, 20647 T21, 20648 T22, 20649 T23, 20650 T24, 20651 T25, 20652 T26, 20653 T27, 20654 T28, 20655 T29, 20656 T30, 20657 T31, 20658 T32, 20659 T33, 20660 T34, 20661 T35, 20662 T36, 20663 T37, 20664 T38, 20665 T39)> type_; 20666 20667 Event operator()(const EnqueueArgs& enqueueArgs, 20668 T0 arg0, 20669 T1 arg1, 20670 T2 arg2, 20671 T3 arg3, 20672 T4 arg4, 20673 T5 arg5, 20674 T6 arg6, 20675 T7 arg7, 20676 T8 arg8, 20677 T9 arg9, 20678 T10 arg10, 20679 T11 arg11, 20680 T12 arg12, 20681 T13 arg13, 20682 T14 arg14, 20683 T15 arg15, 20684 T16 arg16, 20685 T17 arg17, 20686 T18 arg18, 20687 T19 arg19, 20688 T20 arg20, 20689 T21 arg21, 20690 T22 arg22, 20691 T23 arg23, 20692 T24 arg24, 20693 T25 arg25, 20694 T26 arg26, 20695 T27 arg27, 20696 T28 arg28, 20697 T29 arg29, 20698 T30 arg30, 20699 T31 arg31, 20700 T32 arg32, 20701 T33 arg33, 20702 T34 arg34, 20703 T35 arg35, 20704 T36 arg36, 20705 T37 arg37, 20706 T38 arg38, 20707 T39 arg39) 20708 { 20709 return functor_( 20710 enqueueArgs, 20711 arg0, 20712 arg1, 20713 arg2, 20714 arg3, 20715 arg4, 20716 arg5, 20717 arg6, 20718 arg7, 20719 arg8, 20720 arg9, 20721 arg10, 20722 arg11, 20723 arg12, 20724 arg13, 20725 arg14, 20726 arg15, 20727 arg16, 20728 arg17, 20729 arg18, 20730 arg19, 20731 arg20, 20732 arg21, 20733 arg22, 20734 arg23, 20735 arg24, 20736 arg25, 20737 arg26, 20738 arg27, 20739 arg28, 20740 arg29, 20741 arg30, 20742 arg31, 20743 arg32, 20744 arg33, 20745 arg34, 20746 arg35, 20747 arg36, 20748 arg37, 20749 arg38, 20750 arg39); 20751 } 20752 20753 operator type_ () 20754 { 20755 return type_(*this); 20756 } 20757 20758 }; 20759 20760 template< 20761 typename T0, 20762 typename T1, 20763 typename T2, 20764 typename T3, 20765 typename T4, 20766 typename T5, 20767 typename T6, 20768 typename T7, 20769 typename T8, 20770 typename T9, 20771 typename T10, 20772 typename T11, 20773 typename T12, 20774 typename T13, 20775 typename T14, 20776 typename T15, 20777 typename T16, 20778 typename T17, 20779 typename T18, 20780 typename T19, 20781 typename T20, 20782 typename T21, 20783 typename T22, 20784 typename T23, 20785 typename T24, 20786 typename T25, 20787 typename T26, 20788 typename T27, 20789 typename T28, 20790 typename T29, 20791 typename T30, 20792 typename T31, 20793 typename T32, 20794 typename T33, 20795 typename T34, 20796 typename T35, 20797 typename T36, 20798 typename T37, 20799 typename T38, 20800 typename T39, 20801 typename T40> 20802 struct functionImplementation_< 20803 T0, 20804 T1, 20805 T2, 20806 T3, 20807 T4, 20808 T5, 20809 T6, 20810 T7, 20811 T8, 20812 T9, 20813 T10, 20814 T11, 20815 T12, 20816 T13, 20817 T14, 20818 T15, 20819 T16, 20820 T17, 20821 T18, 20822 T19, 20823 T20, 20824 T21, 20825 T22, 20826 T23, 20827 T24, 20828 T25, 20829 T26, 20830 T27, 20831 T28, 20832 T29, 20833 T30, 20834 T31, 20835 T32, 20836 T33, 20837 T34, 20838 T35, 20839 T36, 20840 T37, 20841 T38, 20842 T39, 20843 T40, 20844 NullType, 20845 NullType, 20846 NullType, 20847 NullType, 20848 NullType, 20849 NullType, 20850 NullType, 20851 NullType, 20852 NullType, 20853 NullType, 20854 NullType, 20855 NullType, 20856 NullType, 20857 NullType, 20858 NullType, 20859 NullType, 20860 NullType, 20861 NullType, 20862 NullType, 20863 NullType, 20864 NullType, 20865 NullType, 20866 NullType, 20867 NullType, 20868 NullType, 20869 NullType, 20870 NullType, 20871 NullType, 20872 NullType, 20873 NullType, 20874 NullType, 20875 NullType, 20876 NullType, 20877 NullType, 20878 NullType, 20879 NullType, 20880 NullType, 20881 NullType, 20882 NullType, 20883 NullType, 20884 NullType, 20885 NullType, 20886 NullType, 20887 NullType, 20888 NullType, 20889 NullType, 20890 NullType, 20891 NullType, 20892 NullType, 20893 NullType, 20894 NullType, 20895 NullType, 20896 NullType, 20897 NullType, 20898 NullType, 20899 NullType, 20900 NullType, 20901 NullType, 20902 NullType, 20903 NullType, 20904 NullType, 20905 NullType, 20906 NullType, 20907 NullType, 20908 NullType, 20909 NullType, 20910 NullType, 20911 NullType, 20912 NullType, 20913 NullType, 20914 NullType, 20915 NullType, 20916 NullType, 20917 NullType, 20918 NullType, 20919 NullType, 20920 NullType, 20921 NullType, 20922 NullType, 20923 NullType, 20924 NullType, 20925 NullType, 20926 NullType, 20927 NullType, 20928 NullType, 20929 NullType, 20930 NullType> 20931 { 20932 typedef detail::KernelFunctorGlobal< 20933 T0, 20934 T1, 20935 T2, 20936 T3, 20937 T4, 20938 T5, 20939 T6, 20940 T7, 20941 T8, 20942 T9, 20943 T10, 20944 T11, 20945 T12, 20946 T13, 20947 T14, 20948 T15, 20949 T16, 20950 T17, 20951 T18, 20952 T19, 20953 T20, 20954 T21, 20955 T22, 20956 T23, 20957 T24, 20958 T25, 20959 T26, 20960 T27, 20961 T28, 20962 T29, 20963 T30, 20964 T31, 20965 T32, 20966 T33, 20967 T34, 20968 T35, 20969 T36, 20970 T37, 20971 T38, 20972 T39, 20973 T40, 20974 NullType, 20975 NullType, 20976 NullType, 20977 NullType, 20978 NullType, 20979 NullType, 20980 NullType, 20981 NullType, 20982 NullType, 20983 NullType, 20984 NullType, 20985 NullType, 20986 NullType, 20987 NullType, 20988 NullType, 20989 NullType, 20990 NullType, 20991 NullType, 20992 NullType, 20993 NullType, 20994 NullType, 20995 NullType, 20996 NullType, 20997 NullType, 20998 NullType, 20999 NullType, 21000 NullType, 21001 NullType, 21002 NullType, 21003 NullType, 21004 NullType, 21005 NullType, 21006 NullType, 21007 NullType, 21008 NullType, 21009 NullType, 21010 NullType, 21011 NullType, 21012 NullType, 21013 NullType, 21014 NullType, 21015 NullType, 21016 NullType, 21017 NullType, 21018 NullType, 21019 NullType, 21020 NullType, 21021 NullType, 21022 NullType, 21023 NullType, 21024 NullType, 21025 NullType, 21026 NullType, 21027 NullType, 21028 NullType, 21029 NullType, 21030 NullType, 21031 NullType, 21032 NullType, 21033 NullType, 21034 NullType, 21035 NullType, 21036 NullType, 21037 NullType, 21038 NullType, 21039 NullType, 21040 NullType, 21041 NullType, 21042 NullType, 21043 NullType, 21044 NullType, 21045 NullType, 21046 NullType, 21047 NullType, 21048 NullType, 21049 NullType, 21050 NullType, 21051 NullType, 21052 NullType, 21053 NullType, 21054 NullType, 21055 NullType, 21056 NullType, 21057 NullType, 21058 NullType, 21059 NullType, 21060 NullType> FunctorType; 21061 21062 FunctorType functor_; 21063 21064 functionImplementation_(const FunctorType &functor) : 21065 functor_(functor) 21066 { 21067 } 21068 21069 typedef std::tr1::function<Event ( 21070 const EnqueueArgs&, 21071 T0, 21072 T1, 21073 T2, 21074 T3, 21075 T4, 21076 T5, 21077 T6, 21078 T7, 21079 T8, 21080 T9, 21081 T10, 21082 T11, 21083 T12, 21084 T13, 21085 T14, 21086 T15, 21087 T16, 21088 T17, 21089 T18, 21090 T19, 21091 T20, 21092 T21, 21093 T22, 21094 T23, 21095 T24, 21096 T25, 21097 T26, 21098 T27, 21099 T28, 21100 T29, 21101 T30, 21102 T31, 21103 T32, 21104 T33, 21105 T34, 21106 T35, 21107 T36, 21108 T37, 21109 T38, 21110 T39, 21111 T40)> type_; 21112 21113 Event operator()(const EnqueueArgs& enqueueArgs, 21114 T0 arg0, 21115 T1 arg1, 21116 T2 arg2, 21117 T3 arg3, 21118 T4 arg4, 21119 T5 arg5, 21120 T6 arg6, 21121 T7 arg7, 21122 T8 arg8, 21123 T9 arg9, 21124 T10 arg10, 21125 T11 arg11, 21126 T12 arg12, 21127 T13 arg13, 21128 T14 arg14, 21129 T15 arg15, 21130 T16 arg16, 21131 T17 arg17, 21132 T18 arg18, 21133 T19 arg19, 21134 T20 arg20, 21135 T21 arg21, 21136 T22 arg22, 21137 T23 arg23, 21138 T24 arg24, 21139 T25 arg25, 21140 T26 arg26, 21141 T27 arg27, 21142 T28 arg28, 21143 T29 arg29, 21144 T30 arg30, 21145 T31 arg31, 21146 T32 arg32, 21147 T33 arg33, 21148 T34 arg34, 21149 T35 arg35, 21150 T36 arg36, 21151 T37 arg37, 21152 T38 arg38, 21153 T39 arg39, 21154 T40 arg40) 21155 { 21156 return functor_( 21157 enqueueArgs, 21158 arg0, 21159 arg1, 21160 arg2, 21161 arg3, 21162 arg4, 21163 arg5, 21164 arg6, 21165 arg7, 21166 arg8, 21167 arg9, 21168 arg10, 21169 arg11, 21170 arg12, 21171 arg13, 21172 arg14, 21173 arg15, 21174 arg16, 21175 arg17, 21176 arg18, 21177 arg19, 21178 arg20, 21179 arg21, 21180 arg22, 21181 arg23, 21182 arg24, 21183 arg25, 21184 arg26, 21185 arg27, 21186 arg28, 21187 arg29, 21188 arg30, 21189 arg31, 21190 arg32, 21191 arg33, 21192 arg34, 21193 arg35, 21194 arg36, 21195 arg37, 21196 arg38, 21197 arg39, 21198 arg40); 21199 } 21200 21201 operator type_ () 21202 { 21203 return type_(*this); 21204 } 21205 21206 }; 21207 21208 template< 21209 typename T0, 21210 typename T1, 21211 typename T2, 21212 typename T3, 21213 typename T4, 21214 typename T5, 21215 typename T6, 21216 typename T7, 21217 typename T8, 21218 typename T9, 21219 typename T10, 21220 typename T11, 21221 typename T12, 21222 typename T13, 21223 typename T14, 21224 typename T15, 21225 typename T16, 21226 typename T17, 21227 typename T18, 21228 typename T19, 21229 typename T20, 21230 typename T21, 21231 typename T22, 21232 typename T23, 21233 typename T24, 21234 typename T25, 21235 typename T26, 21236 typename T27, 21237 typename T28, 21238 typename T29, 21239 typename T30, 21240 typename T31, 21241 typename T32, 21242 typename T33, 21243 typename T34, 21244 typename T35, 21245 typename T36, 21246 typename T37, 21247 typename T38, 21248 typename T39, 21249 typename T40, 21250 typename T41> 21251 struct functionImplementation_< 21252 T0, 21253 T1, 21254 T2, 21255 T3, 21256 T4, 21257 T5, 21258 T6, 21259 T7, 21260 T8, 21261 T9, 21262 T10, 21263 T11, 21264 T12, 21265 T13, 21266 T14, 21267 T15, 21268 T16, 21269 T17, 21270 T18, 21271 T19, 21272 T20, 21273 T21, 21274 T22, 21275 T23, 21276 T24, 21277 T25, 21278 T26, 21279 T27, 21280 T28, 21281 T29, 21282 T30, 21283 T31, 21284 T32, 21285 T33, 21286 T34, 21287 T35, 21288 T36, 21289 T37, 21290 T38, 21291 T39, 21292 T40, 21293 T41, 21294 NullType, 21295 NullType, 21296 NullType, 21297 NullType, 21298 NullType, 21299 NullType, 21300 NullType, 21301 NullType, 21302 NullType, 21303 NullType, 21304 NullType, 21305 NullType, 21306 NullType, 21307 NullType, 21308 NullType, 21309 NullType, 21310 NullType, 21311 NullType, 21312 NullType, 21313 NullType, 21314 NullType, 21315 NullType, 21316 NullType, 21317 NullType, 21318 NullType, 21319 NullType, 21320 NullType, 21321 NullType, 21322 NullType, 21323 NullType, 21324 NullType, 21325 NullType, 21326 NullType, 21327 NullType, 21328 NullType, 21329 NullType, 21330 NullType, 21331 NullType, 21332 NullType, 21333 NullType, 21334 NullType, 21335 NullType, 21336 NullType, 21337 NullType, 21338 NullType, 21339 NullType, 21340 NullType, 21341 NullType, 21342 NullType, 21343 NullType, 21344 NullType, 21345 NullType, 21346 NullType, 21347 NullType, 21348 NullType, 21349 NullType, 21350 NullType, 21351 NullType, 21352 NullType, 21353 NullType, 21354 NullType, 21355 NullType, 21356 NullType, 21357 NullType, 21358 NullType, 21359 NullType, 21360 NullType, 21361 NullType, 21362 NullType, 21363 NullType, 21364 NullType, 21365 NullType, 21366 NullType, 21367 NullType, 21368 NullType, 21369 NullType, 21370 NullType, 21371 NullType, 21372 NullType, 21373 NullType, 21374 NullType, 21375 NullType, 21376 NullType, 21377 NullType, 21378 NullType, 21379 NullType> 21380 { 21381 typedef detail::KernelFunctorGlobal< 21382 T0, 21383 T1, 21384 T2, 21385 T3, 21386 T4, 21387 T5, 21388 T6, 21389 T7, 21390 T8, 21391 T9, 21392 T10, 21393 T11, 21394 T12, 21395 T13, 21396 T14, 21397 T15, 21398 T16, 21399 T17, 21400 T18, 21401 T19, 21402 T20, 21403 T21, 21404 T22, 21405 T23, 21406 T24, 21407 T25, 21408 T26, 21409 T27, 21410 T28, 21411 T29, 21412 T30, 21413 T31, 21414 T32, 21415 T33, 21416 T34, 21417 T35, 21418 T36, 21419 T37, 21420 T38, 21421 T39, 21422 T40, 21423 T41, 21424 NullType, 21425 NullType, 21426 NullType, 21427 NullType, 21428 NullType, 21429 NullType, 21430 NullType, 21431 NullType, 21432 NullType, 21433 NullType, 21434 NullType, 21435 NullType, 21436 NullType, 21437 NullType, 21438 NullType, 21439 NullType, 21440 NullType, 21441 NullType, 21442 NullType, 21443 NullType, 21444 NullType, 21445 NullType, 21446 NullType, 21447 NullType, 21448 NullType, 21449 NullType, 21450 NullType, 21451 NullType, 21452 NullType, 21453 NullType, 21454 NullType, 21455 NullType, 21456 NullType, 21457 NullType, 21458 NullType, 21459 NullType, 21460 NullType, 21461 NullType, 21462 NullType, 21463 NullType, 21464 NullType, 21465 NullType, 21466 NullType, 21467 NullType, 21468 NullType, 21469 NullType, 21470 NullType, 21471 NullType, 21472 NullType, 21473 NullType, 21474 NullType, 21475 NullType, 21476 NullType, 21477 NullType, 21478 NullType, 21479 NullType, 21480 NullType, 21481 NullType, 21482 NullType, 21483 NullType, 21484 NullType, 21485 NullType, 21486 NullType, 21487 NullType, 21488 NullType, 21489 NullType, 21490 NullType, 21491 NullType, 21492 NullType, 21493 NullType, 21494 NullType, 21495 NullType, 21496 NullType, 21497 NullType, 21498 NullType, 21499 NullType, 21500 NullType, 21501 NullType, 21502 NullType, 21503 NullType, 21504 NullType, 21505 NullType, 21506 NullType, 21507 NullType, 21508 NullType, 21509 NullType> FunctorType; 21510 21511 FunctorType functor_; 21512 21513 functionImplementation_(const FunctorType &functor) : 21514 functor_(functor) 21515 { 21516 } 21517 21518 typedef std::tr1::function<Event ( 21519 const EnqueueArgs&, 21520 T0, 21521 T1, 21522 T2, 21523 T3, 21524 T4, 21525 T5, 21526 T6, 21527 T7, 21528 T8, 21529 T9, 21530 T10, 21531 T11, 21532 T12, 21533 T13, 21534 T14, 21535 T15, 21536 T16, 21537 T17, 21538 T18, 21539 T19, 21540 T20, 21541 T21, 21542 T22, 21543 T23, 21544 T24, 21545 T25, 21546 T26, 21547 T27, 21548 T28, 21549 T29, 21550 T30, 21551 T31, 21552 T32, 21553 T33, 21554 T34, 21555 T35, 21556 T36, 21557 T37, 21558 T38, 21559 T39, 21560 T40, 21561 T41)> type_; 21562 21563 Event operator()(const EnqueueArgs& enqueueArgs, 21564 T0 arg0, 21565 T1 arg1, 21566 T2 arg2, 21567 T3 arg3, 21568 T4 arg4, 21569 T5 arg5, 21570 T6 arg6, 21571 T7 arg7, 21572 T8 arg8, 21573 T9 arg9, 21574 T10 arg10, 21575 T11 arg11, 21576 T12 arg12, 21577 T13 arg13, 21578 T14 arg14, 21579 T15 arg15, 21580 T16 arg16, 21581 T17 arg17, 21582 T18 arg18, 21583 T19 arg19, 21584 T20 arg20, 21585 T21 arg21, 21586 T22 arg22, 21587 T23 arg23, 21588 T24 arg24, 21589 T25 arg25, 21590 T26 arg26, 21591 T27 arg27, 21592 T28 arg28, 21593 T29 arg29, 21594 T30 arg30, 21595 T31 arg31, 21596 T32 arg32, 21597 T33 arg33, 21598 T34 arg34, 21599 T35 arg35, 21600 T36 arg36, 21601 T37 arg37, 21602 T38 arg38, 21603 T39 arg39, 21604 T40 arg40, 21605 T41 arg41) 21606 { 21607 return functor_( 21608 enqueueArgs, 21609 arg0, 21610 arg1, 21611 arg2, 21612 arg3, 21613 arg4, 21614 arg5, 21615 arg6, 21616 arg7, 21617 arg8, 21618 arg9, 21619 arg10, 21620 arg11, 21621 arg12, 21622 arg13, 21623 arg14, 21624 arg15, 21625 arg16, 21626 arg17, 21627 arg18, 21628 arg19, 21629 arg20, 21630 arg21, 21631 arg22, 21632 arg23, 21633 arg24, 21634 arg25, 21635 arg26, 21636 arg27, 21637 arg28, 21638 arg29, 21639 arg30, 21640 arg31, 21641 arg32, 21642 arg33, 21643 arg34, 21644 arg35, 21645 arg36, 21646 arg37, 21647 arg38, 21648 arg39, 21649 arg40, 21650 arg41); 21651 } 21652 21653 operator type_ () 21654 { 21655 return type_(*this); 21656 } 21657 21658 }; 21659 21660 template< 21661 typename T0, 21662 typename T1, 21663 typename T2, 21664 typename T3, 21665 typename T4, 21666 typename T5, 21667 typename T6, 21668 typename T7, 21669 typename T8, 21670 typename T9, 21671 typename T10, 21672 typename T11, 21673 typename T12, 21674 typename T13, 21675 typename T14, 21676 typename T15, 21677 typename T16, 21678 typename T17, 21679 typename T18, 21680 typename T19, 21681 typename T20, 21682 typename T21, 21683 typename T22, 21684 typename T23, 21685 typename T24, 21686 typename T25, 21687 typename T26, 21688 typename T27, 21689 typename T28, 21690 typename T29, 21691 typename T30, 21692 typename T31, 21693 typename T32, 21694 typename T33, 21695 typename T34, 21696 typename T35, 21697 typename T36, 21698 typename T37, 21699 typename T38, 21700 typename T39, 21701 typename T40, 21702 typename T41, 21703 typename T42> 21704 struct functionImplementation_< 21705 T0, 21706 T1, 21707 T2, 21708 T3, 21709 T4, 21710 T5, 21711 T6, 21712 T7, 21713 T8, 21714 T9, 21715 T10, 21716 T11, 21717 T12, 21718 T13, 21719 T14, 21720 T15, 21721 T16, 21722 T17, 21723 T18, 21724 T19, 21725 T20, 21726 T21, 21727 T22, 21728 T23, 21729 T24, 21730 T25, 21731 T26, 21732 T27, 21733 T28, 21734 T29, 21735 T30, 21736 T31, 21737 T32, 21738 T33, 21739 T34, 21740 T35, 21741 T36, 21742 T37, 21743 T38, 21744 T39, 21745 T40, 21746 T41, 21747 T42, 21748 NullType, 21749 NullType, 21750 NullType, 21751 NullType, 21752 NullType, 21753 NullType, 21754 NullType, 21755 NullType, 21756 NullType, 21757 NullType, 21758 NullType, 21759 NullType, 21760 NullType, 21761 NullType, 21762 NullType, 21763 NullType, 21764 NullType, 21765 NullType, 21766 NullType, 21767 NullType, 21768 NullType, 21769 NullType, 21770 NullType, 21771 NullType, 21772 NullType, 21773 NullType, 21774 NullType, 21775 NullType, 21776 NullType, 21777 NullType, 21778 NullType, 21779 NullType, 21780 NullType, 21781 NullType, 21782 NullType, 21783 NullType, 21784 NullType, 21785 NullType, 21786 NullType, 21787 NullType, 21788 NullType, 21789 NullType, 21790 NullType, 21791 NullType, 21792 NullType, 21793 NullType, 21794 NullType, 21795 NullType, 21796 NullType, 21797 NullType, 21798 NullType, 21799 NullType, 21800 NullType, 21801 NullType, 21802 NullType, 21803 NullType, 21804 NullType, 21805 NullType, 21806 NullType, 21807 NullType, 21808 NullType, 21809 NullType, 21810 NullType, 21811 NullType, 21812 NullType, 21813 NullType, 21814 NullType, 21815 NullType, 21816 NullType, 21817 NullType, 21818 NullType, 21819 NullType, 21820 NullType, 21821 NullType, 21822 NullType, 21823 NullType, 21824 NullType, 21825 NullType, 21826 NullType, 21827 NullType, 21828 NullType, 21829 NullType, 21830 NullType, 21831 NullType, 21832 NullType> 21833 { 21834 typedef detail::KernelFunctorGlobal< 21835 T0, 21836 T1, 21837 T2, 21838 T3, 21839 T4, 21840 T5, 21841 T6, 21842 T7, 21843 T8, 21844 T9, 21845 T10, 21846 T11, 21847 T12, 21848 T13, 21849 T14, 21850 T15, 21851 T16, 21852 T17, 21853 T18, 21854 T19, 21855 T20, 21856 T21, 21857 T22, 21858 T23, 21859 T24, 21860 T25, 21861 T26, 21862 T27, 21863 T28, 21864 T29, 21865 T30, 21866 T31, 21867 T32, 21868 T33, 21869 T34, 21870 T35, 21871 T36, 21872 T37, 21873 T38, 21874 T39, 21875 T40, 21876 T41, 21877 T42, 21878 NullType, 21879 NullType, 21880 NullType, 21881 NullType, 21882 NullType, 21883 NullType, 21884 NullType, 21885 NullType, 21886 NullType, 21887 NullType, 21888 NullType, 21889 NullType, 21890 NullType, 21891 NullType, 21892 NullType, 21893 NullType, 21894 NullType, 21895 NullType, 21896 NullType, 21897 NullType, 21898 NullType, 21899 NullType, 21900 NullType, 21901 NullType, 21902 NullType, 21903 NullType, 21904 NullType, 21905 NullType, 21906 NullType, 21907 NullType, 21908 NullType, 21909 NullType, 21910 NullType, 21911 NullType, 21912 NullType, 21913 NullType, 21914 NullType, 21915 NullType, 21916 NullType, 21917 NullType, 21918 NullType, 21919 NullType, 21920 NullType, 21921 NullType, 21922 NullType, 21923 NullType, 21924 NullType, 21925 NullType, 21926 NullType, 21927 NullType, 21928 NullType, 21929 NullType, 21930 NullType, 21931 NullType, 21932 NullType, 21933 NullType, 21934 NullType, 21935 NullType, 21936 NullType, 21937 NullType, 21938 NullType, 21939 NullType, 21940 NullType, 21941 NullType, 21942 NullType, 21943 NullType, 21944 NullType, 21945 NullType, 21946 NullType, 21947 NullType, 21948 NullType, 21949 NullType, 21950 NullType, 21951 NullType, 21952 NullType, 21953 NullType, 21954 NullType, 21955 NullType, 21956 NullType, 21957 NullType, 21958 NullType, 21959 NullType, 21960 NullType, 21961 NullType, 21962 NullType> FunctorType; 21963 21964 FunctorType functor_; 21965 21966 functionImplementation_(const FunctorType &functor) : 21967 functor_(functor) 21968 { 21969 } 21970 21971 typedef std::tr1::function<Event ( 21972 const EnqueueArgs&, 21973 T0, 21974 T1, 21975 T2, 21976 T3, 21977 T4, 21978 T5, 21979 T6, 21980 T7, 21981 T8, 21982 T9, 21983 T10, 21984 T11, 21985 T12, 21986 T13, 21987 T14, 21988 T15, 21989 T16, 21990 T17, 21991 T18, 21992 T19, 21993 T20, 21994 T21, 21995 T22, 21996 T23, 21997 T24, 21998 T25, 21999 T26, 22000 T27, 22001 T28, 22002 T29, 22003 T30, 22004 T31, 22005 T32, 22006 T33, 22007 T34, 22008 T35, 22009 T36, 22010 T37, 22011 T38, 22012 T39, 22013 T40, 22014 T41, 22015 T42)> type_; 22016 22017 Event operator()(const EnqueueArgs& enqueueArgs, 22018 T0 arg0, 22019 T1 arg1, 22020 T2 arg2, 22021 T3 arg3, 22022 T4 arg4, 22023 T5 arg5, 22024 T6 arg6, 22025 T7 arg7, 22026 T8 arg8, 22027 T9 arg9, 22028 T10 arg10, 22029 T11 arg11, 22030 T12 arg12, 22031 T13 arg13, 22032 T14 arg14, 22033 T15 arg15, 22034 T16 arg16, 22035 T17 arg17, 22036 T18 arg18, 22037 T19 arg19, 22038 T20 arg20, 22039 T21 arg21, 22040 T22 arg22, 22041 T23 arg23, 22042 T24 arg24, 22043 T25 arg25, 22044 T26 arg26, 22045 T27 arg27, 22046 T28 arg28, 22047 T29 arg29, 22048 T30 arg30, 22049 T31 arg31, 22050 T32 arg32, 22051 T33 arg33, 22052 T34 arg34, 22053 T35 arg35, 22054 T36 arg36, 22055 T37 arg37, 22056 T38 arg38, 22057 T39 arg39, 22058 T40 arg40, 22059 T41 arg41, 22060 T42 arg42) 22061 { 22062 return functor_( 22063 enqueueArgs, 22064 arg0, 22065 arg1, 22066 arg2, 22067 arg3, 22068 arg4, 22069 arg5, 22070 arg6, 22071 arg7, 22072 arg8, 22073 arg9, 22074 arg10, 22075 arg11, 22076 arg12, 22077 arg13, 22078 arg14, 22079 arg15, 22080 arg16, 22081 arg17, 22082 arg18, 22083 arg19, 22084 arg20, 22085 arg21, 22086 arg22, 22087 arg23, 22088 arg24, 22089 arg25, 22090 arg26, 22091 arg27, 22092 arg28, 22093 arg29, 22094 arg30, 22095 arg31, 22096 arg32, 22097 arg33, 22098 arg34, 22099 arg35, 22100 arg36, 22101 arg37, 22102 arg38, 22103 arg39, 22104 arg40, 22105 arg41, 22106 arg42); 22107 } 22108 22109 operator type_ () 22110 { 22111 return type_(*this); 22112 } 22113 22114 }; 22115 22116 template< 22117 typename T0, 22118 typename T1, 22119 typename T2, 22120 typename T3, 22121 typename T4, 22122 typename T5, 22123 typename T6, 22124 typename T7, 22125 typename T8, 22126 typename T9, 22127 typename T10, 22128 typename T11, 22129 typename T12, 22130 typename T13, 22131 typename T14, 22132 typename T15, 22133 typename T16, 22134 typename T17, 22135 typename T18, 22136 typename T19, 22137 typename T20, 22138 typename T21, 22139 typename T22, 22140 typename T23, 22141 typename T24, 22142 typename T25, 22143 typename T26, 22144 typename T27, 22145 typename T28, 22146 typename T29, 22147 typename T30, 22148 typename T31, 22149 typename T32, 22150 typename T33, 22151 typename T34, 22152 typename T35, 22153 typename T36, 22154 typename T37, 22155 typename T38, 22156 typename T39, 22157 typename T40, 22158 typename T41, 22159 typename T42, 22160 typename T43> 22161 struct functionImplementation_< 22162 T0, 22163 T1, 22164 T2, 22165 T3, 22166 T4, 22167 T5, 22168 T6, 22169 T7, 22170 T8, 22171 T9, 22172 T10, 22173 T11, 22174 T12, 22175 T13, 22176 T14, 22177 T15, 22178 T16, 22179 T17, 22180 T18, 22181 T19, 22182 T20, 22183 T21, 22184 T22, 22185 T23, 22186 T24, 22187 T25, 22188 T26, 22189 T27, 22190 T28, 22191 T29, 22192 T30, 22193 T31, 22194 T32, 22195 T33, 22196 T34, 22197 T35, 22198 T36, 22199 T37, 22200 T38, 22201 T39, 22202 T40, 22203 T41, 22204 T42, 22205 T43, 22206 NullType, 22207 NullType, 22208 NullType, 22209 NullType, 22210 NullType, 22211 NullType, 22212 NullType, 22213 NullType, 22214 NullType, 22215 NullType, 22216 NullType, 22217 NullType, 22218 NullType, 22219 NullType, 22220 NullType, 22221 NullType, 22222 NullType, 22223 NullType, 22224 NullType, 22225 NullType, 22226 NullType, 22227 NullType, 22228 NullType, 22229 NullType, 22230 NullType, 22231 NullType, 22232 NullType, 22233 NullType, 22234 NullType, 22235 NullType, 22236 NullType, 22237 NullType, 22238 NullType, 22239 NullType, 22240 NullType, 22241 NullType, 22242 NullType, 22243 NullType, 22244 NullType, 22245 NullType, 22246 NullType, 22247 NullType, 22248 NullType, 22249 NullType, 22250 NullType, 22251 NullType, 22252 NullType, 22253 NullType, 22254 NullType, 22255 NullType, 22256 NullType, 22257 NullType, 22258 NullType, 22259 NullType, 22260 NullType, 22261 NullType, 22262 NullType, 22263 NullType, 22264 NullType, 22265 NullType, 22266 NullType, 22267 NullType, 22268 NullType, 22269 NullType, 22270 NullType, 22271 NullType, 22272 NullType, 22273 NullType, 22274 NullType, 22275 NullType, 22276 NullType, 22277 NullType, 22278 NullType, 22279 NullType, 22280 NullType, 22281 NullType, 22282 NullType, 22283 NullType, 22284 NullType, 22285 NullType, 22286 NullType, 22287 NullType, 22288 NullType, 22289 NullType> 22290 { 22291 typedef detail::KernelFunctorGlobal< 22292 T0, 22293 T1, 22294 T2, 22295 T3, 22296 T4, 22297 T5, 22298 T6, 22299 T7, 22300 T8, 22301 T9, 22302 T10, 22303 T11, 22304 T12, 22305 T13, 22306 T14, 22307 T15, 22308 T16, 22309 T17, 22310 T18, 22311 T19, 22312 T20, 22313 T21, 22314 T22, 22315 T23, 22316 T24, 22317 T25, 22318 T26, 22319 T27, 22320 T28, 22321 T29, 22322 T30, 22323 T31, 22324 T32, 22325 T33, 22326 T34, 22327 T35, 22328 T36, 22329 T37, 22330 T38, 22331 T39, 22332 T40, 22333 T41, 22334 T42, 22335 T43, 22336 NullType, 22337 NullType, 22338 NullType, 22339 NullType, 22340 NullType, 22341 NullType, 22342 NullType, 22343 NullType, 22344 NullType, 22345 NullType, 22346 NullType, 22347 NullType, 22348 NullType, 22349 NullType, 22350 NullType, 22351 NullType, 22352 NullType, 22353 NullType, 22354 NullType, 22355 NullType, 22356 NullType, 22357 NullType, 22358 NullType, 22359 NullType, 22360 NullType, 22361 NullType, 22362 NullType, 22363 NullType, 22364 NullType, 22365 NullType, 22366 NullType, 22367 NullType, 22368 NullType, 22369 NullType, 22370 NullType, 22371 NullType, 22372 NullType, 22373 NullType, 22374 NullType, 22375 NullType, 22376 NullType, 22377 NullType, 22378 NullType, 22379 NullType, 22380 NullType, 22381 NullType, 22382 NullType, 22383 NullType, 22384 NullType, 22385 NullType, 22386 NullType, 22387 NullType, 22388 NullType, 22389 NullType, 22390 NullType, 22391 NullType, 22392 NullType, 22393 NullType, 22394 NullType, 22395 NullType, 22396 NullType, 22397 NullType, 22398 NullType, 22399 NullType, 22400 NullType, 22401 NullType, 22402 NullType, 22403 NullType, 22404 NullType, 22405 NullType, 22406 NullType, 22407 NullType, 22408 NullType, 22409 NullType, 22410 NullType, 22411 NullType, 22412 NullType, 22413 NullType, 22414 NullType, 22415 NullType, 22416 NullType, 22417 NullType, 22418 NullType, 22419 NullType> FunctorType; 22420 22421 FunctorType functor_; 22422 22423 functionImplementation_(const FunctorType &functor) : 22424 functor_(functor) 22425 { 22426 } 22427 22428 typedef std::tr1::function<Event ( 22429 const EnqueueArgs&, 22430 T0, 22431 T1, 22432 T2, 22433 T3, 22434 T4, 22435 T5, 22436 T6, 22437 T7, 22438 T8, 22439 T9, 22440 T10, 22441 T11, 22442 T12, 22443 T13, 22444 T14, 22445 T15, 22446 T16, 22447 T17, 22448 T18, 22449 T19, 22450 T20, 22451 T21, 22452 T22, 22453 T23, 22454 T24, 22455 T25, 22456 T26, 22457 T27, 22458 T28, 22459 T29, 22460 T30, 22461 T31, 22462 T32, 22463 T33, 22464 T34, 22465 T35, 22466 T36, 22467 T37, 22468 T38, 22469 T39, 22470 T40, 22471 T41, 22472 T42, 22473 T43)> type_; 22474 22475 Event operator()(const EnqueueArgs& enqueueArgs, 22476 T0 arg0, 22477 T1 arg1, 22478 T2 arg2, 22479 T3 arg3, 22480 T4 arg4, 22481 T5 arg5, 22482 T6 arg6, 22483 T7 arg7, 22484 T8 arg8, 22485 T9 arg9, 22486 T10 arg10, 22487 T11 arg11, 22488 T12 arg12, 22489 T13 arg13, 22490 T14 arg14, 22491 T15 arg15, 22492 T16 arg16, 22493 T17 arg17, 22494 T18 arg18, 22495 T19 arg19, 22496 T20 arg20, 22497 T21 arg21, 22498 T22 arg22, 22499 T23 arg23, 22500 T24 arg24, 22501 T25 arg25, 22502 T26 arg26, 22503 T27 arg27, 22504 T28 arg28, 22505 T29 arg29, 22506 T30 arg30, 22507 T31 arg31, 22508 T32 arg32, 22509 T33 arg33, 22510 T34 arg34, 22511 T35 arg35, 22512 T36 arg36, 22513 T37 arg37, 22514 T38 arg38, 22515 T39 arg39, 22516 T40 arg40, 22517 T41 arg41, 22518 T42 arg42, 22519 T43 arg43) 22520 { 22521 return functor_( 22522 enqueueArgs, 22523 arg0, 22524 arg1, 22525 arg2, 22526 arg3, 22527 arg4, 22528 arg5, 22529 arg6, 22530 arg7, 22531 arg8, 22532 arg9, 22533 arg10, 22534 arg11, 22535 arg12, 22536 arg13, 22537 arg14, 22538 arg15, 22539 arg16, 22540 arg17, 22541 arg18, 22542 arg19, 22543 arg20, 22544 arg21, 22545 arg22, 22546 arg23, 22547 arg24, 22548 arg25, 22549 arg26, 22550 arg27, 22551 arg28, 22552 arg29, 22553 arg30, 22554 arg31, 22555 arg32, 22556 arg33, 22557 arg34, 22558 arg35, 22559 arg36, 22560 arg37, 22561 arg38, 22562 arg39, 22563 arg40, 22564 arg41, 22565 arg42, 22566 arg43); 22567 } 22568 22569 operator type_ () 22570 { 22571 return type_(*this); 22572 } 22573 22574 }; 22575 22576 template< 22577 typename T0, 22578 typename T1, 22579 typename T2, 22580 typename T3, 22581 typename T4, 22582 typename T5, 22583 typename T6, 22584 typename T7, 22585 typename T8, 22586 typename T9, 22587 typename T10, 22588 typename T11, 22589 typename T12, 22590 typename T13, 22591 typename T14, 22592 typename T15, 22593 typename T16, 22594 typename T17, 22595 typename T18, 22596 typename T19, 22597 typename T20, 22598 typename T21, 22599 typename T22, 22600 typename T23, 22601 typename T24, 22602 typename T25, 22603 typename T26, 22604 typename T27, 22605 typename T28, 22606 typename T29, 22607 typename T30, 22608 typename T31, 22609 typename T32, 22610 typename T33, 22611 typename T34, 22612 typename T35, 22613 typename T36, 22614 typename T37, 22615 typename T38, 22616 typename T39, 22617 typename T40, 22618 typename T41, 22619 typename T42, 22620 typename T43, 22621 typename T44> 22622 struct functionImplementation_< 22623 T0, 22624 T1, 22625 T2, 22626 T3, 22627 T4, 22628 T5, 22629 T6, 22630 T7, 22631 T8, 22632 T9, 22633 T10, 22634 T11, 22635 T12, 22636 T13, 22637 T14, 22638 T15, 22639 T16, 22640 T17, 22641 T18, 22642 T19, 22643 T20, 22644 T21, 22645 T22, 22646 T23, 22647 T24, 22648 T25, 22649 T26, 22650 T27, 22651 T28, 22652 T29, 22653 T30, 22654 T31, 22655 T32, 22656 T33, 22657 T34, 22658 T35, 22659 T36, 22660 T37, 22661 T38, 22662 T39, 22663 T40, 22664 T41, 22665 T42, 22666 T43, 22667 T44, 22668 NullType, 22669 NullType, 22670 NullType, 22671 NullType, 22672 NullType, 22673 NullType, 22674 NullType, 22675 NullType, 22676 NullType, 22677 NullType, 22678 NullType, 22679 NullType, 22680 NullType, 22681 NullType, 22682 NullType, 22683 NullType, 22684 NullType, 22685 NullType, 22686 NullType, 22687 NullType, 22688 NullType, 22689 NullType, 22690 NullType, 22691 NullType, 22692 NullType, 22693 NullType, 22694 NullType, 22695 NullType, 22696 NullType, 22697 NullType, 22698 NullType, 22699 NullType, 22700 NullType, 22701 NullType, 22702 NullType, 22703 NullType, 22704 NullType, 22705 NullType, 22706 NullType, 22707 NullType, 22708 NullType, 22709 NullType, 22710 NullType, 22711 NullType, 22712 NullType, 22713 NullType, 22714 NullType, 22715 NullType, 22716 NullType, 22717 NullType, 22718 NullType, 22719 NullType, 22720 NullType, 22721 NullType, 22722 NullType, 22723 NullType, 22724 NullType, 22725 NullType, 22726 NullType, 22727 NullType, 22728 NullType, 22729 NullType, 22730 NullType, 22731 NullType, 22732 NullType, 22733 NullType, 22734 NullType, 22735 NullType, 22736 NullType, 22737 NullType, 22738 NullType, 22739 NullType, 22740 NullType, 22741 NullType, 22742 NullType, 22743 NullType, 22744 NullType, 22745 NullType, 22746 NullType, 22747 NullType, 22748 NullType, 22749 NullType, 22750 NullType> 22751 { 22752 typedef detail::KernelFunctorGlobal< 22753 T0, 22754 T1, 22755 T2, 22756 T3, 22757 T4, 22758 T5, 22759 T6, 22760 T7, 22761 T8, 22762 T9, 22763 T10, 22764 T11, 22765 T12, 22766 T13, 22767 T14, 22768 T15, 22769 T16, 22770 T17, 22771 T18, 22772 T19, 22773 T20, 22774 T21, 22775 T22, 22776 T23, 22777 T24, 22778 T25, 22779 T26, 22780 T27, 22781 T28, 22782 T29, 22783 T30, 22784 T31, 22785 T32, 22786 T33, 22787 T34, 22788 T35, 22789 T36, 22790 T37, 22791 T38, 22792 T39, 22793 T40, 22794 T41, 22795 T42, 22796 T43, 22797 T44, 22798 NullType, 22799 NullType, 22800 NullType, 22801 NullType, 22802 NullType, 22803 NullType, 22804 NullType, 22805 NullType, 22806 NullType, 22807 NullType, 22808 NullType, 22809 NullType, 22810 NullType, 22811 NullType, 22812 NullType, 22813 NullType, 22814 NullType, 22815 NullType, 22816 NullType, 22817 NullType, 22818 NullType, 22819 NullType, 22820 NullType, 22821 NullType, 22822 NullType, 22823 NullType, 22824 NullType, 22825 NullType, 22826 NullType, 22827 NullType, 22828 NullType, 22829 NullType, 22830 NullType, 22831 NullType, 22832 NullType, 22833 NullType, 22834 NullType, 22835 NullType, 22836 NullType, 22837 NullType, 22838 NullType, 22839 NullType, 22840 NullType, 22841 NullType, 22842 NullType, 22843 NullType, 22844 NullType, 22845 NullType, 22846 NullType, 22847 NullType, 22848 NullType, 22849 NullType, 22850 NullType, 22851 NullType, 22852 NullType, 22853 NullType, 22854 NullType, 22855 NullType, 22856 NullType, 22857 NullType, 22858 NullType, 22859 NullType, 22860 NullType, 22861 NullType, 22862 NullType, 22863 NullType, 22864 NullType, 22865 NullType, 22866 NullType, 22867 NullType, 22868 NullType, 22869 NullType, 22870 NullType, 22871 NullType, 22872 NullType, 22873 NullType, 22874 NullType, 22875 NullType, 22876 NullType, 22877 NullType, 22878 NullType, 22879 NullType, 22880 NullType> FunctorType; 22881 22882 FunctorType functor_; 22883 22884 functionImplementation_(const FunctorType &functor) : 22885 functor_(functor) 22886 { 22887 } 22888 22889 typedef std::tr1::function<Event ( 22890 const EnqueueArgs&, 22891 T0, 22892 T1, 22893 T2, 22894 T3, 22895 T4, 22896 T5, 22897 T6, 22898 T7, 22899 T8, 22900 T9, 22901 T10, 22902 T11, 22903 T12, 22904 T13, 22905 T14, 22906 T15, 22907 T16, 22908 T17, 22909 T18, 22910 T19, 22911 T20, 22912 T21, 22913 T22, 22914 T23, 22915 T24, 22916 T25, 22917 T26, 22918 T27, 22919 T28, 22920 T29, 22921 T30, 22922 T31, 22923 T32, 22924 T33, 22925 T34, 22926 T35, 22927 T36, 22928 T37, 22929 T38, 22930 T39, 22931 T40, 22932 T41, 22933 T42, 22934 T43, 22935 T44)> type_; 22936 22937 Event operator()(const EnqueueArgs& enqueueArgs, 22938 T0 arg0, 22939 T1 arg1, 22940 T2 arg2, 22941 T3 arg3, 22942 T4 arg4, 22943 T5 arg5, 22944 T6 arg6, 22945 T7 arg7, 22946 T8 arg8, 22947 T9 arg9, 22948 T10 arg10, 22949 T11 arg11, 22950 T12 arg12, 22951 T13 arg13, 22952 T14 arg14, 22953 T15 arg15, 22954 T16 arg16, 22955 T17 arg17, 22956 T18 arg18, 22957 T19 arg19, 22958 T20 arg20, 22959 T21 arg21, 22960 T22 arg22, 22961 T23 arg23, 22962 T24 arg24, 22963 T25 arg25, 22964 T26 arg26, 22965 T27 arg27, 22966 T28 arg28, 22967 T29 arg29, 22968 T30 arg30, 22969 T31 arg31, 22970 T32 arg32, 22971 T33 arg33, 22972 T34 arg34, 22973 T35 arg35, 22974 T36 arg36, 22975 T37 arg37, 22976 T38 arg38, 22977 T39 arg39, 22978 T40 arg40, 22979 T41 arg41, 22980 T42 arg42, 22981 T43 arg43, 22982 T44 arg44) 22983 { 22984 return functor_( 22985 enqueueArgs, 22986 arg0, 22987 arg1, 22988 arg2, 22989 arg3, 22990 arg4, 22991 arg5, 22992 arg6, 22993 arg7, 22994 arg8, 22995 arg9, 22996 arg10, 22997 arg11, 22998 arg12, 22999 arg13, 23000 arg14, 23001 arg15, 23002 arg16, 23003 arg17, 23004 arg18, 23005 arg19, 23006 arg20, 23007 arg21, 23008 arg22, 23009 arg23, 23010 arg24, 23011 arg25, 23012 arg26, 23013 arg27, 23014 arg28, 23015 arg29, 23016 arg30, 23017 arg31, 23018 arg32, 23019 arg33, 23020 arg34, 23021 arg35, 23022 arg36, 23023 arg37, 23024 arg38, 23025 arg39, 23026 arg40, 23027 arg41, 23028 arg42, 23029 arg43, 23030 arg44); 23031 } 23032 23033 operator type_ () 23034 { 23035 return type_(*this); 23036 } 23037 23038 }; 23039 23040 template< 23041 typename T0, 23042 typename T1, 23043 typename T2, 23044 typename T3, 23045 typename T4, 23046 typename T5, 23047 typename T6, 23048 typename T7, 23049 typename T8, 23050 typename T9, 23051 typename T10, 23052 typename T11, 23053 typename T12, 23054 typename T13, 23055 typename T14, 23056 typename T15, 23057 typename T16, 23058 typename T17, 23059 typename T18, 23060 typename T19, 23061 typename T20, 23062 typename T21, 23063 typename T22, 23064 typename T23, 23065 typename T24, 23066 typename T25, 23067 typename T26, 23068 typename T27, 23069 typename T28, 23070 typename T29, 23071 typename T30, 23072 typename T31, 23073 typename T32, 23074 typename T33, 23075 typename T34, 23076 typename T35, 23077 typename T36, 23078 typename T37, 23079 typename T38, 23080 typename T39, 23081 typename T40, 23082 typename T41, 23083 typename T42, 23084 typename T43, 23085 typename T44, 23086 typename T45> 23087 struct functionImplementation_< 23088 T0, 23089 T1, 23090 T2, 23091 T3, 23092 T4, 23093 T5, 23094 T6, 23095 T7, 23096 T8, 23097 T9, 23098 T10, 23099 T11, 23100 T12, 23101 T13, 23102 T14, 23103 T15, 23104 T16, 23105 T17, 23106 T18, 23107 T19, 23108 T20, 23109 T21, 23110 T22, 23111 T23, 23112 T24, 23113 T25, 23114 T26, 23115 T27, 23116 T28, 23117 T29, 23118 T30, 23119 T31, 23120 T32, 23121 T33, 23122 T34, 23123 T35, 23124 T36, 23125 T37, 23126 T38, 23127 T39, 23128 T40, 23129 T41, 23130 T42, 23131 T43, 23132 T44, 23133 T45, 23134 NullType, 23135 NullType, 23136 NullType, 23137 NullType, 23138 NullType, 23139 NullType, 23140 NullType, 23141 NullType, 23142 NullType, 23143 NullType, 23144 NullType, 23145 NullType, 23146 NullType, 23147 NullType, 23148 NullType, 23149 NullType, 23150 NullType, 23151 NullType, 23152 NullType, 23153 NullType, 23154 NullType, 23155 NullType, 23156 NullType, 23157 NullType, 23158 NullType, 23159 NullType, 23160 NullType, 23161 NullType, 23162 NullType, 23163 NullType, 23164 NullType, 23165 NullType, 23166 NullType, 23167 NullType, 23168 NullType, 23169 NullType, 23170 NullType, 23171 NullType, 23172 NullType, 23173 NullType, 23174 NullType, 23175 NullType, 23176 NullType, 23177 NullType, 23178 NullType, 23179 NullType, 23180 NullType, 23181 NullType, 23182 NullType, 23183 NullType, 23184 NullType, 23185 NullType, 23186 NullType, 23187 NullType, 23188 NullType, 23189 NullType, 23190 NullType, 23191 NullType, 23192 NullType, 23193 NullType, 23194 NullType, 23195 NullType, 23196 NullType, 23197 NullType, 23198 NullType, 23199 NullType, 23200 NullType, 23201 NullType, 23202 NullType, 23203 NullType, 23204 NullType, 23205 NullType, 23206 NullType, 23207 NullType, 23208 NullType, 23209 NullType, 23210 NullType, 23211 NullType, 23212 NullType, 23213 NullType, 23214 NullType, 23215 NullType> 23216 { 23217 typedef detail::KernelFunctorGlobal< 23218 T0, 23219 T1, 23220 T2, 23221 T3, 23222 T4, 23223 T5, 23224 T6, 23225 T7, 23226 T8, 23227 T9, 23228 T10, 23229 T11, 23230 T12, 23231 T13, 23232 T14, 23233 T15, 23234 T16, 23235 T17, 23236 T18, 23237 T19, 23238 T20, 23239 T21, 23240 T22, 23241 T23, 23242 T24, 23243 T25, 23244 T26, 23245 T27, 23246 T28, 23247 T29, 23248 T30, 23249 T31, 23250 T32, 23251 T33, 23252 T34, 23253 T35, 23254 T36, 23255 T37, 23256 T38, 23257 T39, 23258 T40, 23259 T41, 23260 T42, 23261 T43, 23262 T44, 23263 T45, 23264 NullType, 23265 NullType, 23266 NullType, 23267 NullType, 23268 NullType, 23269 NullType, 23270 NullType, 23271 NullType, 23272 NullType, 23273 NullType, 23274 NullType, 23275 NullType, 23276 NullType, 23277 NullType, 23278 NullType, 23279 NullType, 23280 NullType, 23281 NullType, 23282 NullType, 23283 NullType, 23284 NullType, 23285 NullType, 23286 NullType, 23287 NullType, 23288 NullType, 23289 NullType, 23290 NullType, 23291 NullType, 23292 NullType, 23293 NullType, 23294 NullType, 23295 NullType, 23296 NullType, 23297 NullType, 23298 NullType, 23299 NullType, 23300 NullType, 23301 NullType, 23302 NullType, 23303 NullType, 23304 NullType, 23305 NullType, 23306 NullType, 23307 NullType, 23308 NullType, 23309 NullType, 23310 NullType, 23311 NullType, 23312 NullType, 23313 NullType, 23314 NullType, 23315 NullType, 23316 NullType, 23317 NullType, 23318 NullType, 23319 NullType, 23320 NullType, 23321 NullType, 23322 NullType, 23323 NullType, 23324 NullType, 23325 NullType, 23326 NullType, 23327 NullType, 23328 NullType, 23329 NullType, 23330 NullType, 23331 NullType, 23332 NullType, 23333 NullType, 23334 NullType, 23335 NullType, 23336 NullType, 23337 NullType, 23338 NullType, 23339 NullType, 23340 NullType, 23341 NullType, 23342 NullType, 23343 NullType, 23344 NullType, 23345 NullType> FunctorType; 23346 23347 FunctorType functor_; 23348 23349 functionImplementation_(const FunctorType &functor) : 23350 functor_(functor) 23351 { 23352 } 23353 23354 typedef std::tr1::function<Event ( 23355 const EnqueueArgs&, 23356 T0, 23357 T1, 23358 T2, 23359 T3, 23360 T4, 23361 T5, 23362 T6, 23363 T7, 23364 T8, 23365 T9, 23366 T10, 23367 T11, 23368 T12, 23369 T13, 23370 T14, 23371 T15, 23372 T16, 23373 T17, 23374 T18, 23375 T19, 23376 T20, 23377 T21, 23378 T22, 23379 T23, 23380 T24, 23381 T25, 23382 T26, 23383 T27, 23384 T28, 23385 T29, 23386 T30, 23387 T31, 23388 T32, 23389 T33, 23390 T34, 23391 T35, 23392 T36, 23393 T37, 23394 T38, 23395 T39, 23396 T40, 23397 T41, 23398 T42, 23399 T43, 23400 T44, 23401 T45)> type_; 23402 23403 Event operator()(const EnqueueArgs& enqueueArgs, 23404 T0 arg0, 23405 T1 arg1, 23406 T2 arg2, 23407 T3 arg3, 23408 T4 arg4, 23409 T5 arg5, 23410 T6 arg6, 23411 T7 arg7, 23412 T8 arg8, 23413 T9 arg9, 23414 T10 arg10, 23415 T11 arg11, 23416 T12 arg12, 23417 T13 arg13, 23418 T14 arg14, 23419 T15 arg15, 23420 T16 arg16, 23421 T17 arg17, 23422 T18 arg18, 23423 T19 arg19, 23424 T20 arg20, 23425 T21 arg21, 23426 T22 arg22, 23427 T23 arg23, 23428 T24 arg24, 23429 T25 arg25, 23430 T26 arg26, 23431 T27 arg27, 23432 T28 arg28, 23433 T29 arg29, 23434 T30 arg30, 23435 T31 arg31, 23436 T32 arg32, 23437 T33 arg33, 23438 T34 arg34, 23439 T35 arg35, 23440 T36 arg36, 23441 T37 arg37, 23442 T38 arg38, 23443 T39 arg39, 23444 T40 arg40, 23445 T41 arg41, 23446 T42 arg42, 23447 T43 arg43, 23448 T44 arg44, 23449 T45 arg45) 23450 { 23451 return functor_( 23452 enqueueArgs, 23453 arg0, 23454 arg1, 23455 arg2, 23456 arg3, 23457 arg4, 23458 arg5, 23459 arg6, 23460 arg7, 23461 arg8, 23462 arg9, 23463 arg10, 23464 arg11, 23465 arg12, 23466 arg13, 23467 arg14, 23468 arg15, 23469 arg16, 23470 arg17, 23471 arg18, 23472 arg19, 23473 arg20, 23474 arg21, 23475 arg22, 23476 arg23, 23477 arg24, 23478 arg25, 23479 arg26, 23480 arg27, 23481 arg28, 23482 arg29, 23483 arg30, 23484 arg31, 23485 arg32, 23486 arg33, 23487 arg34, 23488 arg35, 23489 arg36, 23490 arg37, 23491 arg38, 23492 arg39, 23493 arg40, 23494 arg41, 23495 arg42, 23496 arg43, 23497 arg44, 23498 arg45); 23499 } 23500 23501 operator type_ () 23502 { 23503 return type_(*this); 23504 } 23505 23506 }; 23507 23508 template< 23509 typename T0, 23510 typename T1, 23511 typename T2, 23512 typename T3, 23513 typename T4, 23514 typename T5, 23515 typename T6, 23516 typename T7, 23517 typename T8, 23518 typename T9, 23519 typename T10, 23520 typename T11, 23521 typename T12, 23522 typename T13, 23523 typename T14, 23524 typename T15, 23525 typename T16, 23526 typename T17, 23527 typename T18, 23528 typename T19, 23529 typename T20, 23530 typename T21, 23531 typename T22, 23532 typename T23, 23533 typename T24, 23534 typename T25, 23535 typename T26, 23536 typename T27, 23537 typename T28, 23538 typename T29, 23539 typename T30, 23540 typename T31, 23541 typename T32, 23542 typename T33, 23543 typename T34, 23544 typename T35, 23545 typename T36, 23546 typename T37, 23547 typename T38, 23548 typename T39, 23549 typename T40, 23550 typename T41, 23551 typename T42, 23552 typename T43, 23553 typename T44, 23554 typename T45, 23555 typename T46> 23556 struct functionImplementation_< 23557 T0, 23558 T1, 23559 T2, 23560 T3, 23561 T4, 23562 T5, 23563 T6, 23564 T7, 23565 T8, 23566 T9, 23567 T10, 23568 T11, 23569 T12, 23570 T13, 23571 T14, 23572 T15, 23573 T16, 23574 T17, 23575 T18, 23576 T19, 23577 T20, 23578 T21, 23579 T22, 23580 T23, 23581 T24, 23582 T25, 23583 T26, 23584 T27, 23585 T28, 23586 T29, 23587 T30, 23588 T31, 23589 T32, 23590 T33, 23591 T34, 23592 T35, 23593 T36, 23594 T37, 23595 T38, 23596 T39, 23597 T40, 23598 T41, 23599 T42, 23600 T43, 23601 T44, 23602 T45, 23603 T46, 23604 NullType, 23605 NullType, 23606 NullType, 23607 NullType, 23608 NullType, 23609 NullType, 23610 NullType, 23611 NullType, 23612 NullType, 23613 NullType, 23614 NullType, 23615 NullType, 23616 NullType, 23617 NullType, 23618 NullType, 23619 NullType, 23620 NullType, 23621 NullType, 23622 NullType, 23623 NullType, 23624 NullType, 23625 NullType, 23626 NullType, 23627 NullType, 23628 NullType, 23629 NullType, 23630 NullType, 23631 NullType, 23632 NullType, 23633 NullType, 23634 NullType, 23635 NullType, 23636 NullType, 23637 NullType, 23638 NullType, 23639 NullType, 23640 NullType, 23641 NullType, 23642 NullType, 23643 NullType, 23644 NullType, 23645 NullType, 23646 NullType, 23647 NullType, 23648 NullType, 23649 NullType, 23650 NullType, 23651 NullType, 23652 NullType, 23653 NullType, 23654 NullType, 23655 NullType, 23656 NullType, 23657 NullType, 23658 NullType, 23659 NullType, 23660 NullType, 23661 NullType, 23662 NullType, 23663 NullType, 23664 NullType, 23665 NullType, 23666 NullType, 23667 NullType, 23668 NullType, 23669 NullType, 23670 NullType, 23671 NullType, 23672 NullType, 23673 NullType, 23674 NullType, 23675 NullType, 23676 NullType, 23677 NullType, 23678 NullType, 23679 NullType, 23680 NullType, 23681 NullType, 23682 NullType, 23683 NullType, 23684 NullType> 23685 { 23686 typedef detail::KernelFunctorGlobal< 23687 T0, 23688 T1, 23689 T2, 23690 T3, 23691 T4, 23692 T5, 23693 T6, 23694 T7, 23695 T8, 23696 T9, 23697 T10, 23698 T11, 23699 T12, 23700 T13, 23701 T14, 23702 T15, 23703 T16, 23704 T17, 23705 T18, 23706 T19, 23707 T20, 23708 T21, 23709 T22, 23710 T23, 23711 T24, 23712 T25, 23713 T26, 23714 T27, 23715 T28, 23716 T29, 23717 T30, 23718 T31, 23719 T32, 23720 T33, 23721 T34, 23722 T35, 23723 T36, 23724 T37, 23725 T38, 23726 T39, 23727 T40, 23728 T41, 23729 T42, 23730 T43, 23731 T44, 23732 T45, 23733 T46, 23734 NullType, 23735 NullType, 23736 NullType, 23737 NullType, 23738 NullType, 23739 NullType, 23740 NullType, 23741 NullType, 23742 NullType, 23743 NullType, 23744 NullType, 23745 NullType, 23746 NullType, 23747 NullType, 23748 NullType, 23749 NullType, 23750 NullType, 23751 NullType, 23752 NullType, 23753 NullType, 23754 NullType, 23755 NullType, 23756 NullType, 23757 NullType, 23758 NullType, 23759 NullType, 23760 NullType, 23761 NullType, 23762 NullType, 23763 NullType, 23764 NullType, 23765 NullType, 23766 NullType, 23767 NullType, 23768 NullType, 23769 NullType, 23770 NullType, 23771 NullType, 23772 NullType, 23773 NullType, 23774 NullType, 23775 NullType, 23776 NullType, 23777 NullType, 23778 NullType, 23779 NullType, 23780 NullType, 23781 NullType, 23782 NullType, 23783 NullType, 23784 NullType, 23785 NullType, 23786 NullType, 23787 NullType, 23788 NullType, 23789 NullType, 23790 NullType, 23791 NullType, 23792 NullType, 23793 NullType, 23794 NullType, 23795 NullType, 23796 NullType, 23797 NullType, 23798 NullType, 23799 NullType, 23800 NullType, 23801 NullType, 23802 NullType, 23803 NullType, 23804 NullType, 23805 NullType, 23806 NullType, 23807 NullType, 23808 NullType, 23809 NullType, 23810 NullType, 23811 NullType, 23812 NullType, 23813 NullType, 23814 NullType> FunctorType; 23815 23816 FunctorType functor_; 23817 23818 functionImplementation_(const FunctorType &functor) : 23819 functor_(functor) 23820 { 23821 } 23822 23823 typedef std::tr1::function<Event ( 23824 const EnqueueArgs&, 23825 T0, 23826 T1, 23827 T2, 23828 T3, 23829 T4, 23830 T5, 23831 T6, 23832 T7, 23833 T8, 23834 T9, 23835 T10, 23836 T11, 23837 T12, 23838 T13, 23839 T14, 23840 T15, 23841 T16, 23842 T17, 23843 T18, 23844 T19, 23845 T20, 23846 T21, 23847 T22, 23848 T23, 23849 T24, 23850 T25, 23851 T26, 23852 T27, 23853 T28, 23854 T29, 23855 T30, 23856 T31, 23857 T32, 23858 T33, 23859 T34, 23860 T35, 23861 T36, 23862 T37, 23863 T38, 23864 T39, 23865 T40, 23866 T41, 23867 T42, 23868 T43, 23869 T44, 23870 T45, 23871 T46)> type_; 23872 23873 Event operator()(const EnqueueArgs& enqueueArgs, 23874 T0 arg0, 23875 T1 arg1, 23876 T2 arg2, 23877 T3 arg3, 23878 T4 arg4, 23879 T5 arg5, 23880 T6 arg6, 23881 T7 arg7, 23882 T8 arg8, 23883 T9 arg9, 23884 T10 arg10, 23885 T11 arg11, 23886 T12 arg12, 23887 T13 arg13, 23888 T14 arg14, 23889 T15 arg15, 23890 T16 arg16, 23891 T17 arg17, 23892 T18 arg18, 23893 T19 arg19, 23894 T20 arg20, 23895 T21 arg21, 23896 T22 arg22, 23897 T23 arg23, 23898 T24 arg24, 23899 T25 arg25, 23900 T26 arg26, 23901 T27 arg27, 23902 T28 arg28, 23903 T29 arg29, 23904 T30 arg30, 23905 T31 arg31, 23906 T32 arg32, 23907 T33 arg33, 23908 T34 arg34, 23909 T35 arg35, 23910 T36 arg36, 23911 T37 arg37, 23912 T38 arg38, 23913 T39 arg39, 23914 T40 arg40, 23915 T41 arg41, 23916 T42 arg42, 23917 T43 arg43, 23918 T44 arg44, 23919 T45 arg45, 23920 T46 arg46) 23921 { 23922 return functor_( 23923 enqueueArgs, 23924 arg0, 23925 arg1, 23926 arg2, 23927 arg3, 23928 arg4, 23929 arg5, 23930 arg6, 23931 arg7, 23932 arg8, 23933 arg9, 23934 arg10, 23935 arg11, 23936 arg12, 23937 arg13, 23938 arg14, 23939 arg15, 23940 arg16, 23941 arg17, 23942 arg18, 23943 arg19, 23944 arg20, 23945 arg21, 23946 arg22, 23947 arg23, 23948 arg24, 23949 arg25, 23950 arg26, 23951 arg27, 23952 arg28, 23953 arg29, 23954 arg30, 23955 arg31, 23956 arg32, 23957 arg33, 23958 arg34, 23959 arg35, 23960 arg36, 23961 arg37, 23962 arg38, 23963 arg39, 23964 arg40, 23965 arg41, 23966 arg42, 23967 arg43, 23968 arg44, 23969 arg45, 23970 arg46); 23971 } 23972 23973 operator type_ () 23974 { 23975 return type_(*this); 23976 } 23977 23978 }; 23979 23980 template< 23981 typename T0, 23982 typename T1, 23983 typename T2, 23984 typename T3, 23985 typename T4, 23986 typename T5, 23987 typename T6, 23988 typename T7, 23989 typename T8, 23990 typename T9, 23991 typename T10, 23992 typename T11, 23993 typename T12, 23994 typename T13, 23995 typename T14, 23996 typename T15, 23997 typename T16, 23998 typename T17, 23999 typename T18, 24000 typename T19, 24001 typename T20, 24002 typename T21, 24003 typename T22, 24004 typename T23, 24005 typename T24, 24006 typename T25, 24007 typename T26, 24008 typename T27, 24009 typename T28, 24010 typename T29, 24011 typename T30, 24012 typename T31, 24013 typename T32, 24014 typename T33, 24015 typename T34, 24016 typename T35, 24017 typename T36, 24018 typename T37, 24019 typename T38, 24020 typename T39, 24021 typename T40, 24022 typename T41, 24023 typename T42, 24024 typename T43, 24025 typename T44, 24026 typename T45, 24027 typename T46, 24028 typename T47> 24029 struct functionImplementation_< 24030 T0, 24031 T1, 24032 T2, 24033 T3, 24034 T4, 24035 T5, 24036 T6, 24037 T7, 24038 T8, 24039 T9, 24040 T10, 24041 T11, 24042 T12, 24043 T13, 24044 T14, 24045 T15, 24046 T16, 24047 T17, 24048 T18, 24049 T19, 24050 T20, 24051 T21, 24052 T22, 24053 T23, 24054 T24, 24055 T25, 24056 T26, 24057 T27, 24058 T28, 24059 T29, 24060 T30, 24061 T31, 24062 T32, 24063 T33, 24064 T34, 24065 T35, 24066 T36, 24067 T37, 24068 T38, 24069 T39, 24070 T40, 24071 T41, 24072 T42, 24073 T43, 24074 T44, 24075 T45, 24076 T46, 24077 T47, 24078 NullType, 24079 NullType, 24080 NullType, 24081 NullType, 24082 NullType, 24083 NullType, 24084 NullType, 24085 NullType, 24086 NullType, 24087 NullType, 24088 NullType, 24089 NullType, 24090 NullType, 24091 NullType, 24092 NullType, 24093 NullType, 24094 NullType, 24095 NullType, 24096 NullType, 24097 NullType, 24098 NullType, 24099 NullType, 24100 NullType, 24101 NullType, 24102 NullType, 24103 NullType, 24104 NullType, 24105 NullType, 24106 NullType, 24107 NullType, 24108 NullType, 24109 NullType, 24110 NullType, 24111 NullType, 24112 NullType, 24113 NullType, 24114 NullType, 24115 NullType, 24116 NullType, 24117 NullType, 24118 NullType, 24119 NullType, 24120 NullType, 24121 NullType, 24122 NullType, 24123 NullType, 24124 NullType, 24125 NullType, 24126 NullType, 24127 NullType, 24128 NullType, 24129 NullType, 24130 NullType, 24131 NullType, 24132 NullType, 24133 NullType, 24134 NullType, 24135 NullType, 24136 NullType, 24137 NullType, 24138 NullType, 24139 NullType, 24140 NullType, 24141 NullType, 24142 NullType, 24143 NullType, 24144 NullType, 24145 NullType, 24146 NullType, 24147 NullType, 24148 NullType, 24149 NullType, 24150 NullType, 24151 NullType, 24152 NullType, 24153 NullType, 24154 NullType, 24155 NullType, 24156 NullType, 24157 NullType> 24158 { 24159 typedef detail::KernelFunctorGlobal< 24160 T0, 24161 T1, 24162 T2, 24163 T3, 24164 T4, 24165 T5, 24166 T6, 24167 T7, 24168 T8, 24169 T9, 24170 T10, 24171 T11, 24172 T12, 24173 T13, 24174 T14, 24175 T15, 24176 T16, 24177 T17, 24178 T18, 24179 T19, 24180 T20, 24181 T21, 24182 T22, 24183 T23, 24184 T24, 24185 T25, 24186 T26, 24187 T27, 24188 T28, 24189 T29, 24190 T30, 24191 T31, 24192 T32, 24193 T33, 24194 T34, 24195 T35, 24196 T36, 24197 T37, 24198 T38, 24199 T39, 24200 T40, 24201 T41, 24202 T42, 24203 T43, 24204 T44, 24205 T45, 24206 T46, 24207 T47, 24208 NullType, 24209 NullType, 24210 NullType, 24211 NullType, 24212 NullType, 24213 NullType, 24214 NullType, 24215 NullType, 24216 NullType, 24217 NullType, 24218 NullType, 24219 NullType, 24220 NullType, 24221 NullType, 24222 NullType, 24223 NullType, 24224 NullType, 24225 NullType, 24226 NullType, 24227 NullType, 24228 NullType, 24229 NullType, 24230 NullType, 24231 NullType, 24232 NullType, 24233 NullType, 24234 NullType, 24235 NullType, 24236 NullType, 24237 NullType, 24238 NullType, 24239 NullType, 24240 NullType, 24241 NullType, 24242 NullType, 24243 NullType, 24244 NullType, 24245 NullType, 24246 NullType, 24247 NullType, 24248 NullType, 24249 NullType, 24250 NullType, 24251 NullType, 24252 NullType, 24253 NullType, 24254 NullType, 24255 NullType, 24256 NullType, 24257 NullType, 24258 NullType, 24259 NullType, 24260 NullType, 24261 NullType, 24262 NullType, 24263 NullType, 24264 NullType, 24265 NullType, 24266 NullType, 24267 NullType, 24268 NullType, 24269 NullType, 24270 NullType, 24271 NullType, 24272 NullType, 24273 NullType, 24274 NullType, 24275 NullType, 24276 NullType, 24277 NullType, 24278 NullType, 24279 NullType, 24280 NullType, 24281 NullType, 24282 NullType, 24283 NullType, 24284 NullType, 24285 NullType, 24286 NullType, 24287 NullType> FunctorType; 24288 24289 FunctorType functor_; 24290 24291 functionImplementation_(const FunctorType &functor) : 24292 functor_(functor) 24293 { 24294 } 24295 24296 typedef std::tr1::function<Event ( 24297 const EnqueueArgs&, 24298 T0, 24299 T1, 24300 T2, 24301 T3, 24302 T4, 24303 T5, 24304 T6, 24305 T7, 24306 T8, 24307 T9, 24308 T10, 24309 T11, 24310 T12, 24311 T13, 24312 T14, 24313 T15, 24314 T16, 24315 T17, 24316 T18, 24317 T19, 24318 T20, 24319 T21, 24320 T22, 24321 T23, 24322 T24, 24323 T25, 24324 T26, 24325 T27, 24326 T28, 24327 T29, 24328 T30, 24329 T31, 24330 T32, 24331 T33, 24332 T34, 24333 T35, 24334 T36, 24335 T37, 24336 T38, 24337 T39, 24338 T40, 24339 T41, 24340 T42, 24341 T43, 24342 T44, 24343 T45, 24344 T46, 24345 T47)> type_; 24346 24347 Event operator()(const EnqueueArgs& enqueueArgs, 24348 T0 arg0, 24349 T1 arg1, 24350 T2 arg2, 24351 T3 arg3, 24352 T4 arg4, 24353 T5 arg5, 24354 T6 arg6, 24355 T7 arg7, 24356 T8 arg8, 24357 T9 arg9, 24358 T10 arg10, 24359 T11 arg11, 24360 T12 arg12, 24361 T13 arg13, 24362 T14 arg14, 24363 T15 arg15, 24364 T16 arg16, 24365 T17 arg17, 24366 T18 arg18, 24367 T19 arg19, 24368 T20 arg20, 24369 T21 arg21, 24370 T22 arg22, 24371 T23 arg23, 24372 T24 arg24, 24373 T25 arg25, 24374 T26 arg26, 24375 T27 arg27, 24376 T28 arg28, 24377 T29 arg29, 24378 T30 arg30, 24379 T31 arg31, 24380 T32 arg32, 24381 T33 arg33, 24382 T34 arg34, 24383 T35 arg35, 24384 T36 arg36, 24385 T37 arg37, 24386 T38 arg38, 24387 T39 arg39, 24388 T40 arg40, 24389 T41 arg41, 24390 T42 arg42, 24391 T43 arg43, 24392 T44 arg44, 24393 T45 arg45, 24394 T46 arg46, 24395 T47 arg47) 24396 { 24397 return functor_( 24398 enqueueArgs, 24399 arg0, 24400 arg1, 24401 arg2, 24402 arg3, 24403 arg4, 24404 arg5, 24405 arg6, 24406 arg7, 24407 arg8, 24408 arg9, 24409 arg10, 24410 arg11, 24411 arg12, 24412 arg13, 24413 arg14, 24414 arg15, 24415 arg16, 24416 arg17, 24417 arg18, 24418 arg19, 24419 arg20, 24420 arg21, 24421 arg22, 24422 arg23, 24423 arg24, 24424 arg25, 24425 arg26, 24426 arg27, 24427 arg28, 24428 arg29, 24429 arg30, 24430 arg31, 24431 arg32, 24432 arg33, 24433 arg34, 24434 arg35, 24435 arg36, 24436 arg37, 24437 arg38, 24438 arg39, 24439 arg40, 24440 arg41, 24441 arg42, 24442 arg43, 24443 arg44, 24444 arg45, 24445 arg46, 24446 arg47); 24447 } 24448 24449 operator type_ () 24450 { 24451 return type_(*this); 24452 } 24453 24454 }; 24455 24456 template< 24457 typename T0, 24458 typename T1, 24459 typename T2, 24460 typename T3, 24461 typename T4, 24462 typename T5, 24463 typename T6, 24464 typename T7, 24465 typename T8, 24466 typename T9, 24467 typename T10, 24468 typename T11, 24469 typename T12, 24470 typename T13, 24471 typename T14, 24472 typename T15, 24473 typename T16, 24474 typename T17, 24475 typename T18, 24476 typename T19, 24477 typename T20, 24478 typename T21, 24479 typename T22, 24480 typename T23, 24481 typename T24, 24482 typename T25, 24483 typename T26, 24484 typename T27, 24485 typename T28, 24486 typename T29, 24487 typename T30, 24488 typename T31, 24489 typename T32, 24490 typename T33, 24491 typename T34, 24492 typename T35, 24493 typename T36, 24494 typename T37, 24495 typename T38, 24496 typename T39, 24497 typename T40, 24498 typename T41, 24499 typename T42, 24500 typename T43, 24501 typename T44, 24502 typename T45, 24503 typename T46, 24504 typename T47, 24505 typename T48> 24506 struct functionImplementation_< 24507 T0, 24508 T1, 24509 T2, 24510 T3, 24511 T4, 24512 T5, 24513 T6, 24514 T7, 24515 T8, 24516 T9, 24517 T10, 24518 T11, 24519 T12, 24520 T13, 24521 T14, 24522 T15, 24523 T16, 24524 T17, 24525 T18, 24526 T19, 24527 T20, 24528 T21, 24529 T22, 24530 T23, 24531 T24, 24532 T25, 24533 T26, 24534 T27, 24535 T28, 24536 T29, 24537 T30, 24538 T31, 24539 T32, 24540 T33, 24541 T34, 24542 T35, 24543 T36, 24544 T37, 24545 T38, 24546 T39, 24547 T40, 24548 T41, 24549 T42, 24550 T43, 24551 T44, 24552 T45, 24553 T46, 24554 T47, 24555 T48, 24556 NullType, 24557 NullType, 24558 NullType, 24559 NullType, 24560 NullType, 24561 NullType, 24562 NullType, 24563 NullType, 24564 NullType, 24565 NullType, 24566 NullType, 24567 NullType, 24568 NullType, 24569 NullType, 24570 NullType, 24571 NullType, 24572 NullType, 24573 NullType, 24574 NullType, 24575 NullType, 24576 NullType, 24577 NullType, 24578 NullType, 24579 NullType, 24580 NullType, 24581 NullType, 24582 NullType, 24583 NullType, 24584 NullType, 24585 NullType, 24586 NullType, 24587 NullType, 24588 NullType, 24589 NullType, 24590 NullType, 24591 NullType, 24592 NullType, 24593 NullType, 24594 NullType, 24595 NullType, 24596 NullType, 24597 NullType, 24598 NullType, 24599 NullType, 24600 NullType, 24601 NullType, 24602 NullType, 24603 NullType, 24604 NullType, 24605 NullType, 24606 NullType, 24607 NullType, 24608 NullType, 24609 NullType, 24610 NullType, 24611 NullType, 24612 NullType, 24613 NullType, 24614 NullType, 24615 NullType, 24616 NullType, 24617 NullType, 24618 NullType, 24619 NullType, 24620 NullType, 24621 NullType, 24622 NullType, 24623 NullType, 24624 NullType, 24625 NullType, 24626 NullType, 24627 NullType, 24628 NullType, 24629 NullType, 24630 NullType, 24631 NullType, 24632 NullType, 24633 NullType, 24634 NullType> 24635 { 24636 typedef detail::KernelFunctorGlobal< 24637 T0, 24638 T1, 24639 T2, 24640 T3, 24641 T4, 24642 T5, 24643 T6, 24644 T7, 24645 T8, 24646 T9, 24647 T10, 24648 T11, 24649 T12, 24650 T13, 24651 T14, 24652 T15, 24653 T16, 24654 T17, 24655 T18, 24656 T19, 24657 T20, 24658 T21, 24659 T22, 24660 T23, 24661 T24, 24662 T25, 24663 T26, 24664 T27, 24665 T28, 24666 T29, 24667 T30, 24668 T31, 24669 T32, 24670 T33, 24671 T34, 24672 T35, 24673 T36, 24674 T37, 24675 T38, 24676 T39, 24677 T40, 24678 T41, 24679 T42, 24680 T43, 24681 T44, 24682 T45, 24683 T46, 24684 T47, 24685 T48, 24686 NullType, 24687 NullType, 24688 NullType, 24689 NullType, 24690 NullType, 24691 NullType, 24692 NullType, 24693 NullType, 24694 NullType, 24695 NullType, 24696 NullType, 24697 NullType, 24698 NullType, 24699 NullType, 24700 NullType, 24701 NullType, 24702 NullType, 24703 NullType, 24704 NullType, 24705 NullType, 24706 NullType, 24707 NullType, 24708 NullType, 24709 NullType, 24710 NullType, 24711 NullType, 24712 NullType, 24713 NullType, 24714 NullType, 24715 NullType, 24716 NullType, 24717 NullType, 24718 NullType, 24719 NullType, 24720 NullType, 24721 NullType, 24722 NullType, 24723 NullType, 24724 NullType, 24725 NullType, 24726 NullType, 24727 NullType, 24728 NullType, 24729 NullType, 24730 NullType, 24731 NullType, 24732 NullType, 24733 NullType, 24734 NullType, 24735 NullType, 24736 NullType, 24737 NullType, 24738 NullType, 24739 NullType, 24740 NullType, 24741 NullType, 24742 NullType, 24743 NullType, 24744 NullType, 24745 NullType, 24746 NullType, 24747 NullType, 24748 NullType, 24749 NullType, 24750 NullType, 24751 NullType, 24752 NullType, 24753 NullType, 24754 NullType, 24755 NullType, 24756 NullType, 24757 NullType, 24758 NullType, 24759 NullType, 24760 NullType, 24761 NullType, 24762 NullType, 24763 NullType, 24764 NullType> FunctorType; 24765 24766 FunctorType functor_; 24767 24768 functionImplementation_(const FunctorType &functor) : 24769 functor_(functor) 24770 { 24771 } 24772 24773 typedef std::tr1::function<Event ( 24774 const EnqueueArgs&, 24775 T0, 24776 T1, 24777 T2, 24778 T3, 24779 T4, 24780 T5, 24781 T6, 24782 T7, 24783 T8, 24784 T9, 24785 T10, 24786 T11, 24787 T12, 24788 T13, 24789 T14, 24790 T15, 24791 T16, 24792 T17, 24793 T18, 24794 T19, 24795 T20, 24796 T21, 24797 T22, 24798 T23, 24799 T24, 24800 T25, 24801 T26, 24802 T27, 24803 T28, 24804 T29, 24805 T30, 24806 T31, 24807 T32, 24808 T33, 24809 T34, 24810 T35, 24811 T36, 24812 T37, 24813 T38, 24814 T39, 24815 T40, 24816 T41, 24817 T42, 24818 T43, 24819 T44, 24820 T45, 24821 T46, 24822 T47, 24823 T48)> type_; 24824 24825 Event operator()(const EnqueueArgs& enqueueArgs, 24826 T0 arg0, 24827 T1 arg1, 24828 T2 arg2, 24829 T3 arg3, 24830 T4 arg4, 24831 T5 arg5, 24832 T6 arg6, 24833 T7 arg7, 24834 T8 arg8, 24835 T9 arg9, 24836 T10 arg10, 24837 T11 arg11, 24838 T12 arg12, 24839 T13 arg13, 24840 T14 arg14, 24841 T15 arg15, 24842 T16 arg16, 24843 T17 arg17, 24844 T18 arg18, 24845 T19 arg19, 24846 T20 arg20, 24847 T21 arg21, 24848 T22 arg22, 24849 T23 arg23, 24850 T24 arg24, 24851 T25 arg25, 24852 T26 arg26, 24853 T27 arg27, 24854 T28 arg28, 24855 T29 arg29, 24856 T30 arg30, 24857 T31 arg31, 24858 T32 arg32, 24859 T33 arg33, 24860 T34 arg34, 24861 T35 arg35, 24862 T36 arg36, 24863 T37 arg37, 24864 T38 arg38, 24865 T39 arg39, 24866 T40 arg40, 24867 T41 arg41, 24868 T42 arg42, 24869 T43 arg43, 24870 T44 arg44, 24871 T45 arg45, 24872 T46 arg46, 24873 T47 arg47, 24874 T48 arg48) 24875 { 24876 return functor_( 24877 enqueueArgs, 24878 arg0, 24879 arg1, 24880 arg2, 24881 arg3, 24882 arg4, 24883 arg5, 24884 arg6, 24885 arg7, 24886 arg8, 24887 arg9, 24888 arg10, 24889 arg11, 24890 arg12, 24891 arg13, 24892 arg14, 24893 arg15, 24894 arg16, 24895 arg17, 24896 arg18, 24897 arg19, 24898 arg20, 24899 arg21, 24900 arg22, 24901 arg23, 24902 arg24, 24903 arg25, 24904 arg26, 24905 arg27, 24906 arg28, 24907 arg29, 24908 arg30, 24909 arg31, 24910 arg32, 24911 arg33, 24912 arg34, 24913 arg35, 24914 arg36, 24915 arg37, 24916 arg38, 24917 arg39, 24918 arg40, 24919 arg41, 24920 arg42, 24921 arg43, 24922 arg44, 24923 arg45, 24924 arg46, 24925 arg47, 24926 arg48); 24927 } 24928 24929 operator type_ () 24930 { 24931 return type_(*this); 24932 } 24933 24934 }; 24935 24936 template< 24937 typename T0, 24938 typename T1, 24939 typename T2, 24940 typename T3, 24941 typename T4, 24942 typename T5, 24943 typename T6, 24944 typename T7, 24945 typename T8, 24946 typename T9, 24947 typename T10, 24948 typename T11, 24949 typename T12, 24950 typename T13, 24951 typename T14, 24952 typename T15, 24953 typename T16, 24954 typename T17, 24955 typename T18, 24956 typename T19, 24957 typename T20, 24958 typename T21, 24959 typename T22, 24960 typename T23, 24961 typename T24, 24962 typename T25, 24963 typename T26, 24964 typename T27, 24965 typename T28, 24966 typename T29, 24967 typename T30, 24968 typename T31, 24969 typename T32, 24970 typename T33, 24971 typename T34, 24972 typename T35, 24973 typename T36, 24974 typename T37, 24975 typename T38, 24976 typename T39, 24977 typename T40, 24978 typename T41, 24979 typename T42, 24980 typename T43, 24981 typename T44, 24982 typename T45, 24983 typename T46, 24984 typename T47, 24985 typename T48, 24986 typename T49> 24987 struct functionImplementation_< 24988 T0, 24989 T1, 24990 T2, 24991 T3, 24992 T4, 24993 T5, 24994 T6, 24995 T7, 24996 T8, 24997 T9, 24998 T10, 24999 T11, 25000 T12, 25001 T13, 25002 T14, 25003 T15, 25004 T16, 25005 T17, 25006 T18, 25007 T19, 25008 T20, 25009 T21, 25010 T22, 25011 T23, 25012 T24, 25013 T25, 25014 T26, 25015 T27, 25016 T28, 25017 T29, 25018 T30, 25019 T31, 25020 T32, 25021 T33, 25022 T34, 25023 T35, 25024 T36, 25025 T37, 25026 T38, 25027 T39, 25028 T40, 25029 T41, 25030 T42, 25031 T43, 25032 T44, 25033 T45, 25034 T46, 25035 T47, 25036 T48, 25037 T49, 25038 NullType, 25039 NullType, 25040 NullType, 25041 NullType, 25042 NullType, 25043 NullType, 25044 NullType, 25045 NullType, 25046 NullType, 25047 NullType, 25048 NullType, 25049 NullType, 25050 NullType, 25051 NullType, 25052 NullType, 25053 NullType, 25054 NullType, 25055 NullType, 25056 NullType, 25057 NullType, 25058 NullType, 25059 NullType, 25060 NullType, 25061 NullType, 25062 NullType, 25063 NullType, 25064 NullType, 25065 NullType, 25066 NullType, 25067 NullType, 25068 NullType, 25069 NullType, 25070 NullType, 25071 NullType, 25072 NullType, 25073 NullType, 25074 NullType, 25075 NullType, 25076 NullType, 25077 NullType, 25078 NullType, 25079 NullType, 25080 NullType, 25081 NullType, 25082 NullType, 25083 NullType, 25084 NullType, 25085 NullType, 25086 NullType, 25087 NullType, 25088 NullType, 25089 NullType, 25090 NullType, 25091 NullType, 25092 NullType, 25093 NullType, 25094 NullType, 25095 NullType, 25096 NullType, 25097 NullType, 25098 NullType, 25099 NullType, 25100 NullType, 25101 NullType, 25102 NullType, 25103 NullType, 25104 NullType, 25105 NullType, 25106 NullType, 25107 NullType, 25108 NullType, 25109 NullType, 25110 NullType, 25111 NullType, 25112 NullType, 25113 NullType, 25114 NullType, 25115 NullType> 25116 { 25117 typedef detail::KernelFunctorGlobal< 25118 T0, 25119 T1, 25120 T2, 25121 T3, 25122 T4, 25123 T5, 25124 T6, 25125 T7, 25126 T8, 25127 T9, 25128 T10, 25129 T11, 25130 T12, 25131 T13, 25132 T14, 25133 T15, 25134 T16, 25135 T17, 25136 T18, 25137 T19, 25138 T20, 25139 T21, 25140 T22, 25141 T23, 25142 T24, 25143 T25, 25144 T26, 25145 T27, 25146 T28, 25147 T29, 25148 T30, 25149 T31, 25150 T32, 25151 T33, 25152 T34, 25153 T35, 25154 T36, 25155 T37, 25156 T38, 25157 T39, 25158 T40, 25159 T41, 25160 T42, 25161 T43, 25162 T44, 25163 T45, 25164 T46, 25165 T47, 25166 T48, 25167 T49, 25168 NullType, 25169 NullType, 25170 NullType, 25171 NullType, 25172 NullType, 25173 NullType, 25174 NullType, 25175 NullType, 25176 NullType, 25177 NullType, 25178 NullType, 25179 NullType, 25180 NullType, 25181 NullType, 25182 NullType, 25183 NullType, 25184 NullType, 25185 NullType, 25186 NullType, 25187 NullType, 25188 NullType, 25189 NullType, 25190 NullType, 25191 NullType, 25192 NullType, 25193 NullType, 25194 NullType, 25195 NullType, 25196 NullType, 25197 NullType, 25198 NullType, 25199 NullType, 25200 NullType, 25201 NullType, 25202 NullType, 25203 NullType, 25204 NullType, 25205 NullType, 25206 NullType, 25207 NullType, 25208 NullType, 25209 NullType, 25210 NullType, 25211 NullType, 25212 NullType, 25213 NullType, 25214 NullType, 25215 NullType, 25216 NullType, 25217 NullType, 25218 NullType, 25219 NullType, 25220 NullType, 25221 NullType, 25222 NullType, 25223 NullType, 25224 NullType, 25225 NullType, 25226 NullType, 25227 NullType, 25228 NullType, 25229 NullType, 25230 NullType, 25231 NullType, 25232 NullType, 25233 NullType, 25234 NullType, 25235 NullType, 25236 NullType, 25237 NullType, 25238 NullType, 25239 NullType, 25240 NullType, 25241 NullType, 25242 NullType, 25243 NullType, 25244 NullType, 25245 NullType> FunctorType; 25246 25247 FunctorType functor_; 25248 25249 functionImplementation_(const FunctorType &functor) : 25250 functor_(functor) 25251 { 25252 } 25253 25254 typedef std::tr1::function<Event ( 25255 const EnqueueArgs&, 25256 T0, 25257 T1, 25258 T2, 25259 T3, 25260 T4, 25261 T5, 25262 T6, 25263 T7, 25264 T8, 25265 T9, 25266 T10, 25267 T11, 25268 T12, 25269 T13, 25270 T14, 25271 T15, 25272 T16, 25273 T17, 25274 T18, 25275 T19, 25276 T20, 25277 T21, 25278 T22, 25279 T23, 25280 T24, 25281 T25, 25282 T26, 25283 T27, 25284 T28, 25285 T29, 25286 T30, 25287 T31, 25288 T32, 25289 T33, 25290 T34, 25291 T35, 25292 T36, 25293 T37, 25294 T38, 25295 T39, 25296 T40, 25297 T41, 25298 T42, 25299 T43, 25300 T44, 25301 T45, 25302 T46, 25303 T47, 25304 T48, 25305 T49)> type_; 25306 25307 Event operator()(const EnqueueArgs& enqueueArgs, 25308 T0 arg0, 25309 T1 arg1, 25310 T2 arg2, 25311 T3 arg3, 25312 T4 arg4, 25313 T5 arg5, 25314 T6 arg6, 25315 T7 arg7, 25316 T8 arg8, 25317 T9 arg9, 25318 T10 arg10, 25319 T11 arg11, 25320 T12 arg12, 25321 T13 arg13, 25322 T14 arg14, 25323 T15 arg15, 25324 T16 arg16, 25325 T17 arg17, 25326 T18 arg18, 25327 T19 arg19, 25328 T20 arg20, 25329 T21 arg21, 25330 T22 arg22, 25331 T23 arg23, 25332 T24 arg24, 25333 T25 arg25, 25334 T26 arg26, 25335 T27 arg27, 25336 T28 arg28, 25337 T29 arg29, 25338 T30 arg30, 25339 T31 arg31, 25340 T32 arg32, 25341 T33 arg33, 25342 T34 arg34, 25343 T35 arg35, 25344 T36 arg36, 25345 T37 arg37, 25346 T38 arg38, 25347 T39 arg39, 25348 T40 arg40, 25349 T41 arg41, 25350 T42 arg42, 25351 T43 arg43, 25352 T44 arg44, 25353 T45 arg45, 25354 T46 arg46, 25355 T47 arg47, 25356 T48 arg48, 25357 T49 arg49) 25358 { 25359 return functor_( 25360 enqueueArgs, 25361 arg0, 25362 arg1, 25363 arg2, 25364 arg3, 25365 arg4, 25366 arg5, 25367 arg6, 25368 arg7, 25369 arg8, 25370 arg9, 25371 arg10, 25372 arg11, 25373 arg12, 25374 arg13, 25375 arg14, 25376 arg15, 25377 arg16, 25378 arg17, 25379 arg18, 25380 arg19, 25381 arg20, 25382 arg21, 25383 arg22, 25384 arg23, 25385 arg24, 25386 arg25, 25387 arg26, 25388 arg27, 25389 arg28, 25390 arg29, 25391 arg30, 25392 arg31, 25393 arg32, 25394 arg33, 25395 arg34, 25396 arg35, 25397 arg36, 25398 arg37, 25399 arg38, 25400 arg39, 25401 arg40, 25402 arg41, 25403 arg42, 25404 arg43, 25405 arg44, 25406 arg45, 25407 arg46, 25408 arg47, 25409 arg48, 25410 arg49); 25411 } 25412 25413 operator type_ () 25414 { 25415 return type_(*this); 25416 } 25417 25418 }; 25419 25420 template< 25421 typename T0, 25422 typename T1, 25423 typename T2, 25424 typename T3, 25425 typename T4, 25426 typename T5, 25427 typename T6, 25428 typename T7, 25429 typename T8, 25430 typename T9, 25431 typename T10, 25432 typename T11, 25433 typename T12, 25434 typename T13, 25435 typename T14, 25436 typename T15, 25437 typename T16, 25438 typename T17, 25439 typename T18, 25440 typename T19, 25441 typename T20, 25442 typename T21, 25443 typename T22, 25444 typename T23, 25445 typename T24, 25446 typename T25, 25447 typename T26, 25448 typename T27, 25449 typename T28, 25450 typename T29, 25451 typename T30, 25452 typename T31, 25453 typename T32, 25454 typename T33, 25455 typename T34, 25456 typename T35, 25457 typename T36, 25458 typename T37, 25459 typename T38, 25460 typename T39, 25461 typename T40, 25462 typename T41, 25463 typename T42, 25464 typename T43, 25465 typename T44, 25466 typename T45, 25467 typename T46, 25468 typename T47, 25469 typename T48, 25470 typename T49, 25471 typename T50> 25472 struct functionImplementation_< 25473 T0, 25474 T1, 25475 T2, 25476 T3, 25477 T4, 25478 T5, 25479 T6, 25480 T7, 25481 T8, 25482 T9, 25483 T10, 25484 T11, 25485 T12, 25486 T13, 25487 T14, 25488 T15, 25489 T16, 25490 T17, 25491 T18, 25492 T19, 25493 T20, 25494 T21, 25495 T22, 25496 T23, 25497 T24, 25498 T25, 25499 T26, 25500 T27, 25501 T28, 25502 T29, 25503 T30, 25504 T31, 25505 T32, 25506 T33, 25507 T34, 25508 T35, 25509 T36, 25510 T37, 25511 T38, 25512 T39, 25513 T40, 25514 T41, 25515 T42, 25516 T43, 25517 T44, 25518 T45, 25519 T46, 25520 T47, 25521 T48, 25522 T49, 25523 T50, 25524 NullType, 25525 NullType, 25526 NullType, 25527 NullType, 25528 NullType, 25529 NullType, 25530 NullType, 25531 NullType, 25532 NullType, 25533 NullType, 25534 NullType, 25535 NullType, 25536 NullType, 25537 NullType, 25538 NullType, 25539 NullType, 25540 NullType, 25541 NullType, 25542 NullType, 25543 NullType, 25544 NullType, 25545 NullType, 25546 NullType, 25547 NullType, 25548 NullType, 25549 NullType, 25550 NullType, 25551 NullType, 25552 NullType, 25553 NullType, 25554 NullType, 25555 NullType, 25556 NullType, 25557 NullType, 25558 NullType, 25559 NullType, 25560 NullType, 25561 NullType, 25562 NullType, 25563 NullType, 25564 NullType, 25565 NullType, 25566 NullType, 25567 NullType, 25568 NullType, 25569 NullType, 25570 NullType, 25571 NullType, 25572 NullType, 25573 NullType, 25574 NullType, 25575 NullType, 25576 NullType, 25577 NullType, 25578 NullType, 25579 NullType, 25580 NullType, 25581 NullType, 25582 NullType, 25583 NullType, 25584 NullType, 25585 NullType, 25586 NullType, 25587 NullType, 25588 NullType, 25589 NullType, 25590 NullType, 25591 NullType, 25592 NullType, 25593 NullType, 25594 NullType, 25595 NullType, 25596 NullType, 25597 NullType, 25598 NullType, 25599 NullType, 25600 NullType> 25601 { 25602 typedef detail::KernelFunctorGlobal< 25603 T0, 25604 T1, 25605 T2, 25606 T3, 25607 T4, 25608 T5, 25609 T6, 25610 T7, 25611 T8, 25612 T9, 25613 T10, 25614 T11, 25615 T12, 25616 T13, 25617 T14, 25618 T15, 25619 T16, 25620 T17, 25621 T18, 25622 T19, 25623 T20, 25624 T21, 25625 T22, 25626 T23, 25627 T24, 25628 T25, 25629 T26, 25630 T27, 25631 T28, 25632 T29, 25633 T30, 25634 T31, 25635 T32, 25636 T33, 25637 T34, 25638 T35, 25639 T36, 25640 T37, 25641 T38, 25642 T39, 25643 T40, 25644 T41, 25645 T42, 25646 T43, 25647 T44, 25648 T45, 25649 T46, 25650 T47, 25651 T48, 25652 T49, 25653 T50, 25654 NullType, 25655 NullType, 25656 NullType, 25657 NullType, 25658 NullType, 25659 NullType, 25660 NullType, 25661 NullType, 25662 NullType, 25663 NullType, 25664 NullType, 25665 NullType, 25666 NullType, 25667 NullType, 25668 NullType, 25669 NullType, 25670 NullType, 25671 NullType, 25672 NullType, 25673 NullType, 25674 NullType, 25675 NullType, 25676 NullType, 25677 NullType, 25678 NullType, 25679 NullType, 25680 NullType, 25681 NullType, 25682 NullType, 25683 NullType, 25684 NullType, 25685 NullType, 25686 NullType, 25687 NullType, 25688 NullType, 25689 NullType, 25690 NullType, 25691 NullType, 25692 NullType, 25693 NullType, 25694 NullType, 25695 NullType, 25696 NullType, 25697 NullType, 25698 NullType, 25699 NullType, 25700 NullType, 25701 NullType, 25702 NullType, 25703 NullType, 25704 NullType, 25705 NullType, 25706 NullType, 25707 NullType, 25708 NullType, 25709 NullType, 25710 NullType, 25711 NullType, 25712 NullType, 25713 NullType, 25714 NullType, 25715 NullType, 25716 NullType, 25717 NullType, 25718 NullType, 25719 NullType, 25720 NullType, 25721 NullType, 25722 NullType, 25723 NullType, 25724 NullType, 25725 NullType, 25726 NullType, 25727 NullType, 25728 NullType, 25729 NullType, 25730 NullType> FunctorType; 25731 25732 FunctorType functor_; 25733 25734 functionImplementation_(const FunctorType &functor) : 25735 functor_(functor) 25736 { 25737 } 25738 25739 typedef std::tr1::function<Event ( 25740 const EnqueueArgs&, 25741 T0, 25742 T1, 25743 T2, 25744 T3, 25745 T4, 25746 T5, 25747 T6, 25748 T7, 25749 T8, 25750 T9, 25751 T10, 25752 T11, 25753 T12, 25754 T13, 25755 T14, 25756 T15, 25757 T16, 25758 T17, 25759 T18, 25760 T19, 25761 T20, 25762 T21, 25763 T22, 25764 T23, 25765 T24, 25766 T25, 25767 T26, 25768 T27, 25769 T28, 25770 T29, 25771 T30, 25772 T31, 25773 T32, 25774 T33, 25775 T34, 25776 T35, 25777 T36, 25778 T37, 25779 T38, 25780 T39, 25781 T40, 25782 T41, 25783 T42, 25784 T43, 25785 T44, 25786 T45, 25787 T46, 25788 T47, 25789 T48, 25790 T49, 25791 T50)> type_; 25792 25793 Event operator()(const EnqueueArgs& enqueueArgs, 25794 T0 arg0, 25795 T1 arg1, 25796 T2 arg2, 25797 T3 arg3, 25798 T4 arg4, 25799 T5 arg5, 25800 T6 arg6, 25801 T7 arg7, 25802 T8 arg8, 25803 T9 arg9, 25804 T10 arg10, 25805 T11 arg11, 25806 T12 arg12, 25807 T13 arg13, 25808 T14 arg14, 25809 T15 arg15, 25810 T16 arg16, 25811 T17 arg17, 25812 T18 arg18, 25813 T19 arg19, 25814 T20 arg20, 25815 T21 arg21, 25816 T22 arg22, 25817 T23 arg23, 25818 T24 arg24, 25819 T25 arg25, 25820 T26 arg26, 25821 T27 arg27, 25822 T28 arg28, 25823 T29 arg29, 25824 T30 arg30, 25825 T31 arg31, 25826 T32 arg32, 25827 T33 arg33, 25828 T34 arg34, 25829 T35 arg35, 25830 T36 arg36, 25831 T37 arg37, 25832 T38 arg38, 25833 T39 arg39, 25834 T40 arg40, 25835 T41 arg41, 25836 T42 arg42, 25837 T43 arg43, 25838 T44 arg44, 25839 T45 arg45, 25840 T46 arg46, 25841 T47 arg47, 25842 T48 arg48, 25843 T49 arg49, 25844 T50 arg50) 25845 { 25846 return functor_( 25847 enqueueArgs, 25848 arg0, 25849 arg1, 25850 arg2, 25851 arg3, 25852 arg4, 25853 arg5, 25854 arg6, 25855 arg7, 25856 arg8, 25857 arg9, 25858 arg10, 25859 arg11, 25860 arg12, 25861 arg13, 25862 arg14, 25863 arg15, 25864 arg16, 25865 arg17, 25866 arg18, 25867 arg19, 25868 arg20, 25869 arg21, 25870 arg22, 25871 arg23, 25872 arg24, 25873 arg25, 25874 arg26, 25875 arg27, 25876 arg28, 25877 arg29, 25878 arg30, 25879 arg31, 25880 arg32, 25881 arg33, 25882 arg34, 25883 arg35, 25884 arg36, 25885 arg37, 25886 arg38, 25887 arg39, 25888 arg40, 25889 arg41, 25890 arg42, 25891 arg43, 25892 arg44, 25893 arg45, 25894 arg46, 25895 arg47, 25896 arg48, 25897 arg49, 25898 arg50); 25899 } 25900 25901 operator type_ () 25902 { 25903 return type_(*this); 25904 } 25905 25906 }; 25907 25908 template< 25909 typename T0, 25910 typename T1, 25911 typename T2, 25912 typename T3, 25913 typename T4, 25914 typename T5, 25915 typename T6, 25916 typename T7, 25917 typename T8, 25918 typename T9, 25919 typename T10, 25920 typename T11, 25921 typename T12, 25922 typename T13, 25923 typename T14, 25924 typename T15, 25925 typename T16, 25926 typename T17, 25927 typename T18, 25928 typename T19, 25929 typename T20, 25930 typename T21, 25931 typename T22, 25932 typename T23, 25933 typename T24, 25934 typename T25, 25935 typename T26, 25936 typename T27, 25937 typename T28, 25938 typename T29, 25939 typename T30, 25940 typename T31, 25941 typename T32, 25942 typename T33, 25943 typename T34, 25944 typename T35, 25945 typename T36, 25946 typename T37, 25947 typename T38, 25948 typename T39, 25949 typename T40, 25950 typename T41, 25951 typename T42, 25952 typename T43, 25953 typename T44, 25954 typename T45, 25955 typename T46, 25956 typename T47, 25957 typename T48, 25958 typename T49, 25959 typename T50, 25960 typename T51> 25961 struct functionImplementation_< 25962 T0, 25963 T1, 25964 T2, 25965 T3, 25966 T4, 25967 T5, 25968 T6, 25969 T7, 25970 T8, 25971 T9, 25972 T10, 25973 T11, 25974 T12, 25975 T13, 25976 T14, 25977 T15, 25978 T16, 25979 T17, 25980 T18, 25981 T19, 25982 T20, 25983 T21, 25984 T22, 25985 T23, 25986 T24, 25987 T25, 25988 T26, 25989 T27, 25990 T28, 25991 T29, 25992 T30, 25993 T31, 25994 T32, 25995 T33, 25996 T34, 25997 T35, 25998 T36, 25999 T37, 26000 T38, 26001 T39, 26002 T40, 26003 T41, 26004 T42, 26005 T43, 26006 T44, 26007 T45, 26008 T46, 26009 T47, 26010 T48, 26011 T49, 26012 T50, 26013 T51, 26014 NullType, 26015 NullType, 26016 NullType, 26017 NullType, 26018 NullType, 26019 NullType, 26020 NullType, 26021 NullType, 26022 NullType, 26023 NullType, 26024 NullType, 26025 NullType, 26026 NullType, 26027 NullType, 26028 NullType, 26029 NullType, 26030 NullType, 26031 NullType, 26032 NullType, 26033 NullType, 26034 NullType, 26035 NullType, 26036 NullType, 26037 NullType, 26038 NullType, 26039 NullType, 26040 NullType, 26041 NullType, 26042 NullType, 26043 NullType, 26044 NullType, 26045 NullType, 26046 NullType, 26047 NullType, 26048 NullType, 26049 NullType, 26050 NullType, 26051 NullType, 26052 NullType, 26053 NullType, 26054 NullType, 26055 NullType, 26056 NullType, 26057 NullType, 26058 NullType, 26059 NullType, 26060 NullType, 26061 NullType, 26062 NullType, 26063 NullType, 26064 NullType, 26065 NullType, 26066 NullType, 26067 NullType, 26068 NullType, 26069 NullType, 26070 NullType, 26071 NullType, 26072 NullType, 26073 NullType, 26074 NullType, 26075 NullType, 26076 NullType, 26077 NullType, 26078 NullType, 26079 NullType, 26080 NullType, 26081 NullType, 26082 NullType, 26083 NullType, 26084 NullType, 26085 NullType, 26086 NullType, 26087 NullType, 26088 NullType, 26089 NullType> 26090 { 26091 typedef detail::KernelFunctorGlobal< 26092 T0, 26093 T1, 26094 T2, 26095 T3, 26096 T4, 26097 T5, 26098 T6, 26099 T7, 26100 T8, 26101 T9, 26102 T10, 26103 T11, 26104 T12, 26105 T13, 26106 T14, 26107 T15, 26108 T16, 26109 T17, 26110 T18, 26111 T19, 26112 T20, 26113 T21, 26114 T22, 26115 T23, 26116 T24, 26117 T25, 26118 T26, 26119 T27, 26120 T28, 26121 T29, 26122 T30, 26123 T31, 26124 T32, 26125 T33, 26126 T34, 26127 T35, 26128 T36, 26129 T37, 26130 T38, 26131 T39, 26132 T40, 26133 T41, 26134 T42, 26135 T43, 26136 T44, 26137 T45, 26138 T46, 26139 T47, 26140 T48, 26141 T49, 26142 T50, 26143 T51, 26144 NullType, 26145 NullType, 26146 NullType, 26147 NullType, 26148 NullType, 26149 NullType, 26150 NullType, 26151 NullType, 26152 NullType, 26153 NullType, 26154 NullType, 26155 NullType, 26156 NullType, 26157 NullType, 26158 NullType, 26159 NullType, 26160 NullType, 26161 NullType, 26162 NullType, 26163 NullType, 26164 NullType, 26165 NullType, 26166 NullType, 26167 NullType, 26168 NullType, 26169 NullType, 26170 NullType, 26171 NullType, 26172 NullType, 26173 NullType, 26174 NullType, 26175 NullType, 26176 NullType, 26177 NullType, 26178 NullType, 26179 NullType, 26180 NullType, 26181 NullType, 26182 NullType, 26183 NullType, 26184 NullType, 26185 NullType, 26186 NullType, 26187 NullType, 26188 NullType, 26189 NullType, 26190 NullType, 26191 NullType, 26192 NullType, 26193 NullType, 26194 NullType, 26195 NullType, 26196 NullType, 26197 NullType, 26198 NullType, 26199 NullType, 26200 NullType, 26201 NullType, 26202 NullType, 26203 NullType, 26204 NullType, 26205 NullType, 26206 NullType, 26207 NullType, 26208 NullType, 26209 NullType, 26210 NullType, 26211 NullType, 26212 NullType, 26213 NullType, 26214 NullType, 26215 NullType, 26216 NullType, 26217 NullType, 26218 NullType, 26219 NullType> FunctorType; 26220 26221 FunctorType functor_; 26222 26223 functionImplementation_(const FunctorType &functor) : 26224 functor_(functor) 26225 { 26226 } 26227 26228 typedef std::tr1::function<Event ( 26229 const EnqueueArgs&, 26230 T0, 26231 T1, 26232 T2, 26233 T3, 26234 T4, 26235 T5, 26236 T6, 26237 T7, 26238 T8, 26239 T9, 26240 T10, 26241 T11, 26242 T12, 26243 T13, 26244 T14, 26245 T15, 26246 T16, 26247 T17, 26248 T18, 26249 T19, 26250 T20, 26251 T21, 26252 T22, 26253 T23, 26254 T24, 26255 T25, 26256 T26, 26257 T27, 26258 T28, 26259 T29, 26260 T30, 26261 T31, 26262 T32, 26263 T33, 26264 T34, 26265 T35, 26266 T36, 26267 T37, 26268 T38, 26269 T39, 26270 T40, 26271 T41, 26272 T42, 26273 T43, 26274 T44, 26275 T45, 26276 T46, 26277 T47, 26278 T48, 26279 T49, 26280 T50, 26281 T51)> type_; 26282 26283 Event operator()(const EnqueueArgs& enqueueArgs, 26284 T0 arg0, 26285 T1 arg1, 26286 T2 arg2, 26287 T3 arg3, 26288 T4 arg4, 26289 T5 arg5, 26290 T6 arg6, 26291 T7 arg7, 26292 T8 arg8, 26293 T9 arg9, 26294 T10 arg10, 26295 T11 arg11, 26296 T12 arg12, 26297 T13 arg13, 26298 T14 arg14, 26299 T15 arg15, 26300 T16 arg16, 26301 T17 arg17, 26302 T18 arg18, 26303 T19 arg19, 26304 T20 arg20, 26305 T21 arg21, 26306 T22 arg22, 26307 T23 arg23, 26308 T24 arg24, 26309 T25 arg25, 26310 T26 arg26, 26311 T27 arg27, 26312 T28 arg28, 26313 T29 arg29, 26314 T30 arg30, 26315 T31 arg31, 26316 T32 arg32, 26317 T33 arg33, 26318 T34 arg34, 26319 T35 arg35, 26320 T36 arg36, 26321 T37 arg37, 26322 T38 arg38, 26323 T39 arg39, 26324 T40 arg40, 26325 T41 arg41, 26326 T42 arg42, 26327 T43 arg43, 26328 T44 arg44, 26329 T45 arg45, 26330 T46 arg46, 26331 T47 arg47, 26332 T48 arg48, 26333 T49 arg49, 26334 T50 arg50, 26335 T51 arg51) 26336 { 26337 return functor_( 26338 enqueueArgs, 26339 arg0, 26340 arg1, 26341 arg2, 26342 arg3, 26343 arg4, 26344 arg5, 26345 arg6, 26346 arg7, 26347 arg8, 26348 arg9, 26349 arg10, 26350 arg11, 26351 arg12, 26352 arg13, 26353 arg14, 26354 arg15, 26355 arg16, 26356 arg17, 26357 arg18, 26358 arg19, 26359 arg20, 26360 arg21, 26361 arg22, 26362 arg23, 26363 arg24, 26364 arg25, 26365 arg26, 26366 arg27, 26367 arg28, 26368 arg29, 26369 arg30, 26370 arg31, 26371 arg32, 26372 arg33, 26373 arg34, 26374 arg35, 26375 arg36, 26376 arg37, 26377 arg38, 26378 arg39, 26379 arg40, 26380 arg41, 26381 arg42, 26382 arg43, 26383 arg44, 26384 arg45, 26385 arg46, 26386 arg47, 26387 arg48, 26388 arg49, 26389 arg50, 26390 arg51); 26391 } 26392 26393 operator type_ () 26394 { 26395 return type_(*this); 26396 } 26397 26398 }; 26399 26400 template< 26401 typename T0, 26402 typename T1, 26403 typename T2, 26404 typename T3, 26405 typename T4, 26406 typename T5, 26407 typename T6, 26408 typename T7, 26409 typename T8, 26410 typename T9, 26411 typename T10, 26412 typename T11, 26413 typename T12, 26414 typename T13, 26415 typename T14, 26416 typename T15, 26417 typename T16, 26418 typename T17, 26419 typename T18, 26420 typename T19, 26421 typename T20, 26422 typename T21, 26423 typename T22, 26424 typename T23, 26425 typename T24, 26426 typename T25, 26427 typename T26, 26428 typename T27, 26429 typename T28, 26430 typename T29, 26431 typename T30, 26432 typename T31, 26433 typename T32, 26434 typename T33, 26435 typename T34, 26436 typename T35, 26437 typename T36, 26438 typename T37, 26439 typename T38, 26440 typename T39, 26441 typename T40, 26442 typename T41, 26443 typename T42, 26444 typename T43, 26445 typename T44, 26446 typename T45, 26447 typename T46, 26448 typename T47, 26449 typename T48, 26450 typename T49, 26451 typename T50, 26452 typename T51, 26453 typename T52> 26454 struct functionImplementation_< 26455 T0, 26456 T1, 26457 T2, 26458 T3, 26459 T4, 26460 T5, 26461 T6, 26462 T7, 26463 T8, 26464 T9, 26465 T10, 26466 T11, 26467 T12, 26468 T13, 26469 T14, 26470 T15, 26471 T16, 26472 T17, 26473 T18, 26474 T19, 26475 T20, 26476 T21, 26477 T22, 26478 T23, 26479 T24, 26480 T25, 26481 T26, 26482 T27, 26483 T28, 26484 T29, 26485 T30, 26486 T31, 26487 T32, 26488 T33, 26489 T34, 26490 T35, 26491 T36, 26492 T37, 26493 T38, 26494 T39, 26495 T40, 26496 T41, 26497 T42, 26498 T43, 26499 T44, 26500 T45, 26501 T46, 26502 T47, 26503 T48, 26504 T49, 26505 T50, 26506 T51, 26507 T52, 26508 NullType, 26509 NullType, 26510 NullType, 26511 NullType, 26512 NullType, 26513 NullType, 26514 NullType, 26515 NullType, 26516 NullType, 26517 NullType, 26518 NullType, 26519 NullType, 26520 NullType, 26521 NullType, 26522 NullType, 26523 NullType, 26524 NullType, 26525 NullType, 26526 NullType, 26527 NullType, 26528 NullType, 26529 NullType, 26530 NullType, 26531 NullType, 26532 NullType, 26533 NullType, 26534 NullType, 26535 NullType, 26536 NullType, 26537 NullType, 26538 NullType, 26539 NullType, 26540 NullType, 26541 NullType, 26542 NullType, 26543 NullType, 26544 NullType, 26545 NullType, 26546 NullType, 26547 NullType, 26548 NullType, 26549 NullType, 26550 NullType, 26551 NullType, 26552 NullType, 26553 NullType, 26554 NullType, 26555 NullType, 26556 NullType, 26557 NullType, 26558 NullType, 26559 NullType, 26560 NullType, 26561 NullType, 26562 NullType, 26563 NullType, 26564 NullType, 26565 NullType, 26566 NullType, 26567 NullType, 26568 NullType, 26569 NullType, 26570 NullType, 26571 NullType, 26572 NullType, 26573 NullType, 26574 NullType, 26575 NullType, 26576 NullType, 26577 NullType, 26578 NullType, 26579 NullType, 26580 NullType, 26581 NullType, 26582 NullType> 26583 { 26584 typedef detail::KernelFunctorGlobal< 26585 T0, 26586 T1, 26587 T2, 26588 T3, 26589 T4, 26590 T5, 26591 T6, 26592 T7, 26593 T8, 26594 T9, 26595 T10, 26596 T11, 26597 T12, 26598 T13, 26599 T14, 26600 T15, 26601 T16, 26602 T17, 26603 T18, 26604 T19, 26605 T20, 26606 T21, 26607 T22, 26608 T23, 26609 T24, 26610 T25, 26611 T26, 26612 T27, 26613 T28, 26614 T29, 26615 T30, 26616 T31, 26617 T32, 26618 T33, 26619 T34, 26620 T35, 26621 T36, 26622 T37, 26623 T38, 26624 T39, 26625 T40, 26626 T41, 26627 T42, 26628 T43, 26629 T44, 26630 T45, 26631 T46, 26632 T47, 26633 T48, 26634 T49, 26635 T50, 26636 T51, 26637 T52, 26638 NullType, 26639 NullType, 26640 NullType, 26641 NullType, 26642 NullType, 26643 NullType, 26644 NullType, 26645 NullType, 26646 NullType, 26647 NullType, 26648 NullType, 26649 NullType, 26650 NullType, 26651 NullType, 26652 NullType, 26653 NullType, 26654 NullType, 26655 NullType, 26656 NullType, 26657 NullType, 26658 NullType, 26659 NullType, 26660 NullType, 26661 NullType, 26662 NullType, 26663 NullType, 26664 NullType, 26665 NullType, 26666 NullType, 26667 NullType, 26668 NullType, 26669 NullType, 26670 NullType, 26671 NullType, 26672 NullType, 26673 NullType, 26674 NullType, 26675 NullType, 26676 NullType, 26677 NullType, 26678 NullType, 26679 NullType, 26680 NullType, 26681 NullType, 26682 NullType, 26683 NullType, 26684 NullType, 26685 NullType, 26686 NullType, 26687 NullType, 26688 NullType, 26689 NullType, 26690 NullType, 26691 NullType, 26692 NullType, 26693 NullType, 26694 NullType, 26695 NullType, 26696 NullType, 26697 NullType, 26698 NullType, 26699 NullType, 26700 NullType, 26701 NullType, 26702 NullType, 26703 NullType, 26704 NullType, 26705 NullType, 26706 NullType, 26707 NullType, 26708 NullType, 26709 NullType, 26710 NullType, 26711 NullType, 26712 NullType> FunctorType; 26713 26714 FunctorType functor_; 26715 26716 functionImplementation_(const FunctorType &functor) : 26717 functor_(functor) 26718 { 26719 } 26720 26721 typedef std::tr1::function<Event ( 26722 const EnqueueArgs&, 26723 T0, 26724 T1, 26725 T2, 26726 T3, 26727 T4, 26728 T5, 26729 T6, 26730 T7, 26731 T8, 26732 T9, 26733 T10, 26734 T11, 26735 T12, 26736 T13, 26737 T14, 26738 T15, 26739 T16, 26740 T17, 26741 T18, 26742 T19, 26743 T20, 26744 T21, 26745 T22, 26746 T23, 26747 T24, 26748 T25, 26749 T26, 26750 T27, 26751 T28, 26752 T29, 26753 T30, 26754 T31, 26755 T32, 26756 T33, 26757 T34, 26758 T35, 26759 T36, 26760 T37, 26761 T38, 26762 T39, 26763 T40, 26764 T41, 26765 T42, 26766 T43, 26767 T44, 26768 T45, 26769 T46, 26770 T47, 26771 T48, 26772 T49, 26773 T50, 26774 T51, 26775 T52)> type_; 26776 26777 Event operator()(const EnqueueArgs& enqueueArgs, 26778 T0 arg0, 26779 T1 arg1, 26780 T2 arg2, 26781 T3 arg3, 26782 T4 arg4, 26783 T5 arg5, 26784 T6 arg6, 26785 T7 arg7, 26786 T8 arg8, 26787 T9 arg9, 26788 T10 arg10, 26789 T11 arg11, 26790 T12 arg12, 26791 T13 arg13, 26792 T14 arg14, 26793 T15 arg15, 26794 T16 arg16, 26795 T17 arg17, 26796 T18 arg18, 26797 T19 arg19, 26798 T20 arg20, 26799 T21 arg21, 26800 T22 arg22, 26801 T23 arg23, 26802 T24 arg24, 26803 T25 arg25, 26804 T26 arg26, 26805 T27 arg27, 26806 T28 arg28, 26807 T29 arg29, 26808 T30 arg30, 26809 T31 arg31, 26810 T32 arg32, 26811 T33 arg33, 26812 T34 arg34, 26813 T35 arg35, 26814 T36 arg36, 26815 T37 arg37, 26816 T38 arg38, 26817 T39 arg39, 26818 T40 arg40, 26819 T41 arg41, 26820 T42 arg42, 26821 T43 arg43, 26822 T44 arg44, 26823 T45 arg45, 26824 T46 arg46, 26825 T47 arg47, 26826 T48 arg48, 26827 T49 arg49, 26828 T50 arg50, 26829 T51 arg51, 26830 T52 arg52) 26831 { 26832 return functor_( 26833 enqueueArgs, 26834 arg0, 26835 arg1, 26836 arg2, 26837 arg3, 26838 arg4, 26839 arg5, 26840 arg6, 26841 arg7, 26842 arg8, 26843 arg9, 26844 arg10, 26845 arg11, 26846 arg12, 26847 arg13, 26848 arg14, 26849 arg15, 26850 arg16, 26851 arg17, 26852 arg18, 26853 arg19, 26854 arg20, 26855 arg21, 26856 arg22, 26857 arg23, 26858 arg24, 26859 arg25, 26860 arg26, 26861 arg27, 26862 arg28, 26863 arg29, 26864 arg30, 26865 arg31, 26866 arg32, 26867 arg33, 26868 arg34, 26869 arg35, 26870 arg36, 26871 arg37, 26872 arg38, 26873 arg39, 26874 arg40, 26875 arg41, 26876 arg42, 26877 arg43, 26878 arg44, 26879 arg45, 26880 arg46, 26881 arg47, 26882 arg48, 26883 arg49, 26884 arg50, 26885 arg51, 26886 arg52); 26887 } 26888 26889 operator type_ () 26890 { 26891 return type_(*this); 26892 } 26893 26894 }; 26895 26896 template< 26897 typename T0, 26898 typename T1, 26899 typename T2, 26900 typename T3, 26901 typename T4, 26902 typename T5, 26903 typename T6, 26904 typename T7, 26905 typename T8, 26906 typename T9, 26907 typename T10, 26908 typename T11, 26909 typename T12, 26910 typename T13, 26911 typename T14, 26912 typename T15, 26913 typename T16, 26914 typename T17, 26915 typename T18, 26916 typename T19, 26917 typename T20, 26918 typename T21, 26919 typename T22, 26920 typename T23, 26921 typename T24, 26922 typename T25, 26923 typename T26, 26924 typename T27, 26925 typename T28, 26926 typename T29, 26927 typename T30, 26928 typename T31, 26929 typename T32, 26930 typename T33, 26931 typename T34, 26932 typename T35, 26933 typename T36, 26934 typename T37, 26935 typename T38, 26936 typename T39, 26937 typename T40, 26938 typename T41, 26939 typename T42, 26940 typename T43, 26941 typename T44, 26942 typename T45, 26943 typename T46, 26944 typename T47, 26945 typename T48, 26946 typename T49, 26947 typename T50, 26948 typename T51, 26949 typename T52, 26950 typename T53> 26951 struct functionImplementation_< 26952 T0, 26953 T1, 26954 T2, 26955 T3, 26956 T4, 26957 T5, 26958 T6, 26959 T7, 26960 T8, 26961 T9, 26962 T10, 26963 T11, 26964 T12, 26965 T13, 26966 T14, 26967 T15, 26968 T16, 26969 T17, 26970 T18, 26971 T19, 26972 T20, 26973 T21, 26974 T22, 26975 T23, 26976 T24, 26977 T25, 26978 T26, 26979 T27, 26980 T28, 26981 T29, 26982 T30, 26983 T31, 26984 T32, 26985 T33, 26986 T34, 26987 T35, 26988 T36, 26989 T37, 26990 T38, 26991 T39, 26992 T40, 26993 T41, 26994 T42, 26995 T43, 26996 T44, 26997 T45, 26998 T46, 26999 T47, 27000 T48, 27001 T49, 27002 T50, 27003 T51, 27004 T52, 27005 T53, 27006 NullType, 27007 NullType, 27008 NullType, 27009 NullType, 27010 NullType, 27011 NullType, 27012 NullType, 27013 NullType, 27014 NullType, 27015 NullType, 27016 NullType, 27017 NullType, 27018 NullType, 27019 NullType, 27020 NullType, 27021 NullType, 27022 NullType, 27023 NullType, 27024 NullType, 27025 NullType, 27026 NullType, 27027 NullType, 27028 NullType, 27029 NullType, 27030 NullType, 27031 NullType, 27032 NullType, 27033 NullType, 27034 NullType, 27035 NullType, 27036 NullType, 27037 NullType, 27038 NullType, 27039 NullType, 27040 NullType, 27041 NullType, 27042 NullType, 27043 NullType, 27044 NullType, 27045 NullType, 27046 NullType, 27047 NullType, 27048 NullType, 27049 NullType, 27050 NullType, 27051 NullType, 27052 NullType, 27053 NullType, 27054 NullType, 27055 NullType, 27056 NullType, 27057 NullType, 27058 NullType, 27059 NullType, 27060 NullType, 27061 NullType, 27062 NullType, 27063 NullType, 27064 NullType, 27065 NullType, 27066 NullType, 27067 NullType, 27068 NullType, 27069 NullType, 27070 NullType, 27071 NullType, 27072 NullType, 27073 NullType, 27074 NullType, 27075 NullType, 27076 NullType, 27077 NullType, 27078 NullType, 27079 NullType> 27080 { 27081 typedef detail::KernelFunctorGlobal< 27082 T0, 27083 T1, 27084 T2, 27085 T3, 27086 T4, 27087 T5, 27088 T6, 27089 T7, 27090 T8, 27091 T9, 27092 T10, 27093 T11, 27094 T12, 27095 T13, 27096 T14, 27097 T15, 27098 T16, 27099 T17, 27100 T18, 27101 T19, 27102 T20, 27103 T21, 27104 T22, 27105 T23, 27106 T24, 27107 T25, 27108 T26, 27109 T27, 27110 T28, 27111 T29, 27112 T30, 27113 T31, 27114 T32, 27115 T33, 27116 T34, 27117 T35, 27118 T36, 27119 T37, 27120 T38, 27121 T39, 27122 T40, 27123 T41, 27124 T42, 27125 T43, 27126 T44, 27127 T45, 27128 T46, 27129 T47, 27130 T48, 27131 T49, 27132 T50, 27133 T51, 27134 T52, 27135 T53, 27136 NullType, 27137 NullType, 27138 NullType, 27139 NullType, 27140 NullType, 27141 NullType, 27142 NullType, 27143 NullType, 27144 NullType, 27145 NullType, 27146 NullType, 27147 NullType, 27148 NullType, 27149 NullType, 27150 NullType, 27151 NullType, 27152 NullType, 27153 NullType, 27154 NullType, 27155 NullType, 27156 NullType, 27157 NullType, 27158 NullType, 27159 NullType, 27160 NullType, 27161 NullType, 27162 NullType, 27163 NullType, 27164 NullType, 27165 NullType, 27166 NullType, 27167 NullType, 27168 NullType, 27169 NullType, 27170 NullType, 27171 NullType, 27172 NullType, 27173 NullType, 27174 NullType, 27175 NullType, 27176 NullType, 27177 NullType, 27178 NullType, 27179 NullType, 27180 NullType, 27181 NullType, 27182 NullType, 27183 NullType, 27184 NullType, 27185 NullType, 27186 NullType, 27187 NullType, 27188 NullType, 27189 NullType, 27190 NullType, 27191 NullType, 27192 NullType, 27193 NullType, 27194 NullType, 27195 NullType, 27196 NullType, 27197 NullType, 27198 NullType, 27199 NullType, 27200 NullType, 27201 NullType, 27202 NullType, 27203 NullType, 27204 NullType, 27205 NullType, 27206 NullType, 27207 NullType, 27208 NullType, 27209 NullType> FunctorType; 27210 27211 FunctorType functor_; 27212 27213 functionImplementation_(const FunctorType &functor) : 27214 functor_(functor) 27215 { 27216 } 27217 27218 typedef std::tr1::function<Event ( 27219 const EnqueueArgs&, 27220 T0, 27221 T1, 27222 T2, 27223 T3, 27224 T4, 27225 T5, 27226 T6, 27227 T7, 27228 T8, 27229 T9, 27230 T10, 27231 T11, 27232 T12, 27233 T13, 27234 T14, 27235 T15, 27236 T16, 27237 T17, 27238 T18, 27239 T19, 27240 T20, 27241 T21, 27242 T22, 27243 T23, 27244 T24, 27245 T25, 27246 T26, 27247 T27, 27248 T28, 27249 T29, 27250 T30, 27251 T31, 27252 T32, 27253 T33, 27254 T34, 27255 T35, 27256 T36, 27257 T37, 27258 T38, 27259 T39, 27260 T40, 27261 T41, 27262 T42, 27263 T43, 27264 T44, 27265 T45, 27266 T46, 27267 T47, 27268 T48, 27269 T49, 27270 T50, 27271 T51, 27272 T52, 27273 T53)> type_; 27274 27275 Event operator()(const EnqueueArgs& enqueueArgs, 27276 T0 arg0, 27277 T1 arg1, 27278 T2 arg2, 27279 T3 arg3, 27280 T4 arg4, 27281 T5 arg5, 27282 T6 arg6, 27283 T7 arg7, 27284 T8 arg8, 27285 T9 arg9, 27286 T10 arg10, 27287 T11 arg11, 27288 T12 arg12, 27289 T13 arg13, 27290 T14 arg14, 27291 T15 arg15, 27292 T16 arg16, 27293 T17 arg17, 27294 T18 arg18, 27295 T19 arg19, 27296 T20 arg20, 27297 T21 arg21, 27298 T22 arg22, 27299 T23 arg23, 27300 T24 arg24, 27301 T25 arg25, 27302 T26 arg26, 27303 T27 arg27, 27304 T28 arg28, 27305 T29 arg29, 27306 T30 arg30, 27307 T31 arg31, 27308 T32 arg32, 27309 T33 arg33, 27310 T34 arg34, 27311 T35 arg35, 27312 T36 arg36, 27313 T37 arg37, 27314 T38 arg38, 27315 T39 arg39, 27316 T40 arg40, 27317 T41 arg41, 27318 T42 arg42, 27319 T43 arg43, 27320 T44 arg44, 27321 T45 arg45, 27322 T46 arg46, 27323 T47 arg47, 27324 T48 arg48, 27325 T49 arg49, 27326 T50 arg50, 27327 T51 arg51, 27328 T52 arg52, 27329 T53 arg53) 27330 { 27331 return functor_( 27332 enqueueArgs, 27333 arg0, 27334 arg1, 27335 arg2, 27336 arg3, 27337 arg4, 27338 arg5, 27339 arg6, 27340 arg7, 27341 arg8, 27342 arg9, 27343 arg10, 27344 arg11, 27345 arg12, 27346 arg13, 27347 arg14, 27348 arg15, 27349 arg16, 27350 arg17, 27351 arg18, 27352 arg19, 27353 arg20, 27354 arg21, 27355 arg22, 27356 arg23, 27357 arg24, 27358 arg25, 27359 arg26, 27360 arg27, 27361 arg28, 27362 arg29, 27363 arg30, 27364 arg31, 27365 arg32, 27366 arg33, 27367 arg34, 27368 arg35, 27369 arg36, 27370 arg37, 27371 arg38, 27372 arg39, 27373 arg40, 27374 arg41, 27375 arg42, 27376 arg43, 27377 arg44, 27378 arg45, 27379 arg46, 27380 arg47, 27381 arg48, 27382 arg49, 27383 arg50, 27384 arg51, 27385 arg52, 27386 arg53); 27387 } 27388 27389 operator type_ () 27390 { 27391 return type_(*this); 27392 } 27393 27394 }; 27395 27396 template< 27397 typename T0, 27398 typename T1, 27399 typename T2, 27400 typename T3, 27401 typename T4, 27402 typename T5, 27403 typename T6, 27404 typename T7, 27405 typename T8, 27406 typename T9, 27407 typename T10, 27408 typename T11, 27409 typename T12, 27410 typename T13, 27411 typename T14, 27412 typename T15, 27413 typename T16, 27414 typename T17, 27415 typename T18, 27416 typename T19, 27417 typename T20, 27418 typename T21, 27419 typename T22, 27420 typename T23, 27421 typename T24, 27422 typename T25, 27423 typename T26, 27424 typename T27, 27425 typename T28, 27426 typename T29, 27427 typename T30, 27428 typename T31, 27429 typename T32, 27430 typename T33, 27431 typename T34, 27432 typename T35, 27433 typename T36, 27434 typename T37, 27435 typename T38, 27436 typename T39, 27437 typename T40, 27438 typename T41, 27439 typename T42, 27440 typename T43, 27441 typename T44, 27442 typename T45, 27443 typename T46, 27444 typename T47, 27445 typename T48, 27446 typename T49, 27447 typename T50, 27448 typename T51, 27449 typename T52, 27450 typename T53, 27451 typename T54> 27452 struct functionImplementation_< 27453 T0, 27454 T1, 27455 T2, 27456 T3, 27457 T4, 27458 T5, 27459 T6, 27460 T7, 27461 T8, 27462 T9, 27463 T10, 27464 T11, 27465 T12, 27466 T13, 27467 T14, 27468 T15, 27469 T16, 27470 T17, 27471 T18, 27472 T19, 27473 T20, 27474 T21, 27475 T22, 27476 T23, 27477 T24, 27478 T25, 27479 T26, 27480 T27, 27481 T28, 27482 T29, 27483 T30, 27484 T31, 27485 T32, 27486 T33, 27487 T34, 27488 T35, 27489 T36, 27490 T37, 27491 T38, 27492 T39, 27493 T40, 27494 T41, 27495 T42, 27496 T43, 27497 T44, 27498 T45, 27499 T46, 27500 T47, 27501 T48, 27502 T49, 27503 T50, 27504 T51, 27505 T52, 27506 T53, 27507 T54, 27508 NullType, 27509 NullType, 27510 NullType, 27511 NullType, 27512 NullType, 27513 NullType, 27514 NullType, 27515 NullType, 27516 NullType, 27517 NullType, 27518 NullType, 27519 NullType, 27520 NullType, 27521 NullType, 27522 NullType, 27523 NullType, 27524 NullType, 27525 NullType, 27526 NullType, 27527 NullType, 27528 NullType, 27529 NullType, 27530 NullType, 27531 NullType, 27532 NullType, 27533 NullType, 27534 NullType, 27535 NullType, 27536 NullType, 27537 NullType, 27538 NullType, 27539 NullType, 27540 NullType, 27541 NullType, 27542 NullType, 27543 NullType, 27544 NullType, 27545 NullType, 27546 NullType, 27547 NullType, 27548 NullType, 27549 NullType, 27550 NullType, 27551 NullType, 27552 NullType, 27553 NullType, 27554 NullType, 27555 NullType, 27556 NullType, 27557 NullType, 27558 NullType, 27559 NullType, 27560 NullType, 27561 NullType, 27562 NullType, 27563 NullType, 27564 NullType, 27565 NullType, 27566 NullType, 27567 NullType, 27568 NullType, 27569 NullType, 27570 NullType, 27571 NullType, 27572 NullType, 27573 NullType, 27574 NullType, 27575 NullType, 27576 NullType, 27577 NullType, 27578 NullType, 27579 NullType, 27580 NullType> 27581 { 27582 typedef detail::KernelFunctorGlobal< 27583 T0, 27584 T1, 27585 T2, 27586 T3, 27587 T4, 27588 T5, 27589 T6, 27590 T7, 27591 T8, 27592 T9, 27593 T10, 27594 T11, 27595 T12, 27596 T13, 27597 T14, 27598 T15, 27599 T16, 27600 T17, 27601 T18, 27602 T19, 27603 T20, 27604 T21, 27605 T22, 27606 T23, 27607 T24, 27608 T25, 27609 T26, 27610 T27, 27611 T28, 27612 T29, 27613 T30, 27614 T31, 27615 T32, 27616 T33, 27617 T34, 27618 T35, 27619 T36, 27620 T37, 27621 T38, 27622 T39, 27623 T40, 27624 T41, 27625 T42, 27626 T43, 27627 T44, 27628 T45, 27629 T46, 27630 T47, 27631 T48, 27632 T49, 27633 T50, 27634 T51, 27635 T52, 27636 T53, 27637 T54, 27638 NullType, 27639 NullType, 27640 NullType, 27641 NullType, 27642 NullType, 27643 NullType, 27644 NullType, 27645 NullType, 27646 NullType, 27647 NullType, 27648 NullType, 27649 NullType, 27650 NullType, 27651 NullType, 27652 NullType, 27653 NullType, 27654 NullType, 27655 NullType, 27656 NullType, 27657 NullType, 27658 NullType, 27659 NullType, 27660 NullType, 27661 NullType, 27662 NullType, 27663 NullType, 27664 NullType, 27665 NullType, 27666 NullType, 27667 NullType, 27668 NullType, 27669 NullType, 27670 NullType, 27671 NullType, 27672 NullType, 27673 NullType, 27674 NullType, 27675 NullType, 27676 NullType, 27677 NullType, 27678 NullType, 27679 NullType, 27680 NullType, 27681 NullType, 27682 NullType, 27683 NullType, 27684 NullType, 27685 NullType, 27686 NullType, 27687 NullType, 27688 NullType, 27689 NullType, 27690 NullType, 27691 NullType, 27692 NullType, 27693 NullType, 27694 NullType, 27695 NullType, 27696 NullType, 27697 NullType, 27698 NullType, 27699 NullType, 27700 NullType, 27701 NullType, 27702 NullType, 27703 NullType, 27704 NullType, 27705 NullType, 27706 NullType, 27707 NullType, 27708 NullType, 27709 NullType, 27710 NullType> FunctorType; 27711 27712 FunctorType functor_; 27713 27714 functionImplementation_(const FunctorType &functor) : 27715 functor_(functor) 27716 { 27717 } 27718 27719 typedef std::tr1::function<Event ( 27720 const EnqueueArgs&, 27721 T0, 27722 T1, 27723 T2, 27724 T3, 27725 T4, 27726 T5, 27727 T6, 27728 T7, 27729 T8, 27730 T9, 27731 T10, 27732 T11, 27733 T12, 27734 T13, 27735 T14, 27736 T15, 27737 T16, 27738 T17, 27739 T18, 27740 T19, 27741 T20, 27742 T21, 27743 T22, 27744 T23, 27745 T24, 27746 T25, 27747 T26, 27748 T27, 27749 T28, 27750 T29, 27751 T30, 27752 T31, 27753 T32, 27754 T33, 27755 T34, 27756 T35, 27757 T36, 27758 T37, 27759 T38, 27760 T39, 27761 T40, 27762 T41, 27763 T42, 27764 T43, 27765 T44, 27766 T45, 27767 T46, 27768 T47, 27769 T48, 27770 T49, 27771 T50, 27772 T51, 27773 T52, 27774 T53, 27775 T54)> type_; 27776 27777 Event operator()(const EnqueueArgs& enqueueArgs, 27778 T0 arg0, 27779 T1 arg1, 27780 T2 arg2, 27781 T3 arg3, 27782 T4 arg4, 27783 T5 arg5, 27784 T6 arg6, 27785 T7 arg7, 27786 T8 arg8, 27787 T9 arg9, 27788 T10 arg10, 27789 T11 arg11, 27790 T12 arg12, 27791 T13 arg13, 27792 T14 arg14, 27793 T15 arg15, 27794 T16 arg16, 27795 T17 arg17, 27796 T18 arg18, 27797 T19 arg19, 27798 T20 arg20, 27799 T21 arg21, 27800 T22 arg22, 27801 T23 arg23, 27802 T24 arg24, 27803 T25 arg25, 27804 T26 arg26, 27805 T27 arg27, 27806 T28 arg28, 27807 T29 arg29, 27808 T30 arg30, 27809 T31 arg31, 27810 T32 arg32, 27811 T33 arg33, 27812 T34 arg34, 27813 T35 arg35, 27814 T36 arg36, 27815 T37 arg37, 27816 T38 arg38, 27817 T39 arg39, 27818 T40 arg40, 27819 T41 arg41, 27820 T42 arg42, 27821 T43 arg43, 27822 T44 arg44, 27823 T45 arg45, 27824 T46 arg46, 27825 T47 arg47, 27826 T48 arg48, 27827 T49 arg49, 27828 T50 arg50, 27829 T51 arg51, 27830 T52 arg52, 27831 T53 arg53, 27832 T54 arg54) 27833 { 27834 return functor_( 27835 enqueueArgs, 27836 arg0, 27837 arg1, 27838 arg2, 27839 arg3, 27840 arg4, 27841 arg5, 27842 arg6, 27843 arg7, 27844 arg8, 27845 arg9, 27846 arg10, 27847 arg11, 27848 arg12, 27849 arg13, 27850 arg14, 27851 arg15, 27852 arg16, 27853 arg17, 27854 arg18, 27855 arg19, 27856 arg20, 27857 arg21, 27858 arg22, 27859 arg23, 27860 arg24, 27861 arg25, 27862 arg26, 27863 arg27, 27864 arg28, 27865 arg29, 27866 arg30, 27867 arg31, 27868 arg32, 27869 arg33, 27870 arg34, 27871 arg35, 27872 arg36, 27873 arg37, 27874 arg38, 27875 arg39, 27876 arg40, 27877 arg41, 27878 arg42, 27879 arg43, 27880 arg44, 27881 arg45, 27882 arg46, 27883 arg47, 27884 arg48, 27885 arg49, 27886 arg50, 27887 arg51, 27888 arg52, 27889 arg53, 27890 arg54); 27891 } 27892 27893 operator type_ () 27894 { 27895 return type_(*this); 27896 } 27897 27898 }; 27899 27900 template< 27901 typename T0, 27902 typename T1, 27903 typename T2, 27904 typename T3, 27905 typename T4, 27906 typename T5, 27907 typename T6, 27908 typename T7, 27909 typename T8, 27910 typename T9, 27911 typename T10, 27912 typename T11, 27913 typename T12, 27914 typename T13, 27915 typename T14, 27916 typename T15, 27917 typename T16, 27918 typename T17, 27919 typename T18, 27920 typename T19, 27921 typename T20, 27922 typename T21, 27923 typename T22, 27924 typename T23, 27925 typename T24, 27926 typename T25, 27927 typename T26, 27928 typename T27, 27929 typename T28, 27930 typename T29, 27931 typename T30, 27932 typename T31, 27933 typename T32, 27934 typename T33, 27935 typename T34, 27936 typename T35, 27937 typename T36, 27938 typename T37, 27939 typename T38, 27940 typename T39, 27941 typename T40, 27942 typename T41, 27943 typename T42, 27944 typename T43, 27945 typename T44, 27946 typename T45, 27947 typename T46, 27948 typename T47, 27949 typename T48, 27950 typename T49, 27951 typename T50, 27952 typename T51, 27953 typename T52, 27954 typename T53, 27955 typename T54, 27956 typename T55> 27957 struct functionImplementation_< 27958 T0, 27959 T1, 27960 T2, 27961 T3, 27962 T4, 27963 T5, 27964 T6, 27965 T7, 27966 T8, 27967 T9, 27968 T10, 27969 T11, 27970 T12, 27971 T13, 27972 T14, 27973 T15, 27974 T16, 27975 T17, 27976 T18, 27977 T19, 27978 T20, 27979 T21, 27980 T22, 27981 T23, 27982 T24, 27983 T25, 27984 T26, 27985 T27, 27986 T28, 27987 T29, 27988 T30, 27989 T31, 27990 T32, 27991 T33, 27992 T34, 27993 T35, 27994 T36, 27995 T37, 27996 T38, 27997 T39, 27998 T40, 27999 T41, 28000 T42, 28001 T43, 28002 T44, 28003 T45, 28004 T46, 28005 T47, 28006 T48, 28007 T49, 28008 T50, 28009 T51, 28010 T52, 28011 T53, 28012 T54, 28013 T55, 28014 NullType, 28015 NullType, 28016 NullType, 28017 NullType, 28018 NullType, 28019 NullType, 28020 NullType, 28021 NullType, 28022 NullType, 28023 NullType, 28024 NullType, 28025 NullType, 28026 NullType, 28027 NullType, 28028 NullType, 28029 NullType, 28030 NullType, 28031 NullType, 28032 NullType, 28033 NullType, 28034 NullType, 28035 NullType, 28036 NullType, 28037 NullType, 28038 NullType, 28039 NullType, 28040 NullType, 28041 NullType, 28042 NullType, 28043 NullType, 28044 NullType, 28045 NullType, 28046 NullType, 28047 NullType, 28048 NullType, 28049 NullType, 28050 NullType, 28051 NullType, 28052 NullType, 28053 NullType, 28054 NullType, 28055 NullType, 28056 NullType, 28057 NullType, 28058 NullType, 28059 NullType, 28060 NullType, 28061 NullType, 28062 NullType, 28063 NullType, 28064 NullType, 28065 NullType, 28066 NullType, 28067 NullType, 28068 NullType, 28069 NullType, 28070 NullType, 28071 NullType, 28072 NullType, 28073 NullType, 28074 NullType, 28075 NullType, 28076 NullType, 28077 NullType, 28078 NullType, 28079 NullType, 28080 NullType, 28081 NullType, 28082 NullType, 28083 NullType, 28084 NullType, 28085 NullType> 28086 { 28087 typedef detail::KernelFunctorGlobal< 28088 T0, 28089 T1, 28090 T2, 28091 T3, 28092 T4, 28093 T5, 28094 T6, 28095 T7, 28096 T8, 28097 T9, 28098 T10, 28099 T11, 28100 T12, 28101 T13, 28102 T14, 28103 T15, 28104 T16, 28105 T17, 28106 T18, 28107 T19, 28108 T20, 28109 T21, 28110 T22, 28111 T23, 28112 T24, 28113 T25, 28114 T26, 28115 T27, 28116 T28, 28117 T29, 28118 T30, 28119 T31, 28120 T32, 28121 T33, 28122 T34, 28123 T35, 28124 T36, 28125 T37, 28126 T38, 28127 T39, 28128 T40, 28129 T41, 28130 T42, 28131 T43, 28132 T44, 28133 T45, 28134 T46, 28135 T47, 28136 T48, 28137 T49, 28138 T50, 28139 T51, 28140 T52, 28141 T53, 28142 T54, 28143 T55, 28144 NullType, 28145 NullType, 28146 NullType, 28147 NullType, 28148 NullType, 28149 NullType, 28150 NullType, 28151 NullType, 28152 NullType, 28153 NullType, 28154 NullType, 28155 NullType, 28156 NullType, 28157 NullType, 28158 NullType, 28159 NullType, 28160 NullType, 28161 NullType, 28162 NullType, 28163 NullType, 28164 NullType, 28165 NullType, 28166 NullType, 28167 NullType, 28168 NullType, 28169 NullType, 28170 NullType, 28171 NullType, 28172 NullType, 28173 NullType, 28174 NullType, 28175 NullType, 28176 NullType, 28177 NullType, 28178 NullType, 28179 NullType, 28180 NullType, 28181 NullType, 28182 NullType, 28183 NullType, 28184 NullType, 28185 NullType, 28186 NullType, 28187 NullType, 28188 NullType, 28189 NullType, 28190 NullType, 28191 NullType, 28192 NullType, 28193 NullType, 28194 NullType, 28195 NullType, 28196 NullType, 28197 NullType, 28198 NullType, 28199 NullType, 28200 NullType, 28201 NullType, 28202 NullType, 28203 NullType, 28204 NullType, 28205 NullType, 28206 NullType, 28207 NullType, 28208 NullType, 28209 NullType, 28210 NullType, 28211 NullType, 28212 NullType, 28213 NullType, 28214 NullType, 28215 NullType> FunctorType; 28216 28217 FunctorType functor_; 28218 28219 functionImplementation_(const FunctorType &functor) : 28220 functor_(functor) 28221 { 28222 } 28223 28224 typedef std::tr1::function<Event ( 28225 const EnqueueArgs&, 28226 T0, 28227 T1, 28228 T2, 28229 T3, 28230 T4, 28231 T5, 28232 T6, 28233 T7, 28234 T8, 28235 T9, 28236 T10, 28237 T11, 28238 T12, 28239 T13, 28240 T14, 28241 T15, 28242 T16, 28243 T17, 28244 T18, 28245 T19, 28246 T20, 28247 T21, 28248 T22, 28249 T23, 28250 T24, 28251 T25, 28252 T26, 28253 T27, 28254 T28, 28255 T29, 28256 T30, 28257 T31, 28258 T32, 28259 T33, 28260 T34, 28261 T35, 28262 T36, 28263 T37, 28264 T38, 28265 T39, 28266 T40, 28267 T41, 28268 T42, 28269 T43, 28270 T44, 28271 T45, 28272 T46, 28273 T47, 28274 T48, 28275 T49, 28276 T50, 28277 T51, 28278 T52, 28279 T53, 28280 T54, 28281 T55)> type_; 28282 28283 Event operator()(const EnqueueArgs& enqueueArgs, 28284 T0 arg0, 28285 T1 arg1, 28286 T2 arg2, 28287 T3 arg3, 28288 T4 arg4, 28289 T5 arg5, 28290 T6 arg6, 28291 T7 arg7, 28292 T8 arg8, 28293 T9 arg9, 28294 T10 arg10, 28295 T11 arg11, 28296 T12 arg12, 28297 T13 arg13, 28298 T14 arg14, 28299 T15 arg15, 28300 T16 arg16, 28301 T17 arg17, 28302 T18 arg18, 28303 T19 arg19, 28304 T20 arg20, 28305 T21 arg21, 28306 T22 arg22, 28307 T23 arg23, 28308 T24 arg24, 28309 T25 arg25, 28310 T26 arg26, 28311 T27 arg27, 28312 T28 arg28, 28313 T29 arg29, 28314 T30 arg30, 28315 T31 arg31, 28316 T32 arg32, 28317 T33 arg33, 28318 T34 arg34, 28319 T35 arg35, 28320 T36 arg36, 28321 T37 arg37, 28322 T38 arg38, 28323 T39 arg39, 28324 T40 arg40, 28325 T41 arg41, 28326 T42 arg42, 28327 T43 arg43, 28328 T44 arg44, 28329 T45 arg45, 28330 T46 arg46, 28331 T47 arg47, 28332 T48 arg48, 28333 T49 arg49, 28334 T50 arg50, 28335 T51 arg51, 28336 T52 arg52, 28337 T53 arg53, 28338 T54 arg54, 28339 T55 arg55) 28340 { 28341 return functor_( 28342 enqueueArgs, 28343 arg0, 28344 arg1, 28345 arg2, 28346 arg3, 28347 arg4, 28348 arg5, 28349 arg6, 28350 arg7, 28351 arg8, 28352 arg9, 28353 arg10, 28354 arg11, 28355 arg12, 28356 arg13, 28357 arg14, 28358 arg15, 28359 arg16, 28360 arg17, 28361 arg18, 28362 arg19, 28363 arg20, 28364 arg21, 28365 arg22, 28366 arg23, 28367 arg24, 28368 arg25, 28369 arg26, 28370 arg27, 28371 arg28, 28372 arg29, 28373 arg30, 28374 arg31, 28375 arg32, 28376 arg33, 28377 arg34, 28378 arg35, 28379 arg36, 28380 arg37, 28381 arg38, 28382 arg39, 28383 arg40, 28384 arg41, 28385 arg42, 28386 arg43, 28387 arg44, 28388 arg45, 28389 arg46, 28390 arg47, 28391 arg48, 28392 arg49, 28393 arg50, 28394 arg51, 28395 arg52, 28396 arg53, 28397 arg54, 28398 arg55); 28399 } 28400 28401 operator type_ () 28402 { 28403 return type_(*this); 28404 } 28405 28406 }; 28407 28408 template< 28409 typename T0, 28410 typename T1, 28411 typename T2, 28412 typename T3, 28413 typename T4, 28414 typename T5, 28415 typename T6, 28416 typename T7, 28417 typename T8, 28418 typename T9, 28419 typename T10, 28420 typename T11, 28421 typename T12, 28422 typename T13, 28423 typename T14, 28424 typename T15, 28425 typename T16, 28426 typename T17, 28427 typename T18, 28428 typename T19, 28429 typename T20, 28430 typename T21, 28431 typename T22, 28432 typename T23, 28433 typename T24, 28434 typename T25, 28435 typename T26, 28436 typename T27, 28437 typename T28, 28438 typename T29, 28439 typename T30, 28440 typename T31, 28441 typename T32, 28442 typename T33, 28443 typename T34, 28444 typename T35, 28445 typename T36, 28446 typename T37, 28447 typename T38, 28448 typename T39, 28449 typename T40, 28450 typename T41, 28451 typename T42, 28452 typename T43, 28453 typename T44, 28454 typename T45, 28455 typename T46, 28456 typename T47, 28457 typename T48, 28458 typename T49, 28459 typename T50, 28460 typename T51, 28461 typename T52, 28462 typename T53, 28463 typename T54, 28464 typename T55, 28465 typename T56> 28466 struct functionImplementation_< 28467 T0, 28468 T1, 28469 T2, 28470 T3, 28471 T4, 28472 T5, 28473 T6, 28474 T7, 28475 T8, 28476 T9, 28477 T10, 28478 T11, 28479 T12, 28480 T13, 28481 T14, 28482 T15, 28483 T16, 28484 T17, 28485 T18, 28486 T19, 28487 T20, 28488 T21, 28489 T22, 28490 T23, 28491 T24, 28492 T25, 28493 T26, 28494 T27, 28495 T28, 28496 T29, 28497 T30, 28498 T31, 28499 T32, 28500 T33, 28501 T34, 28502 T35, 28503 T36, 28504 T37, 28505 T38, 28506 T39, 28507 T40, 28508 T41, 28509 T42, 28510 T43, 28511 T44, 28512 T45, 28513 T46, 28514 T47, 28515 T48, 28516 T49, 28517 T50, 28518 T51, 28519 T52, 28520 T53, 28521 T54, 28522 T55, 28523 T56, 28524 NullType, 28525 NullType, 28526 NullType, 28527 NullType, 28528 NullType, 28529 NullType, 28530 NullType, 28531 NullType, 28532 NullType, 28533 NullType, 28534 NullType, 28535 NullType, 28536 NullType, 28537 NullType, 28538 NullType, 28539 NullType, 28540 NullType, 28541 NullType, 28542 NullType, 28543 NullType, 28544 NullType, 28545 NullType, 28546 NullType, 28547 NullType, 28548 NullType, 28549 NullType, 28550 NullType, 28551 NullType, 28552 NullType, 28553 NullType, 28554 NullType, 28555 NullType, 28556 NullType, 28557 NullType, 28558 NullType, 28559 NullType, 28560 NullType, 28561 NullType, 28562 NullType, 28563 NullType, 28564 NullType, 28565 NullType, 28566 NullType, 28567 NullType, 28568 NullType, 28569 NullType, 28570 NullType, 28571 NullType, 28572 NullType, 28573 NullType, 28574 NullType, 28575 NullType, 28576 NullType, 28577 NullType, 28578 NullType, 28579 NullType, 28580 NullType, 28581 NullType, 28582 NullType, 28583 NullType, 28584 NullType, 28585 NullType, 28586 NullType, 28587 NullType, 28588 NullType, 28589 NullType, 28590 NullType, 28591 NullType, 28592 NullType, 28593 NullType, 28594 NullType> 28595 { 28596 typedef detail::KernelFunctorGlobal< 28597 T0, 28598 T1, 28599 T2, 28600 T3, 28601 T4, 28602 T5, 28603 T6, 28604 T7, 28605 T8, 28606 T9, 28607 T10, 28608 T11, 28609 T12, 28610 T13, 28611 T14, 28612 T15, 28613 T16, 28614 T17, 28615 T18, 28616 T19, 28617 T20, 28618 T21, 28619 T22, 28620 T23, 28621 T24, 28622 T25, 28623 T26, 28624 T27, 28625 T28, 28626 T29, 28627 T30, 28628 T31, 28629 T32, 28630 T33, 28631 T34, 28632 T35, 28633 T36, 28634 T37, 28635 T38, 28636 T39, 28637 T40, 28638 T41, 28639 T42, 28640 T43, 28641 T44, 28642 T45, 28643 T46, 28644 T47, 28645 T48, 28646 T49, 28647 T50, 28648 T51, 28649 T52, 28650 T53, 28651 T54, 28652 T55, 28653 T56, 28654 NullType, 28655 NullType, 28656 NullType, 28657 NullType, 28658 NullType, 28659 NullType, 28660 NullType, 28661 NullType, 28662 NullType, 28663 NullType, 28664 NullType, 28665 NullType, 28666 NullType, 28667 NullType, 28668 NullType, 28669 NullType, 28670 NullType, 28671 NullType, 28672 NullType, 28673 NullType, 28674 NullType, 28675 NullType, 28676 NullType, 28677 NullType, 28678 NullType, 28679 NullType, 28680 NullType, 28681 NullType, 28682 NullType, 28683 NullType, 28684 NullType, 28685 NullType, 28686 NullType, 28687 NullType, 28688 NullType, 28689 NullType, 28690 NullType, 28691 NullType, 28692 NullType, 28693 NullType, 28694 NullType, 28695 NullType, 28696 NullType, 28697 NullType, 28698 NullType, 28699 NullType, 28700 NullType, 28701 NullType, 28702 NullType, 28703 NullType, 28704 NullType, 28705 NullType, 28706 NullType, 28707 NullType, 28708 NullType, 28709 NullType, 28710 NullType, 28711 NullType, 28712 NullType, 28713 NullType, 28714 NullType, 28715 NullType, 28716 NullType, 28717 NullType, 28718 NullType, 28719 NullType, 28720 NullType, 28721 NullType, 28722 NullType, 28723 NullType, 28724 NullType> FunctorType; 28725 28726 FunctorType functor_; 28727 28728 functionImplementation_(const FunctorType &functor) : 28729 functor_(functor) 28730 { 28731 } 28732 28733 typedef std::tr1::function<Event ( 28734 const EnqueueArgs&, 28735 T0, 28736 T1, 28737 T2, 28738 T3, 28739 T4, 28740 T5, 28741 T6, 28742 T7, 28743 T8, 28744 T9, 28745 T10, 28746 T11, 28747 T12, 28748 T13, 28749 T14, 28750 T15, 28751 T16, 28752 T17, 28753 T18, 28754 T19, 28755 T20, 28756 T21, 28757 T22, 28758 T23, 28759 T24, 28760 T25, 28761 T26, 28762 T27, 28763 T28, 28764 T29, 28765 T30, 28766 T31, 28767 T32, 28768 T33, 28769 T34, 28770 T35, 28771 T36, 28772 T37, 28773 T38, 28774 T39, 28775 T40, 28776 T41, 28777 T42, 28778 T43, 28779 T44, 28780 T45, 28781 T46, 28782 T47, 28783 T48, 28784 T49, 28785 T50, 28786 T51, 28787 T52, 28788 T53, 28789 T54, 28790 T55, 28791 T56)> type_; 28792 28793 Event operator()(const EnqueueArgs& enqueueArgs, 28794 T0 arg0, 28795 T1 arg1, 28796 T2 arg2, 28797 T3 arg3, 28798 T4 arg4, 28799 T5 arg5, 28800 T6 arg6, 28801 T7 arg7, 28802 T8 arg8, 28803 T9 arg9, 28804 T10 arg10, 28805 T11 arg11, 28806 T12 arg12, 28807 T13 arg13, 28808 T14 arg14, 28809 T15 arg15, 28810 T16 arg16, 28811 T17 arg17, 28812 T18 arg18, 28813 T19 arg19, 28814 T20 arg20, 28815 T21 arg21, 28816 T22 arg22, 28817 T23 arg23, 28818 T24 arg24, 28819 T25 arg25, 28820 T26 arg26, 28821 T27 arg27, 28822 T28 arg28, 28823 T29 arg29, 28824 T30 arg30, 28825 T31 arg31, 28826 T32 arg32, 28827 T33 arg33, 28828 T34 arg34, 28829 T35 arg35, 28830 T36 arg36, 28831 T37 arg37, 28832 T38 arg38, 28833 T39 arg39, 28834 T40 arg40, 28835 T41 arg41, 28836 T42 arg42, 28837 T43 arg43, 28838 T44 arg44, 28839 T45 arg45, 28840 T46 arg46, 28841 T47 arg47, 28842 T48 arg48, 28843 T49 arg49, 28844 T50 arg50, 28845 T51 arg51, 28846 T52 arg52, 28847 T53 arg53, 28848 T54 arg54, 28849 T55 arg55, 28850 T56 arg56) 28851 { 28852 return functor_( 28853 enqueueArgs, 28854 arg0, 28855 arg1, 28856 arg2, 28857 arg3, 28858 arg4, 28859 arg5, 28860 arg6, 28861 arg7, 28862 arg8, 28863 arg9, 28864 arg10, 28865 arg11, 28866 arg12, 28867 arg13, 28868 arg14, 28869 arg15, 28870 arg16, 28871 arg17, 28872 arg18, 28873 arg19, 28874 arg20, 28875 arg21, 28876 arg22, 28877 arg23, 28878 arg24, 28879 arg25, 28880 arg26, 28881 arg27, 28882 arg28, 28883 arg29, 28884 arg30, 28885 arg31, 28886 arg32, 28887 arg33, 28888 arg34, 28889 arg35, 28890 arg36, 28891 arg37, 28892 arg38, 28893 arg39, 28894 arg40, 28895 arg41, 28896 arg42, 28897 arg43, 28898 arg44, 28899 arg45, 28900 arg46, 28901 arg47, 28902 arg48, 28903 arg49, 28904 arg50, 28905 arg51, 28906 arg52, 28907 arg53, 28908 arg54, 28909 arg55, 28910 arg56); 28911 } 28912 28913 operator type_ () 28914 { 28915 return type_(*this); 28916 } 28917 28918 }; 28919 28920 template< 28921 typename T0, 28922 typename T1, 28923 typename T2, 28924 typename T3, 28925 typename T4, 28926 typename T5, 28927 typename T6, 28928 typename T7, 28929 typename T8, 28930 typename T9, 28931 typename T10, 28932 typename T11, 28933 typename T12, 28934 typename T13, 28935 typename T14, 28936 typename T15, 28937 typename T16, 28938 typename T17, 28939 typename T18, 28940 typename T19, 28941 typename T20, 28942 typename T21, 28943 typename T22, 28944 typename T23, 28945 typename T24, 28946 typename T25, 28947 typename T26, 28948 typename T27, 28949 typename T28, 28950 typename T29, 28951 typename T30, 28952 typename T31, 28953 typename T32, 28954 typename T33, 28955 typename T34, 28956 typename T35, 28957 typename T36, 28958 typename T37, 28959 typename T38, 28960 typename T39, 28961 typename T40, 28962 typename T41, 28963 typename T42, 28964 typename T43, 28965 typename T44, 28966 typename T45, 28967 typename T46, 28968 typename T47, 28969 typename T48, 28970 typename T49, 28971 typename T50, 28972 typename T51, 28973 typename T52, 28974 typename T53, 28975 typename T54, 28976 typename T55, 28977 typename T56, 28978 typename T57> 28979 struct functionImplementation_< 28980 T0, 28981 T1, 28982 T2, 28983 T3, 28984 T4, 28985 T5, 28986 T6, 28987 T7, 28988 T8, 28989 T9, 28990 T10, 28991 T11, 28992 T12, 28993 T13, 28994 T14, 28995 T15, 28996 T16, 28997 T17, 28998 T18, 28999 T19, 29000 T20, 29001 T21, 29002 T22, 29003 T23, 29004 T24, 29005 T25, 29006 T26, 29007 T27, 29008 T28, 29009 T29, 29010 T30, 29011 T31, 29012 T32, 29013 T33, 29014 T34, 29015 T35, 29016 T36, 29017 T37, 29018 T38, 29019 T39, 29020 T40, 29021 T41, 29022 T42, 29023 T43, 29024 T44, 29025 T45, 29026 T46, 29027 T47, 29028 T48, 29029 T49, 29030 T50, 29031 T51, 29032 T52, 29033 T53, 29034 T54, 29035 T55, 29036 T56, 29037 T57, 29038 NullType, 29039 NullType, 29040 NullType, 29041 NullType, 29042 NullType, 29043 NullType, 29044 NullType, 29045 NullType, 29046 NullType, 29047 NullType, 29048 NullType, 29049 NullType, 29050 NullType, 29051 NullType, 29052 NullType, 29053 NullType, 29054 NullType, 29055 NullType, 29056 NullType, 29057 NullType, 29058 NullType, 29059 NullType, 29060 NullType, 29061 NullType, 29062 NullType, 29063 NullType, 29064 NullType, 29065 NullType, 29066 NullType, 29067 NullType, 29068 NullType, 29069 NullType, 29070 NullType, 29071 NullType, 29072 NullType, 29073 NullType, 29074 NullType, 29075 NullType, 29076 NullType, 29077 NullType, 29078 NullType, 29079 NullType, 29080 NullType, 29081 NullType, 29082 NullType, 29083 NullType, 29084 NullType, 29085 NullType, 29086 NullType, 29087 NullType, 29088 NullType, 29089 NullType, 29090 NullType, 29091 NullType, 29092 NullType, 29093 NullType, 29094 NullType, 29095 NullType, 29096 NullType, 29097 NullType, 29098 NullType, 29099 NullType, 29100 NullType, 29101 NullType, 29102 NullType, 29103 NullType, 29104 NullType, 29105 NullType, 29106 NullType, 29107 NullType> 29108 { 29109 typedef detail::KernelFunctorGlobal< 29110 T0, 29111 T1, 29112 T2, 29113 T3, 29114 T4, 29115 T5, 29116 T6, 29117 T7, 29118 T8, 29119 T9, 29120 T10, 29121 T11, 29122 T12, 29123 T13, 29124 T14, 29125 T15, 29126 T16, 29127 T17, 29128 T18, 29129 T19, 29130 T20, 29131 T21, 29132 T22, 29133 T23, 29134 T24, 29135 T25, 29136 T26, 29137 T27, 29138 T28, 29139 T29, 29140 T30, 29141 T31, 29142 T32, 29143 T33, 29144 T34, 29145 T35, 29146 T36, 29147 T37, 29148 T38, 29149 T39, 29150 T40, 29151 T41, 29152 T42, 29153 T43, 29154 T44, 29155 T45, 29156 T46, 29157 T47, 29158 T48, 29159 T49, 29160 T50, 29161 T51, 29162 T52, 29163 T53, 29164 T54, 29165 T55, 29166 T56, 29167 T57, 29168 NullType, 29169 NullType, 29170 NullType, 29171 NullType, 29172 NullType, 29173 NullType, 29174 NullType, 29175 NullType, 29176 NullType, 29177 NullType, 29178 NullType, 29179 NullType, 29180 NullType, 29181 NullType, 29182 NullType, 29183 NullType, 29184 NullType, 29185 NullType, 29186 NullType, 29187 NullType, 29188 NullType, 29189 NullType, 29190 NullType, 29191 NullType, 29192 NullType, 29193 NullType, 29194 NullType, 29195 NullType, 29196 NullType, 29197 NullType, 29198 NullType, 29199 NullType, 29200 NullType, 29201 NullType, 29202 NullType, 29203 NullType, 29204 NullType, 29205 NullType, 29206 NullType, 29207 NullType, 29208 NullType, 29209 NullType, 29210 NullType, 29211 NullType, 29212 NullType, 29213 NullType, 29214 NullType, 29215 NullType, 29216 NullType, 29217 NullType, 29218 NullType, 29219 NullType, 29220 NullType, 29221 NullType, 29222 NullType, 29223 NullType, 29224 NullType, 29225 NullType, 29226 NullType, 29227 NullType, 29228 NullType, 29229 NullType, 29230 NullType, 29231 NullType, 29232 NullType, 29233 NullType, 29234 NullType, 29235 NullType, 29236 NullType, 29237 NullType> FunctorType; 29238 29239 FunctorType functor_; 29240 29241 functionImplementation_(const FunctorType &functor) : 29242 functor_(functor) 29243 { 29244 } 29245 29246 typedef std::tr1::function<Event ( 29247 const EnqueueArgs&, 29248 T0, 29249 T1, 29250 T2, 29251 T3, 29252 T4, 29253 T5, 29254 T6, 29255 T7, 29256 T8, 29257 T9, 29258 T10, 29259 T11, 29260 T12, 29261 T13, 29262 T14, 29263 T15, 29264 T16, 29265 T17, 29266 T18, 29267 T19, 29268 T20, 29269 T21, 29270 T22, 29271 T23, 29272 T24, 29273 T25, 29274 T26, 29275 T27, 29276 T28, 29277 T29, 29278 T30, 29279 T31, 29280 T32, 29281 T33, 29282 T34, 29283 T35, 29284 T36, 29285 T37, 29286 T38, 29287 T39, 29288 T40, 29289 T41, 29290 T42, 29291 T43, 29292 T44, 29293 T45, 29294 T46, 29295 T47, 29296 T48, 29297 T49, 29298 T50, 29299 T51, 29300 T52, 29301 T53, 29302 T54, 29303 T55, 29304 T56, 29305 T57)> type_; 29306 29307 Event operator()(const EnqueueArgs& enqueueArgs, 29308 T0 arg0, 29309 T1 arg1, 29310 T2 arg2, 29311 T3 arg3, 29312 T4 arg4, 29313 T5 arg5, 29314 T6 arg6, 29315 T7 arg7, 29316 T8 arg8, 29317 T9 arg9, 29318 T10 arg10, 29319 T11 arg11, 29320 T12 arg12, 29321 T13 arg13, 29322 T14 arg14, 29323 T15 arg15, 29324 T16 arg16, 29325 T17 arg17, 29326 T18 arg18, 29327 T19 arg19, 29328 T20 arg20, 29329 T21 arg21, 29330 T22 arg22, 29331 T23 arg23, 29332 T24 arg24, 29333 T25 arg25, 29334 T26 arg26, 29335 T27 arg27, 29336 T28 arg28, 29337 T29 arg29, 29338 T30 arg30, 29339 T31 arg31, 29340 T32 arg32, 29341 T33 arg33, 29342 T34 arg34, 29343 T35 arg35, 29344 T36 arg36, 29345 T37 arg37, 29346 T38 arg38, 29347 T39 arg39, 29348 T40 arg40, 29349 T41 arg41, 29350 T42 arg42, 29351 T43 arg43, 29352 T44 arg44, 29353 T45 arg45, 29354 T46 arg46, 29355 T47 arg47, 29356 T48 arg48, 29357 T49 arg49, 29358 T50 arg50, 29359 T51 arg51, 29360 T52 arg52, 29361 T53 arg53, 29362 T54 arg54, 29363 T55 arg55, 29364 T56 arg56, 29365 T57 arg57) 29366 { 29367 return functor_( 29368 enqueueArgs, 29369 arg0, 29370 arg1, 29371 arg2, 29372 arg3, 29373 arg4, 29374 arg5, 29375 arg6, 29376 arg7, 29377 arg8, 29378 arg9, 29379 arg10, 29380 arg11, 29381 arg12, 29382 arg13, 29383 arg14, 29384 arg15, 29385 arg16, 29386 arg17, 29387 arg18, 29388 arg19, 29389 arg20, 29390 arg21, 29391 arg22, 29392 arg23, 29393 arg24, 29394 arg25, 29395 arg26, 29396 arg27, 29397 arg28, 29398 arg29, 29399 arg30, 29400 arg31, 29401 arg32, 29402 arg33, 29403 arg34, 29404 arg35, 29405 arg36, 29406 arg37, 29407 arg38, 29408 arg39, 29409 arg40, 29410 arg41, 29411 arg42, 29412 arg43, 29413 arg44, 29414 arg45, 29415 arg46, 29416 arg47, 29417 arg48, 29418 arg49, 29419 arg50, 29420 arg51, 29421 arg52, 29422 arg53, 29423 arg54, 29424 arg55, 29425 arg56, 29426 arg57); 29427 } 29428 29429 operator type_ () 29430 { 29431 return type_(*this); 29432 } 29433 29434 }; 29435 29436 template< 29437 typename T0, 29438 typename T1, 29439 typename T2, 29440 typename T3, 29441 typename T4, 29442 typename T5, 29443 typename T6, 29444 typename T7, 29445 typename T8, 29446 typename T9, 29447 typename T10, 29448 typename T11, 29449 typename T12, 29450 typename T13, 29451 typename T14, 29452 typename T15, 29453 typename T16, 29454 typename T17, 29455 typename T18, 29456 typename T19, 29457 typename T20, 29458 typename T21, 29459 typename T22, 29460 typename T23, 29461 typename T24, 29462 typename T25, 29463 typename T26, 29464 typename T27, 29465 typename T28, 29466 typename T29, 29467 typename T30, 29468 typename T31, 29469 typename T32, 29470 typename T33, 29471 typename T34, 29472 typename T35, 29473 typename T36, 29474 typename T37, 29475 typename T38, 29476 typename T39, 29477 typename T40, 29478 typename T41, 29479 typename T42, 29480 typename T43, 29481 typename T44, 29482 typename T45, 29483 typename T46, 29484 typename T47, 29485 typename T48, 29486 typename T49, 29487 typename T50, 29488 typename T51, 29489 typename T52, 29490 typename T53, 29491 typename T54, 29492 typename T55, 29493 typename T56, 29494 typename T57, 29495 typename T58> 29496 struct functionImplementation_< 29497 T0, 29498 T1, 29499 T2, 29500 T3, 29501 T4, 29502 T5, 29503 T6, 29504 T7, 29505 T8, 29506 T9, 29507 T10, 29508 T11, 29509 T12, 29510 T13, 29511 T14, 29512 T15, 29513 T16, 29514 T17, 29515 T18, 29516 T19, 29517 T20, 29518 T21, 29519 T22, 29520 T23, 29521 T24, 29522 T25, 29523 T26, 29524 T27, 29525 T28, 29526 T29, 29527 T30, 29528 T31, 29529 T32, 29530 T33, 29531 T34, 29532 T35, 29533 T36, 29534 T37, 29535 T38, 29536 T39, 29537 T40, 29538 T41, 29539 T42, 29540 T43, 29541 T44, 29542 T45, 29543 T46, 29544 T47, 29545 T48, 29546 T49, 29547 T50, 29548 T51, 29549 T52, 29550 T53, 29551 T54, 29552 T55, 29553 T56, 29554 T57, 29555 T58, 29556 NullType, 29557 NullType, 29558 NullType, 29559 NullType, 29560 NullType, 29561 NullType, 29562 NullType, 29563 NullType, 29564 NullType, 29565 NullType, 29566 NullType, 29567 NullType, 29568 NullType, 29569 NullType, 29570 NullType, 29571 NullType, 29572 NullType, 29573 NullType, 29574 NullType, 29575 NullType, 29576 NullType, 29577 NullType, 29578 NullType, 29579 NullType, 29580 NullType, 29581 NullType, 29582 NullType, 29583 NullType, 29584 NullType, 29585 NullType, 29586 NullType, 29587 NullType, 29588 NullType, 29589 NullType, 29590 NullType, 29591 NullType, 29592 NullType, 29593 NullType, 29594 NullType, 29595 NullType, 29596 NullType, 29597 NullType, 29598 NullType, 29599 NullType, 29600 NullType, 29601 NullType, 29602 NullType, 29603 NullType, 29604 NullType, 29605 NullType, 29606 NullType, 29607 NullType, 29608 NullType, 29609 NullType, 29610 NullType, 29611 NullType, 29612 NullType, 29613 NullType, 29614 NullType, 29615 NullType, 29616 NullType, 29617 NullType, 29618 NullType, 29619 NullType, 29620 NullType, 29621 NullType, 29622 NullType, 29623 NullType, 29624 NullType> 29625 { 29626 typedef detail::KernelFunctorGlobal< 29627 T0, 29628 T1, 29629 T2, 29630 T3, 29631 T4, 29632 T5, 29633 T6, 29634 T7, 29635 T8, 29636 T9, 29637 T10, 29638 T11, 29639 T12, 29640 T13, 29641 T14, 29642 T15, 29643 T16, 29644 T17, 29645 T18, 29646 T19, 29647 T20, 29648 T21, 29649 T22, 29650 T23, 29651 T24, 29652 T25, 29653 T26, 29654 T27, 29655 T28, 29656 T29, 29657 T30, 29658 T31, 29659 T32, 29660 T33, 29661 T34, 29662 T35, 29663 T36, 29664 T37, 29665 T38, 29666 T39, 29667 T40, 29668 T41, 29669 T42, 29670 T43, 29671 T44, 29672 T45, 29673 T46, 29674 T47, 29675 T48, 29676 T49, 29677 T50, 29678 T51, 29679 T52, 29680 T53, 29681 T54, 29682 T55, 29683 T56, 29684 T57, 29685 T58, 29686 NullType, 29687 NullType, 29688 NullType, 29689 NullType, 29690 NullType, 29691 NullType, 29692 NullType, 29693 NullType, 29694 NullType, 29695 NullType, 29696 NullType, 29697 NullType, 29698 NullType, 29699 NullType, 29700 NullType, 29701 NullType, 29702 NullType, 29703 NullType, 29704 NullType, 29705 NullType, 29706 NullType, 29707 NullType, 29708 NullType, 29709 NullType, 29710 NullType, 29711 NullType, 29712 NullType, 29713 NullType, 29714 NullType, 29715 NullType, 29716 NullType, 29717 NullType, 29718 NullType, 29719 NullType, 29720 NullType, 29721 NullType, 29722 NullType, 29723 NullType, 29724 NullType, 29725 NullType, 29726 NullType, 29727 NullType, 29728 NullType, 29729 NullType, 29730 NullType, 29731 NullType, 29732 NullType, 29733 NullType, 29734 NullType, 29735 NullType, 29736 NullType, 29737 NullType, 29738 NullType, 29739 NullType, 29740 NullType, 29741 NullType, 29742 NullType, 29743 NullType, 29744 NullType, 29745 NullType, 29746 NullType, 29747 NullType, 29748 NullType, 29749 NullType, 29750 NullType, 29751 NullType, 29752 NullType, 29753 NullType, 29754 NullType> FunctorType; 29755 29756 FunctorType functor_; 29757 29758 functionImplementation_(const FunctorType &functor) : 29759 functor_(functor) 29760 { 29761 } 29762 29763 typedef std::tr1::function<Event ( 29764 const EnqueueArgs&, 29765 T0, 29766 T1, 29767 T2, 29768 T3, 29769 T4, 29770 T5, 29771 T6, 29772 T7, 29773 T8, 29774 T9, 29775 T10, 29776 T11, 29777 T12, 29778 T13, 29779 T14, 29780 T15, 29781 T16, 29782 T17, 29783 T18, 29784 T19, 29785 T20, 29786 T21, 29787 T22, 29788 T23, 29789 T24, 29790 T25, 29791 T26, 29792 T27, 29793 T28, 29794 T29, 29795 T30, 29796 T31, 29797 T32, 29798 T33, 29799 T34, 29800 T35, 29801 T36, 29802 T37, 29803 T38, 29804 T39, 29805 T40, 29806 T41, 29807 T42, 29808 T43, 29809 T44, 29810 T45, 29811 T46, 29812 T47, 29813 T48, 29814 T49, 29815 T50, 29816 T51, 29817 T52, 29818 T53, 29819 T54, 29820 T55, 29821 T56, 29822 T57, 29823 T58)> type_; 29824 29825 Event operator()(const EnqueueArgs& enqueueArgs, 29826 T0 arg0, 29827 T1 arg1, 29828 T2 arg2, 29829 T3 arg3, 29830 T4 arg4, 29831 T5 arg5, 29832 T6 arg6, 29833 T7 arg7, 29834 T8 arg8, 29835 T9 arg9, 29836 T10 arg10, 29837 T11 arg11, 29838 T12 arg12, 29839 T13 arg13, 29840 T14 arg14, 29841 T15 arg15, 29842 T16 arg16, 29843 T17 arg17, 29844 T18 arg18, 29845 T19 arg19, 29846 T20 arg20, 29847 T21 arg21, 29848 T22 arg22, 29849 T23 arg23, 29850 T24 arg24, 29851 T25 arg25, 29852 T26 arg26, 29853 T27 arg27, 29854 T28 arg28, 29855 T29 arg29, 29856 T30 arg30, 29857 T31 arg31, 29858 T32 arg32, 29859 T33 arg33, 29860 T34 arg34, 29861 T35 arg35, 29862 T36 arg36, 29863 T37 arg37, 29864 T38 arg38, 29865 T39 arg39, 29866 T40 arg40, 29867 T41 arg41, 29868 T42 arg42, 29869 T43 arg43, 29870 T44 arg44, 29871 T45 arg45, 29872 T46 arg46, 29873 T47 arg47, 29874 T48 arg48, 29875 T49 arg49, 29876 T50 arg50, 29877 T51 arg51, 29878 T52 arg52, 29879 T53 arg53, 29880 T54 arg54, 29881 T55 arg55, 29882 T56 arg56, 29883 T57 arg57, 29884 T58 arg58) 29885 { 29886 return functor_( 29887 enqueueArgs, 29888 arg0, 29889 arg1, 29890 arg2, 29891 arg3, 29892 arg4, 29893 arg5, 29894 arg6, 29895 arg7, 29896 arg8, 29897 arg9, 29898 arg10, 29899 arg11, 29900 arg12, 29901 arg13, 29902 arg14, 29903 arg15, 29904 arg16, 29905 arg17, 29906 arg18, 29907 arg19, 29908 arg20, 29909 arg21, 29910 arg22, 29911 arg23, 29912 arg24, 29913 arg25, 29914 arg26, 29915 arg27, 29916 arg28, 29917 arg29, 29918 arg30, 29919 arg31, 29920 arg32, 29921 arg33, 29922 arg34, 29923 arg35, 29924 arg36, 29925 arg37, 29926 arg38, 29927 arg39, 29928 arg40, 29929 arg41, 29930 arg42, 29931 arg43, 29932 arg44, 29933 arg45, 29934 arg46, 29935 arg47, 29936 arg48, 29937 arg49, 29938 arg50, 29939 arg51, 29940 arg52, 29941 arg53, 29942 arg54, 29943 arg55, 29944 arg56, 29945 arg57, 29946 arg58); 29947 } 29948 29949 operator type_ () 29950 { 29951 return type_(*this); 29952 } 29953 29954 }; 29955 29956 template< 29957 typename T0, 29958 typename T1, 29959 typename T2, 29960 typename T3, 29961 typename T4, 29962 typename T5, 29963 typename T6, 29964 typename T7, 29965 typename T8, 29966 typename T9, 29967 typename T10, 29968 typename T11, 29969 typename T12, 29970 typename T13, 29971 typename T14, 29972 typename T15, 29973 typename T16, 29974 typename T17, 29975 typename T18, 29976 typename T19, 29977 typename T20, 29978 typename T21, 29979 typename T22, 29980 typename T23, 29981 typename T24, 29982 typename T25, 29983 typename T26, 29984 typename T27, 29985 typename T28, 29986 typename T29, 29987 typename T30, 29988 typename T31, 29989 typename T32, 29990 typename T33, 29991 typename T34, 29992 typename T35, 29993 typename T36, 29994 typename T37, 29995 typename T38, 29996 typename T39, 29997 typename T40, 29998 typename T41, 29999 typename T42, 30000 typename T43, 30001 typename T44, 30002 typename T45, 30003 typename T46, 30004 typename T47, 30005 typename T48, 30006 typename T49, 30007 typename T50, 30008 typename T51, 30009 typename T52, 30010 typename T53, 30011 typename T54, 30012 typename T55, 30013 typename T56, 30014 typename T57, 30015 typename T58, 30016 typename T59> 30017 struct functionImplementation_< 30018 T0, 30019 T1, 30020 T2, 30021 T3, 30022 T4, 30023 T5, 30024 T6, 30025 T7, 30026 T8, 30027 T9, 30028 T10, 30029 T11, 30030 T12, 30031 T13, 30032 T14, 30033 T15, 30034 T16, 30035 T17, 30036 T18, 30037 T19, 30038 T20, 30039 T21, 30040 T22, 30041 T23, 30042 T24, 30043 T25, 30044 T26, 30045 T27, 30046 T28, 30047 T29, 30048 T30, 30049 T31, 30050 T32, 30051 T33, 30052 T34, 30053 T35, 30054 T36, 30055 T37, 30056 T38, 30057 T39, 30058 T40, 30059 T41, 30060 T42, 30061 T43, 30062 T44, 30063 T45, 30064 T46, 30065 T47, 30066 T48, 30067 T49, 30068 T50, 30069 T51, 30070 T52, 30071 T53, 30072 T54, 30073 T55, 30074 T56, 30075 T57, 30076 T58, 30077 T59, 30078 NullType, 30079 NullType, 30080 NullType, 30081 NullType, 30082 NullType, 30083 NullType, 30084 NullType, 30085 NullType, 30086 NullType, 30087 NullType, 30088 NullType, 30089 NullType, 30090 NullType, 30091 NullType, 30092 NullType, 30093 NullType, 30094 NullType, 30095 NullType, 30096 NullType, 30097 NullType, 30098 NullType, 30099 NullType, 30100 NullType, 30101 NullType, 30102 NullType, 30103 NullType, 30104 NullType, 30105 NullType, 30106 NullType, 30107 NullType, 30108 NullType, 30109 NullType, 30110 NullType, 30111 NullType, 30112 NullType, 30113 NullType, 30114 NullType, 30115 NullType, 30116 NullType, 30117 NullType, 30118 NullType, 30119 NullType, 30120 NullType, 30121 NullType, 30122 NullType, 30123 NullType, 30124 NullType, 30125 NullType, 30126 NullType, 30127 NullType, 30128 NullType, 30129 NullType, 30130 NullType, 30131 NullType, 30132 NullType, 30133 NullType, 30134 NullType, 30135 NullType, 30136 NullType, 30137 NullType, 30138 NullType, 30139 NullType, 30140 NullType, 30141 NullType, 30142 NullType, 30143 NullType, 30144 NullType, 30145 NullType> 30146 { 30147 typedef detail::KernelFunctorGlobal< 30148 T0, 30149 T1, 30150 T2, 30151 T3, 30152 T4, 30153 T5, 30154 T6, 30155 T7, 30156 T8, 30157 T9, 30158 T10, 30159 T11, 30160 T12, 30161 T13, 30162 T14, 30163 T15, 30164 T16, 30165 T17, 30166 T18, 30167 T19, 30168 T20, 30169 T21, 30170 T22, 30171 T23, 30172 T24, 30173 T25, 30174 T26, 30175 T27, 30176 T28, 30177 T29, 30178 T30, 30179 T31, 30180 T32, 30181 T33, 30182 T34, 30183 T35, 30184 T36, 30185 T37, 30186 T38, 30187 T39, 30188 T40, 30189 T41, 30190 T42, 30191 T43, 30192 T44, 30193 T45, 30194 T46, 30195 T47, 30196 T48, 30197 T49, 30198 T50, 30199 T51, 30200 T52, 30201 T53, 30202 T54, 30203 T55, 30204 T56, 30205 T57, 30206 T58, 30207 T59, 30208 NullType, 30209 NullType, 30210 NullType, 30211 NullType, 30212 NullType, 30213 NullType, 30214 NullType, 30215 NullType, 30216 NullType, 30217 NullType, 30218 NullType, 30219 NullType, 30220 NullType, 30221 NullType, 30222 NullType, 30223 NullType, 30224 NullType, 30225 NullType, 30226 NullType, 30227 NullType, 30228 NullType, 30229 NullType, 30230 NullType, 30231 NullType, 30232 NullType, 30233 NullType, 30234 NullType, 30235 NullType, 30236 NullType, 30237 NullType, 30238 NullType, 30239 NullType, 30240 NullType, 30241 NullType, 30242 NullType, 30243 NullType, 30244 NullType, 30245 NullType, 30246 NullType, 30247 NullType, 30248 NullType, 30249 NullType, 30250 NullType, 30251 NullType, 30252 NullType, 30253 NullType, 30254 NullType, 30255 NullType, 30256 NullType, 30257 NullType, 30258 NullType, 30259 NullType, 30260 NullType, 30261 NullType, 30262 NullType, 30263 NullType, 30264 NullType, 30265 NullType, 30266 NullType, 30267 NullType, 30268 NullType, 30269 NullType, 30270 NullType, 30271 NullType, 30272 NullType, 30273 NullType, 30274 NullType, 30275 NullType> FunctorType; 30276 30277 FunctorType functor_; 30278 30279 functionImplementation_(const FunctorType &functor) : 30280 functor_(functor) 30281 { 30282 } 30283 30284 typedef std::tr1::function<Event ( 30285 const EnqueueArgs&, 30286 T0, 30287 T1, 30288 T2, 30289 T3, 30290 T4, 30291 T5, 30292 T6, 30293 T7, 30294 T8, 30295 T9, 30296 T10, 30297 T11, 30298 T12, 30299 T13, 30300 T14, 30301 T15, 30302 T16, 30303 T17, 30304 T18, 30305 T19, 30306 T20, 30307 T21, 30308 T22, 30309 T23, 30310 T24, 30311 T25, 30312 T26, 30313 T27, 30314 T28, 30315 T29, 30316 T30, 30317 T31, 30318 T32, 30319 T33, 30320 T34, 30321 T35, 30322 T36, 30323 T37, 30324 T38, 30325 T39, 30326 T40, 30327 T41, 30328 T42, 30329 T43, 30330 T44, 30331 T45, 30332 T46, 30333 T47, 30334 T48, 30335 T49, 30336 T50, 30337 T51, 30338 T52, 30339 T53, 30340 T54, 30341 T55, 30342 T56, 30343 T57, 30344 T58, 30345 T59)> type_; 30346 30347 Event operator()(const EnqueueArgs& enqueueArgs, 30348 T0 arg0, 30349 T1 arg1, 30350 T2 arg2, 30351 T3 arg3, 30352 T4 arg4, 30353 T5 arg5, 30354 T6 arg6, 30355 T7 arg7, 30356 T8 arg8, 30357 T9 arg9, 30358 T10 arg10, 30359 T11 arg11, 30360 T12 arg12, 30361 T13 arg13, 30362 T14 arg14, 30363 T15 arg15, 30364 T16 arg16, 30365 T17 arg17, 30366 T18 arg18, 30367 T19 arg19, 30368 T20 arg20, 30369 T21 arg21, 30370 T22 arg22, 30371 T23 arg23, 30372 T24 arg24, 30373 T25 arg25, 30374 T26 arg26, 30375 T27 arg27, 30376 T28 arg28, 30377 T29 arg29, 30378 T30 arg30, 30379 T31 arg31, 30380 T32 arg32, 30381 T33 arg33, 30382 T34 arg34, 30383 T35 arg35, 30384 T36 arg36, 30385 T37 arg37, 30386 T38 arg38, 30387 T39 arg39, 30388 T40 arg40, 30389 T41 arg41, 30390 T42 arg42, 30391 T43 arg43, 30392 T44 arg44, 30393 T45 arg45, 30394 T46 arg46, 30395 T47 arg47, 30396 T48 arg48, 30397 T49 arg49, 30398 T50 arg50, 30399 T51 arg51, 30400 T52 arg52, 30401 T53 arg53, 30402 T54 arg54, 30403 T55 arg55, 30404 T56 arg56, 30405 T57 arg57, 30406 T58 arg58, 30407 T59 arg59) 30408 { 30409 return functor_( 30410 enqueueArgs, 30411 arg0, 30412 arg1, 30413 arg2, 30414 arg3, 30415 arg4, 30416 arg5, 30417 arg6, 30418 arg7, 30419 arg8, 30420 arg9, 30421 arg10, 30422 arg11, 30423 arg12, 30424 arg13, 30425 arg14, 30426 arg15, 30427 arg16, 30428 arg17, 30429 arg18, 30430 arg19, 30431 arg20, 30432 arg21, 30433 arg22, 30434 arg23, 30435 arg24, 30436 arg25, 30437 arg26, 30438 arg27, 30439 arg28, 30440 arg29, 30441 arg30, 30442 arg31, 30443 arg32, 30444 arg33, 30445 arg34, 30446 arg35, 30447 arg36, 30448 arg37, 30449 arg38, 30450 arg39, 30451 arg40, 30452 arg41, 30453 arg42, 30454 arg43, 30455 arg44, 30456 arg45, 30457 arg46, 30458 arg47, 30459 arg48, 30460 arg49, 30461 arg50, 30462 arg51, 30463 arg52, 30464 arg53, 30465 arg54, 30466 arg55, 30467 arg56, 30468 arg57, 30469 arg58, 30470 arg59); 30471 } 30472 30473 operator type_ () 30474 { 30475 return type_(*this); 30476 } 30477 30478 }; 30479 30480 template< 30481 typename T0, 30482 typename T1, 30483 typename T2, 30484 typename T3, 30485 typename T4, 30486 typename T5, 30487 typename T6, 30488 typename T7, 30489 typename T8, 30490 typename T9, 30491 typename T10, 30492 typename T11, 30493 typename T12, 30494 typename T13, 30495 typename T14, 30496 typename T15, 30497 typename T16, 30498 typename T17, 30499 typename T18, 30500 typename T19, 30501 typename T20, 30502 typename T21, 30503 typename T22, 30504 typename T23, 30505 typename T24, 30506 typename T25, 30507 typename T26, 30508 typename T27, 30509 typename T28, 30510 typename T29, 30511 typename T30, 30512 typename T31, 30513 typename T32, 30514 typename T33, 30515 typename T34, 30516 typename T35, 30517 typename T36, 30518 typename T37, 30519 typename T38, 30520 typename T39, 30521 typename T40, 30522 typename T41, 30523 typename T42, 30524 typename T43, 30525 typename T44, 30526 typename T45, 30527 typename T46, 30528 typename T47, 30529 typename T48, 30530 typename T49, 30531 typename T50, 30532 typename T51, 30533 typename T52, 30534 typename T53, 30535 typename T54, 30536 typename T55, 30537 typename T56, 30538 typename T57, 30539 typename T58, 30540 typename T59, 30541 typename T60> 30542 struct functionImplementation_< 30543 T0, 30544 T1, 30545 T2, 30546 T3, 30547 T4, 30548 T5, 30549 T6, 30550 T7, 30551 T8, 30552 T9, 30553 T10, 30554 T11, 30555 T12, 30556 T13, 30557 T14, 30558 T15, 30559 T16, 30560 T17, 30561 T18, 30562 T19, 30563 T20, 30564 T21, 30565 T22, 30566 T23, 30567 T24, 30568 T25, 30569 T26, 30570 T27, 30571 T28, 30572 T29, 30573 T30, 30574 T31, 30575 T32, 30576 T33, 30577 T34, 30578 T35, 30579 T36, 30580 T37, 30581 T38, 30582 T39, 30583 T40, 30584 T41, 30585 T42, 30586 T43, 30587 T44, 30588 T45, 30589 T46, 30590 T47, 30591 T48, 30592 T49, 30593 T50, 30594 T51, 30595 T52, 30596 T53, 30597 T54, 30598 T55, 30599 T56, 30600 T57, 30601 T58, 30602 T59, 30603 T60, 30604 NullType, 30605 NullType, 30606 NullType, 30607 NullType, 30608 NullType, 30609 NullType, 30610 NullType, 30611 NullType, 30612 NullType, 30613 NullType, 30614 NullType, 30615 NullType, 30616 NullType, 30617 NullType, 30618 NullType, 30619 NullType, 30620 NullType, 30621 NullType, 30622 NullType, 30623 NullType, 30624 NullType, 30625 NullType, 30626 NullType, 30627 NullType, 30628 NullType, 30629 NullType, 30630 NullType, 30631 NullType, 30632 NullType, 30633 NullType, 30634 NullType, 30635 NullType, 30636 NullType, 30637 NullType, 30638 NullType, 30639 NullType, 30640 NullType, 30641 NullType, 30642 NullType, 30643 NullType, 30644 NullType, 30645 NullType, 30646 NullType, 30647 NullType, 30648 NullType, 30649 NullType, 30650 NullType, 30651 NullType, 30652 NullType, 30653 NullType, 30654 NullType, 30655 NullType, 30656 NullType, 30657 NullType, 30658 NullType, 30659 NullType, 30660 NullType, 30661 NullType, 30662 NullType, 30663 NullType, 30664 NullType, 30665 NullType, 30666 NullType, 30667 NullType, 30668 NullType, 30669 NullType, 30670 NullType> 30671 { 30672 typedef detail::KernelFunctorGlobal< 30673 T0, 30674 T1, 30675 T2, 30676 T3, 30677 T4, 30678 T5, 30679 T6, 30680 T7, 30681 T8, 30682 T9, 30683 T10, 30684 T11, 30685 T12, 30686 T13, 30687 T14, 30688 T15, 30689 T16, 30690 T17, 30691 T18, 30692 T19, 30693 T20, 30694 T21, 30695 T22, 30696 T23, 30697 T24, 30698 T25, 30699 T26, 30700 T27, 30701 T28, 30702 T29, 30703 T30, 30704 T31, 30705 T32, 30706 T33, 30707 T34, 30708 T35, 30709 T36, 30710 T37, 30711 T38, 30712 T39, 30713 T40, 30714 T41, 30715 T42, 30716 T43, 30717 T44, 30718 T45, 30719 T46, 30720 T47, 30721 T48, 30722 T49, 30723 T50, 30724 T51, 30725 T52, 30726 T53, 30727 T54, 30728 T55, 30729 T56, 30730 T57, 30731 T58, 30732 T59, 30733 T60, 30734 NullType, 30735 NullType, 30736 NullType, 30737 NullType, 30738 NullType, 30739 NullType, 30740 NullType, 30741 NullType, 30742 NullType, 30743 NullType, 30744 NullType, 30745 NullType, 30746 NullType, 30747 NullType, 30748 NullType, 30749 NullType, 30750 NullType, 30751 NullType, 30752 NullType, 30753 NullType, 30754 NullType, 30755 NullType, 30756 NullType, 30757 NullType, 30758 NullType, 30759 NullType, 30760 NullType, 30761 NullType, 30762 NullType, 30763 NullType, 30764 NullType, 30765 NullType, 30766 NullType, 30767 NullType, 30768 NullType, 30769 NullType, 30770 NullType, 30771 NullType, 30772 NullType, 30773 NullType, 30774 NullType, 30775 NullType, 30776 NullType, 30777 NullType, 30778 NullType, 30779 NullType, 30780 NullType, 30781 NullType, 30782 NullType, 30783 NullType, 30784 NullType, 30785 NullType, 30786 NullType, 30787 NullType, 30788 NullType, 30789 NullType, 30790 NullType, 30791 NullType, 30792 NullType, 30793 NullType, 30794 NullType, 30795 NullType, 30796 NullType, 30797 NullType, 30798 NullType, 30799 NullType, 30800 NullType> FunctorType; 30801 30802 FunctorType functor_; 30803 30804 functionImplementation_(const FunctorType &functor) : 30805 functor_(functor) 30806 { 30807 } 30808 30809 typedef std::tr1::function<Event ( 30810 const EnqueueArgs&, 30811 T0, 30812 T1, 30813 T2, 30814 T3, 30815 T4, 30816 T5, 30817 T6, 30818 T7, 30819 T8, 30820 T9, 30821 T10, 30822 T11, 30823 T12, 30824 T13, 30825 T14, 30826 T15, 30827 T16, 30828 T17, 30829 T18, 30830 T19, 30831 T20, 30832 T21, 30833 T22, 30834 T23, 30835 T24, 30836 T25, 30837 T26, 30838 T27, 30839 T28, 30840 T29, 30841 T30, 30842 T31, 30843 T32, 30844 T33, 30845 T34, 30846 T35, 30847 T36, 30848 T37, 30849 T38, 30850 T39, 30851 T40, 30852 T41, 30853 T42, 30854 T43, 30855 T44, 30856 T45, 30857 T46, 30858 T47, 30859 T48, 30860 T49, 30861 T50, 30862 T51, 30863 T52, 30864 T53, 30865 T54, 30866 T55, 30867 T56, 30868 T57, 30869 T58, 30870 T59, 30871 T60)> type_; 30872 30873 Event operator()(const EnqueueArgs& enqueueArgs, 30874 T0 arg0, 30875 T1 arg1, 30876 T2 arg2, 30877 T3 arg3, 30878 T4 arg4, 30879 T5 arg5, 30880 T6 arg6, 30881 T7 arg7, 30882 T8 arg8, 30883 T9 arg9, 30884 T10 arg10, 30885 T11 arg11, 30886 T12 arg12, 30887 T13 arg13, 30888 T14 arg14, 30889 T15 arg15, 30890 T16 arg16, 30891 T17 arg17, 30892 T18 arg18, 30893 T19 arg19, 30894 T20 arg20, 30895 T21 arg21, 30896 T22 arg22, 30897 T23 arg23, 30898 T24 arg24, 30899 T25 arg25, 30900 T26 arg26, 30901 T27 arg27, 30902 T28 arg28, 30903 T29 arg29, 30904 T30 arg30, 30905 T31 arg31, 30906 T32 arg32, 30907 T33 arg33, 30908 T34 arg34, 30909 T35 arg35, 30910 T36 arg36, 30911 T37 arg37, 30912 T38 arg38, 30913 T39 arg39, 30914 T40 arg40, 30915 T41 arg41, 30916 T42 arg42, 30917 T43 arg43, 30918 T44 arg44, 30919 T45 arg45, 30920 T46 arg46, 30921 T47 arg47, 30922 T48 arg48, 30923 T49 arg49, 30924 T50 arg50, 30925 T51 arg51, 30926 T52 arg52, 30927 T53 arg53, 30928 T54 arg54, 30929 T55 arg55, 30930 T56 arg56, 30931 T57 arg57, 30932 T58 arg58, 30933 T59 arg59, 30934 T60 arg60) 30935 { 30936 return functor_( 30937 enqueueArgs, 30938 arg0, 30939 arg1, 30940 arg2, 30941 arg3, 30942 arg4, 30943 arg5, 30944 arg6, 30945 arg7, 30946 arg8, 30947 arg9, 30948 arg10, 30949 arg11, 30950 arg12, 30951 arg13, 30952 arg14, 30953 arg15, 30954 arg16, 30955 arg17, 30956 arg18, 30957 arg19, 30958 arg20, 30959 arg21, 30960 arg22, 30961 arg23, 30962 arg24, 30963 arg25, 30964 arg26, 30965 arg27, 30966 arg28, 30967 arg29, 30968 arg30, 30969 arg31, 30970 arg32, 30971 arg33, 30972 arg34, 30973 arg35, 30974 arg36, 30975 arg37, 30976 arg38, 30977 arg39, 30978 arg40, 30979 arg41, 30980 arg42, 30981 arg43, 30982 arg44, 30983 arg45, 30984 arg46, 30985 arg47, 30986 arg48, 30987 arg49, 30988 arg50, 30989 arg51, 30990 arg52, 30991 arg53, 30992 arg54, 30993 arg55, 30994 arg56, 30995 arg57, 30996 arg58, 30997 arg59, 30998 arg60); 30999 } 31000 31001 operator type_ () 31002 { 31003 return type_(*this); 31004 } 31005 31006 }; 31007 31008 template< 31009 typename T0, 31010 typename T1, 31011 typename T2, 31012 typename T3, 31013 typename T4, 31014 typename T5, 31015 typename T6, 31016 typename T7, 31017 typename T8, 31018 typename T9, 31019 typename T10, 31020 typename T11, 31021 typename T12, 31022 typename T13, 31023 typename T14, 31024 typename T15, 31025 typename T16, 31026 typename T17, 31027 typename T18, 31028 typename T19, 31029 typename T20, 31030 typename T21, 31031 typename T22, 31032 typename T23, 31033 typename T24, 31034 typename T25, 31035 typename T26, 31036 typename T27, 31037 typename T28, 31038 typename T29, 31039 typename T30, 31040 typename T31, 31041 typename T32, 31042 typename T33, 31043 typename T34, 31044 typename T35, 31045 typename T36, 31046 typename T37, 31047 typename T38, 31048 typename T39, 31049 typename T40, 31050 typename T41, 31051 typename T42, 31052 typename T43, 31053 typename T44, 31054 typename T45, 31055 typename T46, 31056 typename T47, 31057 typename T48, 31058 typename T49, 31059 typename T50, 31060 typename T51, 31061 typename T52, 31062 typename T53, 31063 typename T54, 31064 typename T55, 31065 typename T56, 31066 typename T57, 31067 typename T58, 31068 typename T59, 31069 typename T60, 31070 typename T61> 31071 struct functionImplementation_< 31072 T0, 31073 T1, 31074 T2, 31075 T3, 31076 T4, 31077 T5, 31078 T6, 31079 T7, 31080 T8, 31081 T9, 31082 T10, 31083 T11, 31084 T12, 31085 T13, 31086 T14, 31087 T15, 31088 T16, 31089 T17, 31090 T18, 31091 T19, 31092 T20, 31093 T21, 31094 T22, 31095 T23, 31096 T24, 31097 T25, 31098 T26, 31099 T27, 31100 T28, 31101 T29, 31102 T30, 31103 T31, 31104 T32, 31105 T33, 31106 T34, 31107 T35, 31108 T36, 31109 T37, 31110 T38, 31111 T39, 31112 T40, 31113 T41, 31114 T42, 31115 T43, 31116 T44, 31117 T45, 31118 T46, 31119 T47, 31120 T48, 31121 T49, 31122 T50, 31123 T51, 31124 T52, 31125 T53, 31126 T54, 31127 T55, 31128 T56, 31129 T57, 31130 T58, 31131 T59, 31132 T60, 31133 T61, 31134 NullType, 31135 NullType, 31136 NullType, 31137 NullType, 31138 NullType, 31139 NullType, 31140 NullType, 31141 NullType, 31142 NullType, 31143 NullType, 31144 NullType, 31145 NullType, 31146 NullType, 31147 NullType, 31148 NullType, 31149 NullType, 31150 NullType, 31151 NullType, 31152 NullType, 31153 NullType, 31154 NullType, 31155 NullType, 31156 NullType, 31157 NullType, 31158 NullType, 31159 NullType, 31160 NullType, 31161 NullType, 31162 NullType, 31163 NullType, 31164 NullType, 31165 NullType, 31166 NullType, 31167 NullType, 31168 NullType, 31169 NullType, 31170 NullType, 31171 NullType, 31172 NullType, 31173 NullType, 31174 NullType, 31175 NullType, 31176 NullType, 31177 NullType, 31178 NullType, 31179 NullType, 31180 NullType, 31181 NullType, 31182 NullType, 31183 NullType, 31184 NullType, 31185 NullType, 31186 NullType, 31187 NullType, 31188 NullType, 31189 NullType, 31190 NullType, 31191 NullType, 31192 NullType, 31193 NullType, 31194 NullType, 31195 NullType, 31196 NullType, 31197 NullType, 31198 NullType, 31199 NullType> 31200 { 31201 typedef detail::KernelFunctorGlobal< 31202 T0, 31203 T1, 31204 T2, 31205 T3, 31206 T4, 31207 T5, 31208 T6, 31209 T7, 31210 T8, 31211 T9, 31212 T10, 31213 T11, 31214 T12, 31215 T13, 31216 T14, 31217 T15, 31218 T16, 31219 T17, 31220 T18, 31221 T19, 31222 T20, 31223 T21, 31224 T22, 31225 T23, 31226 T24, 31227 T25, 31228 T26, 31229 T27, 31230 T28, 31231 T29, 31232 T30, 31233 T31, 31234 T32, 31235 T33, 31236 T34, 31237 T35, 31238 T36, 31239 T37, 31240 T38, 31241 T39, 31242 T40, 31243 T41, 31244 T42, 31245 T43, 31246 T44, 31247 T45, 31248 T46, 31249 T47, 31250 T48, 31251 T49, 31252 T50, 31253 T51, 31254 T52, 31255 T53, 31256 T54, 31257 T55, 31258 T56, 31259 T57, 31260 T58, 31261 T59, 31262 T60, 31263 T61, 31264 NullType, 31265 NullType, 31266 NullType, 31267 NullType, 31268 NullType, 31269 NullType, 31270 NullType, 31271 NullType, 31272 NullType, 31273 NullType, 31274 NullType, 31275 NullType, 31276 NullType, 31277 NullType, 31278 NullType, 31279 NullType, 31280 NullType, 31281 NullType, 31282 NullType, 31283 NullType, 31284 NullType, 31285 NullType, 31286 NullType, 31287 NullType, 31288 NullType, 31289 NullType, 31290 NullType, 31291 NullType, 31292 NullType, 31293 NullType, 31294 NullType, 31295 NullType, 31296 NullType, 31297 NullType, 31298 NullType, 31299 NullType, 31300 NullType, 31301 NullType, 31302 NullType, 31303 NullType, 31304 NullType, 31305 NullType, 31306 NullType, 31307 NullType, 31308 NullType, 31309 NullType, 31310 NullType, 31311 NullType, 31312 NullType, 31313 NullType, 31314 NullType, 31315 NullType, 31316 NullType, 31317 NullType, 31318 NullType, 31319 NullType, 31320 NullType, 31321 NullType, 31322 NullType, 31323 NullType, 31324 NullType, 31325 NullType, 31326 NullType, 31327 NullType, 31328 NullType, 31329 NullType> FunctorType; 31330 31331 FunctorType functor_; 31332 31333 functionImplementation_(const FunctorType &functor) : 31334 functor_(functor) 31335 { 31336 } 31337 31338 typedef std::tr1::function<Event ( 31339 const EnqueueArgs&, 31340 T0, 31341 T1, 31342 T2, 31343 T3, 31344 T4, 31345 T5, 31346 T6, 31347 T7, 31348 T8, 31349 T9, 31350 T10, 31351 T11, 31352 T12, 31353 T13, 31354 T14, 31355 T15, 31356 T16, 31357 T17, 31358 T18, 31359 T19, 31360 T20, 31361 T21, 31362 T22, 31363 T23, 31364 T24, 31365 T25, 31366 T26, 31367 T27, 31368 T28, 31369 T29, 31370 T30, 31371 T31, 31372 T32, 31373 T33, 31374 T34, 31375 T35, 31376 T36, 31377 T37, 31378 T38, 31379 T39, 31380 T40, 31381 T41, 31382 T42, 31383 T43, 31384 T44, 31385 T45, 31386 T46, 31387 T47, 31388 T48, 31389 T49, 31390 T50, 31391 T51, 31392 T52, 31393 T53, 31394 T54, 31395 T55, 31396 T56, 31397 T57, 31398 T58, 31399 T59, 31400 T60, 31401 T61)> type_; 31402 31403 Event operator()(const EnqueueArgs& enqueueArgs, 31404 T0 arg0, 31405 T1 arg1, 31406 T2 arg2, 31407 T3 arg3, 31408 T4 arg4, 31409 T5 arg5, 31410 T6 arg6, 31411 T7 arg7, 31412 T8 arg8, 31413 T9 arg9, 31414 T10 arg10, 31415 T11 arg11, 31416 T12 arg12, 31417 T13 arg13, 31418 T14 arg14, 31419 T15 arg15, 31420 T16 arg16, 31421 T17 arg17, 31422 T18 arg18, 31423 T19 arg19, 31424 T20 arg20, 31425 T21 arg21, 31426 T22 arg22, 31427 T23 arg23, 31428 T24 arg24, 31429 T25 arg25, 31430 T26 arg26, 31431 T27 arg27, 31432 T28 arg28, 31433 T29 arg29, 31434 T30 arg30, 31435 T31 arg31, 31436 T32 arg32, 31437 T33 arg33, 31438 T34 arg34, 31439 T35 arg35, 31440 T36 arg36, 31441 T37 arg37, 31442 T38 arg38, 31443 T39 arg39, 31444 T40 arg40, 31445 T41 arg41, 31446 T42 arg42, 31447 T43 arg43, 31448 T44 arg44, 31449 T45 arg45, 31450 T46 arg46, 31451 T47 arg47, 31452 T48 arg48, 31453 T49 arg49, 31454 T50 arg50, 31455 T51 arg51, 31456 T52 arg52, 31457 T53 arg53, 31458 T54 arg54, 31459 T55 arg55, 31460 T56 arg56, 31461 T57 arg57, 31462 T58 arg58, 31463 T59 arg59, 31464 T60 arg60, 31465 T61 arg61) 31466 { 31467 return functor_( 31468 enqueueArgs, 31469 arg0, 31470 arg1, 31471 arg2, 31472 arg3, 31473 arg4, 31474 arg5, 31475 arg6, 31476 arg7, 31477 arg8, 31478 arg9, 31479 arg10, 31480 arg11, 31481 arg12, 31482 arg13, 31483 arg14, 31484 arg15, 31485 arg16, 31486 arg17, 31487 arg18, 31488 arg19, 31489 arg20, 31490 arg21, 31491 arg22, 31492 arg23, 31493 arg24, 31494 arg25, 31495 arg26, 31496 arg27, 31497 arg28, 31498 arg29, 31499 arg30, 31500 arg31, 31501 arg32, 31502 arg33, 31503 arg34, 31504 arg35, 31505 arg36, 31506 arg37, 31507 arg38, 31508 arg39, 31509 arg40, 31510 arg41, 31511 arg42, 31512 arg43, 31513 arg44, 31514 arg45, 31515 arg46, 31516 arg47, 31517 arg48, 31518 arg49, 31519 arg50, 31520 arg51, 31521 arg52, 31522 arg53, 31523 arg54, 31524 arg55, 31525 arg56, 31526 arg57, 31527 arg58, 31528 arg59, 31529 arg60, 31530 arg61); 31531 } 31532 31533 operator type_ () 31534 { 31535 return type_(*this); 31536 } 31537 31538 }; 31539 31540 template< 31541 typename T0, 31542 typename T1, 31543 typename T2, 31544 typename T3, 31545 typename T4, 31546 typename T5, 31547 typename T6, 31548 typename T7, 31549 typename T8, 31550 typename T9, 31551 typename T10, 31552 typename T11, 31553 typename T12, 31554 typename T13, 31555 typename T14, 31556 typename T15, 31557 typename T16, 31558 typename T17, 31559 typename T18, 31560 typename T19, 31561 typename T20, 31562 typename T21, 31563 typename T22, 31564 typename T23, 31565 typename T24, 31566 typename T25, 31567 typename T26, 31568 typename T27, 31569 typename T28, 31570 typename T29, 31571 typename T30, 31572 typename T31, 31573 typename T32, 31574 typename T33, 31575 typename T34, 31576 typename T35, 31577 typename T36, 31578 typename T37, 31579 typename T38, 31580 typename T39, 31581 typename T40, 31582 typename T41, 31583 typename T42, 31584 typename T43, 31585 typename T44, 31586 typename T45, 31587 typename T46, 31588 typename T47, 31589 typename T48, 31590 typename T49, 31591 typename T50, 31592 typename T51, 31593 typename T52, 31594 typename T53, 31595 typename T54, 31596 typename T55, 31597 typename T56, 31598 typename T57, 31599 typename T58, 31600 typename T59, 31601 typename T60, 31602 typename T61, 31603 typename T62> 31604 struct functionImplementation_< 31605 T0, 31606 T1, 31607 T2, 31608 T3, 31609 T4, 31610 T5, 31611 T6, 31612 T7, 31613 T8, 31614 T9, 31615 T10, 31616 T11, 31617 T12, 31618 T13, 31619 T14, 31620 T15, 31621 T16, 31622 T17, 31623 T18, 31624 T19, 31625 T20, 31626 T21, 31627 T22, 31628 T23, 31629 T24, 31630 T25, 31631 T26, 31632 T27, 31633 T28, 31634 T29, 31635 T30, 31636 T31, 31637 T32, 31638 T33, 31639 T34, 31640 T35, 31641 T36, 31642 T37, 31643 T38, 31644 T39, 31645 T40, 31646 T41, 31647 T42, 31648 T43, 31649 T44, 31650 T45, 31651 T46, 31652 T47, 31653 T48, 31654 T49, 31655 T50, 31656 T51, 31657 T52, 31658 T53, 31659 T54, 31660 T55, 31661 T56, 31662 T57, 31663 T58, 31664 T59, 31665 T60, 31666 T61, 31667 T62, 31668 NullType, 31669 NullType, 31670 NullType, 31671 NullType, 31672 NullType, 31673 NullType, 31674 NullType, 31675 NullType, 31676 NullType, 31677 NullType, 31678 NullType, 31679 NullType, 31680 NullType, 31681 NullType, 31682 NullType, 31683 NullType, 31684 NullType, 31685 NullType, 31686 NullType, 31687 NullType, 31688 NullType, 31689 NullType, 31690 NullType, 31691 NullType, 31692 NullType, 31693 NullType, 31694 NullType, 31695 NullType, 31696 NullType, 31697 NullType, 31698 NullType, 31699 NullType, 31700 NullType, 31701 NullType, 31702 NullType, 31703 NullType, 31704 NullType, 31705 NullType, 31706 NullType, 31707 NullType, 31708 NullType, 31709 NullType, 31710 NullType, 31711 NullType, 31712 NullType, 31713 NullType, 31714 NullType, 31715 NullType, 31716 NullType, 31717 NullType, 31718 NullType, 31719 NullType, 31720 NullType, 31721 NullType, 31722 NullType, 31723 NullType, 31724 NullType, 31725 NullType, 31726 NullType, 31727 NullType, 31728 NullType, 31729 NullType, 31730 NullType, 31731 NullType, 31732 NullType> 31733 { 31734 typedef detail::KernelFunctorGlobal< 31735 T0, 31736 T1, 31737 T2, 31738 T3, 31739 T4, 31740 T5, 31741 T6, 31742 T7, 31743 T8, 31744 T9, 31745 T10, 31746 T11, 31747 T12, 31748 T13, 31749 T14, 31750 T15, 31751 T16, 31752 T17, 31753 T18, 31754 T19, 31755 T20, 31756 T21, 31757 T22, 31758 T23, 31759 T24, 31760 T25, 31761 T26, 31762 T27, 31763 T28, 31764 T29, 31765 T30, 31766 T31, 31767 T32, 31768 T33, 31769 T34, 31770 T35, 31771 T36, 31772 T37, 31773 T38, 31774 T39, 31775 T40, 31776 T41, 31777 T42, 31778 T43, 31779 T44, 31780 T45, 31781 T46, 31782 T47, 31783 T48, 31784 T49, 31785 T50, 31786 T51, 31787 T52, 31788 T53, 31789 T54, 31790 T55, 31791 T56, 31792 T57, 31793 T58, 31794 T59, 31795 T60, 31796 T61, 31797 T62, 31798 NullType, 31799 NullType, 31800 NullType, 31801 NullType, 31802 NullType, 31803 NullType, 31804 NullType, 31805 NullType, 31806 NullType, 31807 NullType, 31808 NullType, 31809 NullType, 31810 NullType, 31811 NullType, 31812 NullType, 31813 NullType, 31814 NullType, 31815 NullType, 31816 NullType, 31817 NullType, 31818 NullType, 31819 NullType, 31820 NullType, 31821 NullType, 31822 NullType, 31823 NullType, 31824 NullType, 31825 NullType, 31826 NullType, 31827 NullType, 31828 NullType, 31829 NullType, 31830 NullType, 31831 NullType, 31832 NullType, 31833 NullType, 31834 NullType, 31835 NullType, 31836 NullType, 31837 NullType, 31838 NullType, 31839 NullType, 31840 NullType, 31841 NullType, 31842 NullType, 31843 NullType, 31844 NullType, 31845 NullType, 31846 NullType, 31847 NullType, 31848 NullType, 31849 NullType, 31850 NullType, 31851 NullType, 31852 NullType, 31853 NullType, 31854 NullType, 31855 NullType, 31856 NullType, 31857 NullType, 31858 NullType, 31859 NullType, 31860 NullType, 31861 NullType, 31862 NullType> FunctorType; 31863 31864 FunctorType functor_; 31865 31866 functionImplementation_(const FunctorType &functor) : 31867 functor_(functor) 31868 { 31869 } 31870 31871 typedef std::tr1::function<Event ( 31872 const EnqueueArgs&, 31873 T0, 31874 T1, 31875 T2, 31876 T3, 31877 T4, 31878 T5, 31879 T6, 31880 T7, 31881 T8, 31882 T9, 31883 T10, 31884 T11, 31885 T12, 31886 T13, 31887 T14, 31888 T15, 31889 T16, 31890 T17, 31891 T18, 31892 T19, 31893 T20, 31894 T21, 31895 T22, 31896 T23, 31897 T24, 31898 T25, 31899 T26, 31900 T27, 31901 T28, 31902 T29, 31903 T30, 31904 T31, 31905 T32, 31906 T33, 31907 T34, 31908 T35, 31909 T36, 31910 T37, 31911 T38, 31912 T39, 31913 T40, 31914 T41, 31915 T42, 31916 T43, 31917 T44, 31918 T45, 31919 T46, 31920 T47, 31921 T48, 31922 T49, 31923 T50, 31924 T51, 31925 T52, 31926 T53, 31927 T54, 31928 T55, 31929 T56, 31930 T57, 31931 T58, 31932 T59, 31933 T60, 31934 T61, 31935 T62)> type_; 31936 31937 Event operator()(const EnqueueArgs& enqueueArgs, 31938 T0 arg0, 31939 T1 arg1, 31940 T2 arg2, 31941 T3 arg3, 31942 T4 arg4, 31943 T5 arg5, 31944 T6 arg6, 31945 T7 arg7, 31946 T8 arg8, 31947 T9 arg9, 31948 T10 arg10, 31949 T11 arg11, 31950 T12 arg12, 31951 T13 arg13, 31952 T14 arg14, 31953 T15 arg15, 31954 T16 arg16, 31955 T17 arg17, 31956 T18 arg18, 31957 T19 arg19, 31958 T20 arg20, 31959 T21 arg21, 31960 T22 arg22, 31961 T23 arg23, 31962 T24 arg24, 31963 T25 arg25, 31964 T26 arg26, 31965 T27 arg27, 31966 T28 arg28, 31967 T29 arg29, 31968 T30 arg30, 31969 T31 arg31, 31970 T32 arg32, 31971 T33 arg33, 31972 T34 arg34, 31973 T35 arg35, 31974 T36 arg36, 31975 T37 arg37, 31976 T38 arg38, 31977 T39 arg39, 31978 T40 arg40, 31979 T41 arg41, 31980 T42 arg42, 31981 T43 arg43, 31982 T44 arg44, 31983 T45 arg45, 31984 T46 arg46, 31985 T47 arg47, 31986 T48 arg48, 31987 T49 arg49, 31988 T50 arg50, 31989 T51 arg51, 31990 T52 arg52, 31991 T53 arg53, 31992 T54 arg54, 31993 T55 arg55, 31994 T56 arg56, 31995 T57 arg57, 31996 T58 arg58, 31997 T59 arg59, 31998 T60 arg60, 31999 T61 arg61, 32000 T62 arg62) 32001 { 32002 return functor_( 32003 enqueueArgs, 32004 arg0, 32005 arg1, 32006 arg2, 32007 arg3, 32008 arg4, 32009 arg5, 32010 arg6, 32011 arg7, 32012 arg8, 32013 arg9, 32014 arg10, 32015 arg11, 32016 arg12, 32017 arg13, 32018 arg14, 32019 arg15, 32020 arg16, 32021 arg17, 32022 arg18, 32023 arg19, 32024 arg20, 32025 arg21, 32026 arg22, 32027 arg23, 32028 arg24, 32029 arg25, 32030 arg26, 32031 arg27, 32032 arg28, 32033 arg29, 32034 arg30, 32035 arg31, 32036 arg32, 32037 arg33, 32038 arg34, 32039 arg35, 32040 arg36, 32041 arg37, 32042 arg38, 32043 arg39, 32044 arg40, 32045 arg41, 32046 arg42, 32047 arg43, 32048 arg44, 32049 arg45, 32050 arg46, 32051 arg47, 32052 arg48, 32053 arg49, 32054 arg50, 32055 arg51, 32056 arg52, 32057 arg53, 32058 arg54, 32059 arg55, 32060 arg56, 32061 arg57, 32062 arg58, 32063 arg59, 32064 arg60, 32065 arg61, 32066 arg62); 32067 } 32068 32069 operator type_ () 32070 { 32071 return type_(*this); 32072 } 32073 32074 }; 32075 32076 template< 32077 typename T0, 32078 typename T1, 32079 typename T2, 32080 typename T3, 32081 typename T4, 32082 typename T5, 32083 typename T6, 32084 typename T7, 32085 typename T8, 32086 typename T9, 32087 typename T10, 32088 typename T11, 32089 typename T12, 32090 typename T13, 32091 typename T14, 32092 typename T15, 32093 typename T16, 32094 typename T17, 32095 typename T18, 32096 typename T19, 32097 typename T20, 32098 typename T21, 32099 typename T22, 32100 typename T23, 32101 typename T24, 32102 typename T25, 32103 typename T26, 32104 typename T27, 32105 typename T28, 32106 typename T29, 32107 typename T30, 32108 typename T31, 32109 typename T32, 32110 typename T33, 32111 typename T34, 32112 typename T35, 32113 typename T36, 32114 typename T37, 32115 typename T38, 32116 typename T39, 32117 typename T40, 32118 typename T41, 32119 typename T42, 32120 typename T43, 32121 typename T44, 32122 typename T45, 32123 typename T46, 32124 typename T47, 32125 typename T48, 32126 typename T49, 32127 typename T50, 32128 typename T51, 32129 typename T52, 32130 typename T53, 32131 typename T54, 32132 typename T55, 32133 typename T56, 32134 typename T57, 32135 typename T58, 32136 typename T59, 32137 typename T60, 32138 typename T61, 32139 typename T62, 32140 typename T63> 32141 struct functionImplementation_< 32142 T0, 32143 T1, 32144 T2, 32145 T3, 32146 T4, 32147 T5, 32148 T6, 32149 T7, 32150 T8, 32151 T9, 32152 T10, 32153 T11, 32154 T12, 32155 T13, 32156 T14, 32157 T15, 32158 T16, 32159 T17, 32160 T18, 32161 T19, 32162 T20, 32163 T21, 32164 T22, 32165 T23, 32166 T24, 32167 T25, 32168 T26, 32169 T27, 32170 T28, 32171 T29, 32172 T30, 32173 T31, 32174 T32, 32175 T33, 32176 T34, 32177 T35, 32178 T36, 32179 T37, 32180 T38, 32181 T39, 32182 T40, 32183 T41, 32184 T42, 32185 T43, 32186 T44, 32187 T45, 32188 T46, 32189 T47, 32190 T48, 32191 T49, 32192 T50, 32193 T51, 32194 T52, 32195 T53, 32196 T54, 32197 T55, 32198 T56, 32199 T57, 32200 T58, 32201 T59, 32202 T60, 32203 T61, 32204 T62, 32205 T63, 32206 NullType, 32207 NullType, 32208 NullType, 32209 NullType, 32210 NullType, 32211 NullType, 32212 NullType, 32213 NullType, 32214 NullType, 32215 NullType, 32216 NullType, 32217 NullType, 32218 NullType, 32219 NullType, 32220 NullType, 32221 NullType, 32222 NullType, 32223 NullType, 32224 NullType, 32225 NullType, 32226 NullType, 32227 NullType, 32228 NullType, 32229 NullType, 32230 NullType, 32231 NullType, 32232 NullType, 32233 NullType, 32234 NullType, 32235 NullType, 32236 NullType, 32237 NullType, 32238 NullType, 32239 NullType, 32240 NullType, 32241 NullType, 32242 NullType, 32243 NullType, 32244 NullType, 32245 NullType, 32246 NullType, 32247 NullType, 32248 NullType, 32249 NullType, 32250 NullType, 32251 NullType, 32252 NullType, 32253 NullType, 32254 NullType, 32255 NullType, 32256 NullType, 32257 NullType, 32258 NullType, 32259 NullType, 32260 NullType, 32261 NullType, 32262 NullType, 32263 NullType, 32264 NullType, 32265 NullType, 32266 NullType, 32267 NullType, 32268 NullType, 32269 NullType> 32270 { 32271 typedef detail::KernelFunctorGlobal< 32272 T0, 32273 T1, 32274 T2, 32275 T3, 32276 T4, 32277 T5, 32278 T6, 32279 T7, 32280 T8, 32281 T9, 32282 T10, 32283 T11, 32284 T12, 32285 T13, 32286 T14, 32287 T15, 32288 T16, 32289 T17, 32290 T18, 32291 T19, 32292 T20, 32293 T21, 32294 T22, 32295 T23, 32296 T24, 32297 T25, 32298 T26, 32299 T27, 32300 T28, 32301 T29, 32302 T30, 32303 T31, 32304 T32, 32305 T33, 32306 T34, 32307 T35, 32308 T36, 32309 T37, 32310 T38, 32311 T39, 32312 T40, 32313 T41, 32314 T42, 32315 T43, 32316 T44, 32317 T45, 32318 T46, 32319 T47, 32320 T48, 32321 T49, 32322 T50, 32323 T51, 32324 T52, 32325 T53, 32326 T54, 32327 T55, 32328 T56, 32329 T57, 32330 T58, 32331 T59, 32332 T60, 32333 T61, 32334 T62, 32335 T63, 32336 NullType, 32337 NullType, 32338 NullType, 32339 NullType, 32340 NullType, 32341 NullType, 32342 NullType, 32343 NullType, 32344 NullType, 32345 NullType, 32346 NullType, 32347 NullType, 32348 NullType, 32349 NullType, 32350 NullType, 32351 NullType, 32352 NullType, 32353 NullType, 32354 NullType, 32355 NullType, 32356 NullType, 32357 NullType, 32358 NullType, 32359 NullType, 32360 NullType, 32361 NullType, 32362 NullType, 32363 NullType, 32364 NullType, 32365 NullType, 32366 NullType, 32367 NullType, 32368 NullType, 32369 NullType, 32370 NullType, 32371 NullType, 32372 NullType, 32373 NullType, 32374 NullType, 32375 NullType, 32376 NullType, 32377 NullType, 32378 NullType, 32379 NullType, 32380 NullType, 32381 NullType, 32382 NullType, 32383 NullType, 32384 NullType, 32385 NullType, 32386 NullType, 32387 NullType, 32388 NullType, 32389 NullType, 32390 NullType, 32391 NullType, 32392 NullType, 32393 NullType, 32394 NullType, 32395 NullType, 32396 NullType, 32397 NullType, 32398 NullType, 32399 NullType> FunctorType; 32400 32401 FunctorType functor_; 32402 32403 functionImplementation_(const FunctorType &functor) : 32404 functor_(functor) 32405 { 32406 } 32407 32408 typedef std::tr1::function<Event ( 32409 const EnqueueArgs&, 32410 T0, 32411 T1, 32412 T2, 32413 T3, 32414 T4, 32415 T5, 32416 T6, 32417 T7, 32418 T8, 32419 T9, 32420 T10, 32421 T11, 32422 T12, 32423 T13, 32424 T14, 32425 T15, 32426 T16, 32427 T17, 32428 T18, 32429 T19, 32430 T20, 32431 T21, 32432 T22, 32433 T23, 32434 T24, 32435 T25, 32436 T26, 32437 T27, 32438 T28, 32439 T29, 32440 T30, 32441 T31, 32442 T32, 32443 T33, 32444 T34, 32445 T35, 32446 T36, 32447 T37, 32448 T38, 32449 T39, 32450 T40, 32451 T41, 32452 T42, 32453 T43, 32454 T44, 32455 T45, 32456 T46, 32457 T47, 32458 T48, 32459 T49, 32460 T50, 32461 T51, 32462 T52, 32463 T53, 32464 T54, 32465 T55, 32466 T56, 32467 T57, 32468 T58, 32469 T59, 32470 T60, 32471 T61, 32472 T62, 32473 T63)> type_; 32474 32475 Event operator()(const EnqueueArgs& enqueueArgs, 32476 T0 arg0, 32477 T1 arg1, 32478 T2 arg2, 32479 T3 arg3, 32480 T4 arg4, 32481 T5 arg5, 32482 T6 arg6, 32483 T7 arg7, 32484 T8 arg8, 32485 T9 arg9, 32486 T10 arg10, 32487 T11 arg11, 32488 T12 arg12, 32489 T13 arg13, 32490 T14 arg14, 32491 T15 arg15, 32492 T16 arg16, 32493 T17 arg17, 32494 T18 arg18, 32495 T19 arg19, 32496 T20 arg20, 32497 T21 arg21, 32498 T22 arg22, 32499 T23 arg23, 32500 T24 arg24, 32501 T25 arg25, 32502 T26 arg26, 32503 T27 arg27, 32504 T28 arg28, 32505 T29 arg29, 32506 T30 arg30, 32507 T31 arg31, 32508 T32 arg32, 32509 T33 arg33, 32510 T34 arg34, 32511 T35 arg35, 32512 T36 arg36, 32513 T37 arg37, 32514 T38 arg38, 32515 T39 arg39, 32516 T40 arg40, 32517 T41 arg41, 32518 T42 arg42, 32519 T43 arg43, 32520 T44 arg44, 32521 T45 arg45, 32522 T46 arg46, 32523 T47 arg47, 32524 T48 arg48, 32525 T49 arg49, 32526 T50 arg50, 32527 T51 arg51, 32528 T52 arg52, 32529 T53 arg53, 32530 T54 arg54, 32531 T55 arg55, 32532 T56 arg56, 32533 T57 arg57, 32534 T58 arg58, 32535 T59 arg59, 32536 T60 arg60, 32537 T61 arg61, 32538 T62 arg62, 32539 T63 arg63) 32540 { 32541 return functor_( 32542 enqueueArgs, 32543 arg0, 32544 arg1, 32545 arg2, 32546 arg3, 32547 arg4, 32548 arg5, 32549 arg6, 32550 arg7, 32551 arg8, 32552 arg9, 32553 arg10, 32554 arg11, 32555 arg12, 32556 arg13, 32557 arg14, 32558 arg15, 32559 arg16, 32560 arg17, 32561 arg18, 32562 arg19, 32563 arg20, 32564 arg21, 32565 arg22, 32566 arg23, 32567 arg24, 32568 arg25, 32569 arg26, 32570 arg27, 32571 arg28, 32572 arg29, 32573 arg30, 32574 arg31, 32575 arg32, 32576 arg33, 32577 arg34, 32578 arg35, 32579 arg36, 32580 arg37, 32581 arg38, 32582 arg39, 32583 arg40, 32584 arg41, 32585 arg42, 32586 arg43, 32587 arg44, 32588 arg45, 32589 arg46, 32590 arg47, 32591 arg48, 32592 arg49, 32593 arg50, 32594 arg51, 32595 arg52, 32596 arg53, 32597 arg54, 32598 arg55, 32599 arg56, 32600 arg57, 32601 arg58, 32602 arg59, 32603 arg60, 32604 arg61, 32605 arg62, 32606 arg63); 32607 } 32608 32609 operator type_ () 32610 { 32611 return type_(*this); 32612 } 32613 32614 }; 32615 32616 template< 32617 typename T0, 32618 typename T1, 32619 typename T2, 32620 typename T3, 32621 typename T4, 32622 typename T5, 32623 typename T6, 32624 typename T7, 32625 typename T8, 32626 typename T9, 32627 typename T10, 32628 typename T11, 32629 typename T12, 32630 typename T13, 32631 typename T14, 32632 typename T15, 32633 typename T16, 32634 typename T17, 32635 typename T18, 32636 typename T19, 32637 typename T20, 32638 typename T21, 32639 typename T22, 32640 typename T23, 32641 typename T24, 32642 typename T25, 32643 typename T26, 32644 typename T27, 32645 typename T28, 32646 typename T29, 32647 typename T30, 32648 typename T31, 32649 typename T32, 32650 typename T33, 32651 typename T34, 32652 typename T35, 32653 typename T36, 32654 typename T37, 32655 typename T38, 32656 typename T39, 32657 typename T40, 32658 typename T41, 32659 typename T42, 32660 typename T43, 32661 typename T44, 32662 typename T45, 32663 typename T46, 32664 typename T47, 32665 typename T48, 32666 typename T49, 32667 typename T50, 32668 typename T51, 32669 typename T52, 32670 typename T53, 32671 typename T54, 32672 typename T55, 32673 typename T56, 32674 typename T57, 32675 typename T58, 32676 typename T59, 32677 typename T60, 32678 typename T61, 32679 typename T62, 32680 typename T63, 32681 typename T64> 32682 struct functionImplementation_< 32683 T0, 32684 T1, 32685 T2, 32686 T3, 32687 T4, 32688 T5, 32689 T6, 32690 T7, 32691 T8, 32692 T9, 32693 T10, 32694 T11, 32695 T12, 32696 T13, 32697 T14, 32698 T15, 32699 T16, 32700 T17, 32701 T18, 32702 T19, 32703 T20, 32704 T21, 32705 T22, 32706 T23, 32707 T24, 32708 T25, 32709 T26, 32710 T27, 32711 T28, 32712 T29, 32713 T30, 32714 T31, 32715 T32, 32716 T33, 32717 T34, 32718 T35, 32719 T36, 32720 T37, 32721 T38, 32722 T39, 32723 T40, 32724 T41, 32725 T42, 32726 T43, 32727 T44, 32728 T45, 32729 T46, 32730 T47, 32731 T48, 32732 T49, 32733 T50, 32734 T51, 32735 T52, 32736 T53, 32737 T54, 32738 T55, 32739 T56, 32740 T57, 32741 T58, 32742 T59, 32743 T60, 32744 T61, 32745 T62, 32746 T63, 32747 T64, 32748 NullType, 32749 NullType, 32750 NullType, 32751 NullType, 32752 NullType, 32753 NullType, 32754 NullType, 32755 NullType, 32756 NullType, 32757 NullType, 32758 NullType, 32759 NullType, 32760 NullType, 32761 NullType, 32762 NullType, 32763 NullType, 32764 NullType, 32765 NullType, 32766 NullType, 32767 NullType, 32768 NullType, 32769 NullType, 32770 NullType, 32771 NullType, 32772 NullType, 32773 NullType, 32774 NullType, 32775 NullType, 32776 NullType, 32777 NullType, 32778 NullType, 32779 NullType, 32780 NullType, 32781 NullType, 32782 NullType, 32783 NullType, 32784 NullType, 32785 NullType, 32786 NullType, 32787 NullType, 32788 NullType, 32789 NullType, 32790 NullType, 32791 NullType, 32792 NullType, 32793 NullType, 32794 NullType, 32795 NullType, 32796 NullType, 32797 NullType, 32798 NullType, 32799 NullType, 32800 NullType, 32801 NullType, 32802 NullType, 32803 NullType, 32804 NullType, 32805 NullType, 32806 NullType, 32807 NullType, 32808 NullType, 32809 NullType, 32810 NullType> 32811 { 32812 typedef detail::KernelFunctorGlobal< 32813 T0, 32814 T1, 32815 T2, 32816 T3, 32817 T4, 32818 T5, 32819 T6, 32820 T7, 32821 T8, 32822 T9, 32823 T10, 32824 T11, 32825 T12, 32826 T13, 32827 T14, 32828 T15, 32829 T16, 32830 T17, 32831 T18, 32832 T19, 32833 T20, 32834 T21, 32835 T22, 32836 T23, 32837 T24, 32838 T25, 32839 T26, 32840 T27, 32841 T28, 32842 T29, 32843 T30, 32844 T31, 32845 T32, 32846 T33, 32847 T34, 32848 T35, 32849 T36, 32850 T37, 32851 T38, 32852 T39, 32853 T40, 32854 T41, 32855 T42, 32856 T43, 32857 T44, 32858 T45, 32859 T46, 32860 T47, 32861 T48, 32862 T49, 32863 T50, 32864 T51, 32865 T52, 32866 T53, 32867 T54, 32868 T55, 32869 T56, 32870 T57, 32871 T58, 32872 T59, 32873 T60, 32874 T61, 32875 T62, 32876 T63, 32877 T64, 32878 NullType, 32879 NullType, 32880 NullType, 32881 NullType, 32882 NullType, 32883 NullType, 32884 NullType, 32885 NullType, 32886 NullType, 32887 NullType, 32888 NullType, 32889 NullType, 32890 NullType, 32891 NullType, 32892 NullType, 32893 NullType, 32894 NullType, 32895 NullType, 32896 NullType, 32897 NullType, 32898 NullType, 32899 NullType, 32900 NullType, 32901 NullType, 32902 NullType, 32903 NullType, 32904 NullType, 32905 NullType, 32906 NullType, 32907 NullType, 32908 NullType, 32909 NullType, 32910 NullType, 32911 NullType, 32912 NullType, 32913 NullType, 32914 NullType, 32915 NullType, 32916 NullType, 32917 NullType, 32918 NullType, 32919 NullType, 32920 NullType, 32921 NullType, 32922 NullType, 32923 NullType, 32924 NullType, 32925 NullType, 32926 NullType, 32927 NullType, 32928 NullType, 32929 NullType, 32930 NullType, 32931 NullType, 32932 NullType, 32933 NullType, 32934 NullType, 32935 NullType, 32936 NullType, 32937 NullType, 32938 NullType, 32939 NullType, 32940 NullType> FunctorType; 32941 32942 FunctorType functor_; 32943 32944 functionImplementation_(const FunctorType &functor) : 32945 functor_(functor) 32946 { 32947 } 32948 32949 typedef std::tr1::function<Event ( 32950 const EnqueueArgs&, 32951 T0, 32952 T1, 32953 T2, 32954 T3, 32955 T4, 32956 T5, 32957 T6, 32958 T7, 32959 T8, 32960 T9, 32961 T10, 32962 T11, 32963 T12, 32964 T13, 32965 T14, 32966 T15, 32967 T16, 32968 T17, 32969 T18, 32970 T19, 32971 T20, 32972 T21, 32973 T22, 32974 T23, 32975 T24, 32976 T25, 32977 T26, 32978 T27, 32979 T28, 32980 T29, 32981 T30, 32982 T31, 32983 T32, 32984 T33, 32985 T34, 32986 T35, 32987 T36, 32988 T37, 32989 T38, 32990 T39, 32991 T40, 32992 T41, 32993 T42, 32994 T43, 32995 T44, 32996 T45, 32997 T46, 32998 T47, 32999 T48, 33000 T49, 33001 T50, 33002 T51, 33003 T52, 33004 T53, 33005 T54, 33006 T55, 33007 T56, 33008 T57, 33009 T58, 33010 T59, 33011 T60, 33012 T61, 33013 T62, 33014 T63, 33015 T64)> type_; 33016 33017 Event operator()(const EnqueueArgs& enqueueArgs, 33018 T0 arg0, 33019 T1 arg1, 33020 T2 arg2, 33021 T3 arg3, 33022 T4 arg4, 33023 T5 arg5, 33024 T6 arg6, 33025 T7 arg7, 33026 T8 arg8, 33027 T9 arg9, 33028 T10 arg10, 33029 T11 arg11, 33030 T12 arg12, 33031 T13 arg13, 33032 T14 arg14, 33033 T15 arg15, 33034 T16 arg16, 33035 T17 arg17, 33036 T18 arg18, 33037 T19 arg19, 33038 T20 arg20, 33039 T21 arg21, 33040 T22 arg22, 33041 T23 arg23, 33042 T24 arg24, 33043 T25 arg25, 33044 T26 arg26, 33045 T27 arg27, 33046 T28 arg28, 33047 T29 arg29, 33048 T30 arg30, 33049 T31 arg31, 33050 T32 arg32, 33051 T33 arg33, 33052 T34 arg34, 33053 T35 arg35, 33054 T36 arg36, 33055 T37 arg37, 33056 T38 arg38, 33057 T39 arg39, 33058 T40 arg40, 33059 T41 arg41, 33060 T42 arg42, 33061 T43 arg43, 33062 T44 arg44, 33063 T45 arg45, 33064 T46 arg46, 33065 T47 arg47, 33066 T48 arg48, 33067 T49 arg49, 33068 T50 arg50, 33069 T51 arg51, 33070 T52 arg52, 33071 T53 arg53, 33072 T54 arg54, 33073 T55 arg55, 33074 T56 arg56, 33075 T57 arg57, 33076 T58 arg58, 33077 T59 arg59, 33078 T60 arg60, 33079 T61 arg61, 33080 T62 arg62, 33081 T63 arg63, 33082 T64 arg64) 33083 { 33084 return functor_( 33085 enqueueArgs, 33086 arg0, 33087 arg1, 33088 arg2, 33089 arg3, 33090 arg4, 33091 arg5, 33092 arg6, 33093 arg7, 33094 arg8, 33095 arg9, 33096 arg10, 33097 arg11, 33098 arg12, 33099 arg13, 33100 arg14, 33101 arg15, 33102 arg16, 33103 arg17, 33104 arg18, 33105 arg19, 33106 arg20, 33107 arg21, 33108 arg22, 33109 arg23, 33110 arg24, 33111 arg25, 33112 arg26, 33113 arg27, 33114 arg28, 33115 arg29, 33116 arg30, 33117 arg31, 33118 arg32, 33119 arg33, 33120 arg34, 33121 arg35, 33122 arg36, 33123 arg37, 33124 arg38, 33125 arg39, 33126 arg40, 33127 arg41, 33128 arg42, 33129 arg43, 33130 arg44, 33131 arg45, 33132 arg46, 33133 arg47, 33134 arg48, 33135 arg49, 33136 arg50, 33137 arg51, 33138 arg52, 33139 arg53, 33140 arg54, 33141 arg55, 33142 arg56, 33143 arg57, 33144 arg58, 33145 arg59, 33146 arg60, 33147 arg61, 33148 arg62, 33149 arg63, 33150 arg64); 33151 } 33152 33153 operator type_ () 33154 { 33155 return type_(*this); 33156 } 33157 33158 }; 33159 33160 template< 33161 typename T0, 33162 typename T1, 33163 typename T2, 33164 typename T3, 33165 typename T4, 33166 typename T5, 33167 typename T6, 33168 typename T7, 33169 typename T8, 33170 typename T9, 33171 typename T10, 33172 typename T11, 33173 typename T12, 33174 typename T13, 33175 typename T14, 33176 typename T15, 33177 typename T16, 33178 typename T17, 33179 typename T18, 33180 typename T19, 33181 typename T20, 33182 typename T21, 33183 typename T22, 33184 typename T23, 33185 typename T24, 33186 typename T25, 33187 typename T26, 33188 typename T27, 33189 typename T28, 33190 typename T29, 33191 typename T30, 33192 typename T31, 33193 typename T32, 33194 typename T33, 33195 typename T34, 33196 typename T35, 33197 typename T36, 33198 typename T37, 33199 typename T38, 33200 typename T39, 33201 typename T40, 33202 typename T41, 33203 typename T42, 33204 typename T43, 33205 typename T44, 33206 typename T45, 33207 typename T46, 33208 typename T47, 33209 typename T48, 33210 typename T49, 33211 typename T50, 33212 typename T51, 33213 typename T52, 33214 typename T53, 33215 typename T54, 33216 typename T55, 33217 typename T56, 33218 typename T57, 33219 typename T58, 33220 typename T59, 33221 typename T60, 33222 typename T61, 33223 typename T62, 33224 typename T63, 33225 typename T64, 33226 typename T65> 33227 struct functionImplementation_< 33228 T0, 33229 T1, 33230 T2, 33231 T3, 33232 T4, 33233 T5, 33234 T6, 33235 T7, 33236 T8, 33237 T9, 33238 T10, 33239 T11, 33240 T12, 33241 T13, 33242 T14, 33243 T15, 33244 T16, 33245 T17, 33246 T18, 33247 T19, 33248 T20, 33249 T21, 33250 T22, 33251 T23, 33252 T24, 33253 T25, 33254 T26, 33255 T27, 33256 T28, 33257 T29, 33258 T30, 33259 T31, 33260 T32, 33261 T33, 33262 T34, 33263 T35, 33264 T36, 33265 T37, 33266 T38, 33267 T39, 33268 T40, 33269 T41, 33270 T42, 33271 T43, 33272 T44, 33273 T45, 33274 T46, 33275 T47, 33276 T48, 33277 T49, 33278 T50, 33279 T51, 33280 T52, 33281 T53, 33282 T54, 33283 T55, 33284 T56, 33285 T57, 33286 T58, 33287 T59, 33288 T60, 33289 T61, 33290 T62, 33291 T63, 33292 T64, 33293 T65, 33294 NullType, 33295 NullType, 33296 NullType, 33297 NullType, 33298 NullType, 33299 NullType, 33300 NullType, 33301 NullType, 33302 NullType, 33303 NullType, 33304 NullType, 33305 NullType, 33306 NullType, 33307 NullType, 33308 NullType, 33309 NullType, 33310 NullType, 33311 NullType, 33312 NullType, 33313 NullType, 33314 NullType, 33315 NullType, 33316 NullType, 33317 NullType, 33318 NullType, 33319 NullType, 33320 NullType, 33321 NullType, 33322 NullType, 33323 NullType, 33324 NullType, 33325 NullType, 33326 NullType, 33327 NullType, 33328 NullType, 33329 NullType, 33330 NullType, 33331 NullType, 33332 NullType, 33333 NullType, 33334 NullType, 33335 NullType, 33336 NullType, 33337 NullType, 33338 NullType, 33339 NullType, 33340 NullType, 33341 NullType, 33342 NullType, 33343 NullType, 33344 NullType, 33345 NullType, 33346 NullType, 33347 NullType, 33348 NullType, 33349 NullType, 33350 NullType, 33351 NullType, 33352 NullType, 33353 NullType, 33354 NullType, 33355 NullType> 33356 { 33357 typedef detail::KernelFunctorGlobal< 33358 T0, 33359 T1, 33360 T2, 33361 T3, 33362 T4, 33363 T5, 33364 T6, 33365 T7, 33366 T8, 33367 T9, 33368 T10, 33369 T11, 33370 T12, 33371 T13, 33372 T14, 33373 T15, 33374 T16, 33375 T17, 33376 T18, 33377 T19, 33378 T20, 33379 T21, 33380 T22, 33381 T23, 33382 T24, 33383 T25, 33384 T26, 33385 T27, 33386 T28, 33387 T29, 33388 T30, 33389 T31, 33390 T32, 33391 T33, 33392 T34, 33393 T35, 33394 T36, 33395 T37, 33396 T38, 33397 T39, 33398 T40, 33399 T41, 33400 T42, 33401 T43, 33402 T44, 33403 T45, 33404 T46, 33405 T47, 33406 T48, 33407 T49, 33408 T50, 33409 T51, 33410 T52, 33411 T53, 33412 T54, 33413 T55, 33414 T56, 33415 T57, 33416 T58, 33417 T59, 33418 T60, 33419 T61, 33420 T62, 33421 T63, 33422 T64, 33423 T65, 33424 NullType, 33425 NullType, 33426 NullType, 33427 NullType, 33428 NullType, 33429 NullType, 33430 NullType, 33431 NullType, 33432 NullType, 33433 NullType, 33434 NullType, 33435 NullType, 33436 NullType, 33437 NullType, 33438 NullType, 33439 NullType, 33440 NullType, 33441 NullType, 33442 NullType, 33443 NullType, 33444 NullType, 33445 NullType, 33446 NullType, 33447 NullType, 33448 NullType, 33449 NullType, 33450 NullType, 33451 NullType, 33452 NullType, 33453 NullType, 33454 NullType, 33455 NullType, 33456 NullType, 33457 NullType, 33458 NullType, 33459 NullType, 33460 NullType, 33461 NullType, 33462 NullType, 33463 NullType, 33464 NullType, 33465 NullType, 33466 NullType, 33467 NullType, 33468 NullType, 33469 NullType, 33470 NullType, 33471 NullType, 33472 NullType, 33473 NullType, 33474 NullType, 33475 NullType, 33476 NullType, 33477 NullType, 33478 NullType, 33479 NullType, 33480 NullType, 33481 NullType, 33482 NullType, 33483 NullType, 33484 NullType, 33485 NullType> FunctorType; 33486 33487 FunctorType functor_; 33488 33489 functionImplementation_(const FunctorType &functor) : 33490 functor_(functor) 33491 { 33492 } 33493 33494 typedef std::tr1::function<Event ( 33495 const EnqueueArgs&, 33496 T0, 33497 T1, 33498 T2, 33499 T3, 33500 T4, 33501 T5, 33502 T6, 33503 T7, 33504 T8, 33505 T9, 33506 T10, 33507 T11, 33508 T12, 33509 T13, 33510 T14, 33511 T15, 33512 T16, 33513 T17, 33514 T18, 33515 T19, 33516 T20, 33517 T21, 33518 T22, 33519 T23, 33520 T24, 33521 T25, 33522 T26, 33523 T27, 33524 T28, 33525 T29, 33526 T30, 33527 T31, 33528 T32, 33529 T33, 33530 T34, 33531 T35, 33532 T36, 33533 T37, 33534 T38, 33535 T39, 33536 T40, 33537 T41, 33538 T42, 33539 T43, 33540 T44, 33541 T45, 33542 T46, 33543 T47, 33544 T48, 33545 T49, 33546 T50, 33547 T51, 33548 T52, 33549 T53, 33550 T54, 33551 T55, 33552 T56, 33553 T57, 33554 T58, 33555 T59, 33556 T60, 33557 T61, 33558 T62, 33559 T63, 33560 T64, 33561 T65)> type_; 33562 33563 Event operator()(const EnqueueArgs& enqueueArgs, 33564 T0 arg0, 33565 T1 arg1, 33566 T2 arg2, 33567 T3 arg3, 33568 T4 arg4, 33569 T5 arg5, 33570 T6 arg6, 33571 T7 arg7, 33572 T8 arg8, 33573 T9 arg9, 33574 T10 arg10, 33575 T11 arg11, 33576 T12 arg12, 33577 T13 arg13, 33578 T14 arg14, 33579 T15 arg15, 33580 T16 arg16, 33581 T17 arg17, 33582 T18 arg18, 33583 T19 arg19, 33584 T20 arg20, 33585 T21 arg21, 33586 T22 arg22, 33587 T23 arg23, 33588 T24 arg24, 33589 T25 arg25, 33590 T26 arg26, 33591 T27 arg27, 33592 T28 arg28, 33593 T29 arg29, 33594 T30 arg30, 33595 T31 arg31, 33596 T32 arg32, 33597 T33 arg33, 33598 T34 arg34, 33599 T35 arg35, 33600 T36 arg36, 33601 T37 arg37, 33602 T38 arg38, 33603 T39 arg39, 33604 T40 arg40, 33605 T41 arg41, 33606 T42 arg42, 33607 T43 arg43, 33608 T44 arg44, 33609 T45 arg45, 33610 T46 arg46, 33611 T47 arg47, 33612 T48 arg48, 33613 T49 arg49, 33614 T50 arg50, 33615 T51 arg51, 33616 T52 arg52, 33617 T53 arg53, 33618 T54 arg54, 33619 T55 arg55, 33620 T56 arg56, 33621 T57 arg57, 33622 T58 arg58, 33623 T59 arg59, 33624 T60 arg60, 33625 T61 arg61, 33626 T62 arg62, 33627 T63 arg63, 33628 T64 arg64, 33629 T65 arg65) 33630 { 33631 return functor_( 33632 enqueueArgs, 33633 arg0, 33634 arg1, 33635 arg2, 33636 arg3, 33637 arg4, 33638 arg5, 33639 arg6, 33640 arg7, 33641 arg8, 33642 arg9, 33643 arg10, 33644 arg11, 33645 arg12, 33646 arg13, 33647 arg14, 33648 arg15, 33649 arg16, 33650 arg17, 33651 arg18, 33652 arg19, 33653 arg20, 33654 arg21, 33655 arg22, 33656 arg23, 33657 arg24, 33658 arg25, 33659 arg26, 33660 arg27, 33661 arg28, 33662 arg29, 33663 arg30, 33664 arg31, 33665 arg32, 33666 arg33, 33667 arg34, 33668 arg35, 33669 arg36, 33670 arg37, 33671 arg38, 33672 arg39, 33673 arg40, 33674 arg41, 33675 arg42, 33676 arg43, 33677 arg44, 33678 arg45, 33679 arg46, 33680 arg47, 33681 arg48, 33682 arg49, 33683 arg50, 33684 arg51, 33685 arg52, 33686 arg53, 33687 arg54, 33688 arg55, 33689 arg56, 33690 arg57, 33691 arg58, 33692 arg59, 33693 arg60, 33694 arg61, 33695 arg62, 33696 arg63, 33697 arg64, 33698 arg65); 33699 } 33700 33701 operator type_ () 33702 { 33703 return type_(*this); 33704 } 33705 33706 }; 33707 33708 template< 33709 typename T0, 33710 typename T1, 33711 typename T2, 33712 typename T3, 33713 typename T4, 33714 typename T5, 33715 typename T6, 33716 typename T7, 33717 typename T8, 33718 typename T9, 33719 typename T10, 33720 typename T11, 33721 typename T12, 33722 typename T13, 33723 typename T14, 33724 typename T15, 33725 typename T16, 33726 typename T17, 33727 typename T18, 33728 typename T19, 33729 typename T20, 33730 typename T21, 33731 typename T22, 33732 typename T23, 33733 typename T24, 33734 typename T25, 33735 typename T26, 33736 typename T27, 33737 typename T28, 33738 typename T29, 33739 typename T30, 33740 typename T31, 33741 typename T32, 33742 typename T33, 33743 typename T34, 33744 typename T35, 33745 typename T36, 33746 typename T37, 33747 typename T38, 33748 typename T39, 33749 typename T40, 33750 typename T41, 33751 typename T42, 33752 typename T43, 33753 typename T44, 33754 typename T45, 33755 typename T46, 33756 typename T47, 33757 typename T48, 33758 typename T49, 33759 typename T50, 33760 typename T51, 33761 typename T52, 33762 typename T53, 33763 typename T54, 33764 typename T55, 33765 typename T56, 33766 typename T57, 33767 typename T58, 33768 typename T59, 33769 typename T60, 33770 typename T61, 33771 typename T62, 33772 typename T63, 33773 typename T64, 33774 typename T65, 33775 typename T66> 33776 struct functionImplementation_< 33777 T0, 33778 T1, 33779 T2, 33780 T3, 33781 T4, 33782 T5, 33783 T6, 33784 T7, 33785 T8, 33786 T9, 33787 T10, 33788 T11, 33789 T12, 33790 T13, 33791 T14, 33792 T15, 33793 T16, 33794 T17, 33795 T18, 33796 T19, 33797 T20, 33798 T21, 33799 T22, 33800 T23, 33801 T24, 33802 T25, 33803 T26, 33804 T27, 33805 T28, 33806 T29, 33807 T30, 33808 T31, 33809 T32, 33810 T33, 33811 T34, 33812 T35, 33813 T36, 33814 T37, 33815 T38, 33816 T39, 33817 T40, 33818 T41, 33819 T42, 33820 T43, 33821 T44, 33822 T45, 33823 T46, 33824 T47, 33825 T48, 33826 T49, 33827 T50, 33828 T51, 33829 T52, 33830 T53, 33831 T54, 33832 T55, 33833 T56, 33834 T57, 33835 T58, 33836 T59, 33837 T60, 33838 T61, 33839 T62, 33840 T63, 33841 T64, 33842 T65, 33843 T66, 33844 NullType, 33845 NullType, 33846 NullType, 33847 NullType, 33848 NullType, 33849 NullType, 33850 NullType, 33851 NullType, 33852 NullType, 33853 NullType, 33854 NullType, 33855 NullType, 33856 NullType, 33857 NullType, 33858 NullType, 33859 NullType, 33860 NullType, 33861 NullType, 33862 NullType, 33863 NullType, 33864 NullType, 33865 NullType, 33866 NullType, 33867 NullType, 33868 NullType, 33869 NullType, 33870 NullType, 33871 NullType, 33872 NullType, 33873 NullType, 33874 NullType, 33875 NullType, 33876 NullType, 33877 NullType, 33878 NullType, 33879 NullType, 33880 NullType, 33881 NullType, 33882 NullType, 33883 NullType, 33884 NullType, 33885 NullType, 33886 NullType, 33887 NullType, 33888 NullType, 33889 NullType, 33890 NullType, 33891 NullType, 33892 NullType, 33893 NullType, 33894 NullType, 33895 NullType, 33896 NullType, 33897 NullType, 33898 NullType, 33899 NullType, 33900 NullType, 33901 NullType, 33902 NullType, 33903 NullType, 33904 NullType> 33905 { 33906 typedef detail::KernelFunctorGlobal< 33907 T0, 33908 T1, 33909 T2, 33910 T3, 33911 T4, 33912 T5, 33913 T6, 33914 T7, 33915 T8, 33916 T9, 33917 T10, 33918 T11, 33919 T12, 33920 T13, 33921 T14, 33922 T15, 33923 T16, 33924 T17, 33925 T18, 33926 T19, 33927 T20, 33928 T21, 33929 T22, 33930 T23, 33931 T24, 33932 T25, 33933 T26, 33934 T27, 33935 T28, 33936 T29, 33937 T30, 33938 T31, 33939 T32, 33940 T33, 33941 T34, 33942 T35, 33943 T36, 33944 T37, 33945 T38, 33946 T39, 33947 T40, 33948 T41, 33949 T42, 33950 T43, 33951 T44, 33952 T45, 33953 T46, 33954 T47, 33955 T48, 33956 T49, 33957 T50, 33958 T51, 33959 T52, 33960 T53, 33961 T54, 33962 T55, 33963 T56, 33964 T57, 33965 T58, 33966 T59, 33967 T60, 33968 T61, 33969 T62, 33970 T63, 33971 T64, 33972 T65, 33973 T66, 33974 NullType, 33975 NullType, 33976 NullType, 33977 NullType, 33978 NullType, 33979 NullType, 33980 NullType, 33981 NullType, 33982 NullType, 33983 NullType, 33984 NullType, 33985 NullType, 33986 NullType, 33987 NullType, 33988 NullType, 33989 NullType, 33990 NullType, 33991 NullType, 33992 NullType, 33993 NullType, 33994 NullType, 33995 NullType, 33996 NullType, 33997 NullType, 33998 NullType, 33999 NullType, 34000 NullType, 34001 NullType, 34002 NullType, 34003 NullType, 34004 NullType, 34005 NullType, 34006 NullType, 34007 NullType, 34008 NullType, 34009 NullType, 34010 NullType, 34011 NullType, 34012 NullType, 34013 NullType, 34014 NullType, 34015 NullType, 34016 NullType, 34017 NullType, 34018 NullType, 34019 NullType, 34020 NullType, 34021 NullType, 34022 NullType, 34023 NullType, 34024 NullType, 34025 NullType, 34026 NullType, 34027 NullType, 34028 NullType, 34029 NullType, 34030 NullType, 34031 NullType, 34032 NullType, 34033 NullType, 34034 NullType> FunctorType; 34035 34036 FunctorType functor_; 34037 34038 functionImplementation_(const FunctorType &functor) : 34039 functor_(functor) 34040 { 34041 } 34042 34043 typedef std::tr1::function<Event ( 34044 const EnqueueArgs&, 34045 T0, 34046 T1, 34047 T2, 34048 T3, 34049 T4, 34050 T5, 34051 T6, 34052 T7, 34053 T8, 34054 T9, 34055 T10, 34056 T11, 34057 T12, 34058 T13, 34059 T14, 34060 T15, 34061 T16, 34062 T17, 34063 T18, 34064 T19, 34065 T20, 34066 T21, 34067 T22, 34068 T23, 34069 T24, 34070 T25, 34071 T26, 34072 T27, 34073 T28, 34074 T29, 34075 T30, 34076 T31, 34077 T32, 34078 T33, 34079 T34, 34080 T35, 34081 T36, 34082 T37, 34083 T38, 34084 T39, 34085 T40, 34086 T41, 34087 T42, 34088 T43, 34089 T44, 34090 T45, 34091 T46, 34092 T47, 34093 T48, 34094 T49, 34095 T50, 34096 T51, 34097 T52, 34098 T53, 34099 T54, 34100 T55, 34101 T56, 34102 T57, 34103 T58, 34104 T59, 34105 T60, 34106 T61, 34107 T62, 34108 T63, 34109 T64, 34110 T65, 34111 T66)> type_; 34112 34113 Event operator()(const EnqueueArgs& enqueueArgs, 34114 T0 arg0, 34115 T1 arg1, 34116 T2 arg2, 34117 T3 arg3, 34118 T4 arg4, 34119 T5 arg5, 34120 T6 arg6, 34121 T7 arg7, 34122 T8 arg8, 34123 T9 arg9, 34124 T10 arg10, 34125 T11 arg11, 34126 T12 arg12, 34127 T13 arg13, 34128 T14 arg14, 34129 T15 arg15, 34130 T16 arg16, 34131 T17 arg17, 34132 T18 arg18, 34133 T19 arg19, 34134 T20 arg20, 34135 T21 arg21, 34136 T22 arg22, 34137 T23 arg23, 34138 T24 arg24, 34139 T25 arg25, 34140 T26 arg26, 34141 T27 arg27, 34142 T28 arg28, 34143 T29 arg29, 34144 T30 arg30, 34145 T31 arg31, 34146 T32 arg32, 34147 T33 arg33, 34148 T34 arg34, 34149 T35 arg35, 34150 T36 arg36, 34151 T37 arg37, 34152 T38 arg38, 34153 T39 arg39, 34154 T40 arg40, 34155 T41 arg41, 34156 T42 arg42, 34157 T43 arg43, 34158 T44 arg44, 34159 T45 arg45, 34160 T46 arg46, 34161 T47 arg47, 34162 T48 arg48, 34163 T49 arg49, 34164 T50 arg50, 34165 T51 arg51, 34166 T52 arg52, 34167 T53 arg53, 34168 T54 arg54, 34169 T55 arg55, 34170 T56 arg56, 34171 T57 arg57, 34172 T58 arg58, 34173 T59 arg59, 34174 T60 arg60, 34175 T61 arg61, 34176 T62 arg62, 34177 T63 arg63, 34178 T64 arg64, 34179 T65 arg65, 34180 T66 arg66) 34181 { 34182 return functor_( 34183 enqueueArgs, 34184 arg0, 34185 arg1, 34186 arg2, 34187 arg3, 34188 arg4, 34189 arg5, 34190 arg6, 34191 arg7, 34192 arg8, 34193 arg9, 34194 arg10, 34195 arg11, 34196 arg12, 34197 arg13, 34198 arg14, 34199 arg15, 34200 arg16, 34201 arg17, 34202 arg18, 34203 arg19, 34204 arg20, 34205 arg21, 34206 arg22, 34207 arg23, 34208 arg24, 34209 arg25, 34210 arg26, 34211 arg27, 34212 arg28, 34213 arg29, 34214 arg30, 34215 arg31, 34216 arg32, 34217 arg33, 34218 arg34, 34219 arg35, 34220 arg36, 34221 arg37, 34222 arg38, 34223 arg39, 34224 arg40, 34225 arg41, 34226 arg42, 34227 arg43, 34228 arg44, 34229 arg45, 34230 arg46, 34231 arg47, 34232 arg48, 34233 arg49, 34234 arg50, 34235 arg51, 34236 arg52, 34237 arg53, 34238 arg54, 34239 arg55, 34240 arg56, 34241 arg57, 34242 arg58, 34243 arg59, 34244 arg60, 34245 arg61, 34246 arg62, 34247 arg63, 34248 arg64, 34249 arg65, 34250 arg66); 34251 } 34252 34253 operator type_ () 34254 { 34255 return type_(*this); 34256 } 34257 34258 }; 34259 34260 template< 34261 typename T0, 34262 typename T1, 34263 typename T2, 34264 typename T3, 34265 typename T4, 34266 typename T5, 34267 typename T6, 34268 typename T7, 34269 typename T8, 34270 typename T9, 34271 typename T10, 34272 typename T11, 34273 typename T12, 34274 typename T13, 34275 typename T14, 34276 typename T15, 34277 typename T16, 34278 typename T17, 34279 typename T18, 34280 typename T19, 34281 typename T20, 34282 typename T21, 34283 typename T22, 34284 typename T23, 34285 typename T24, 34286 typename T25, 34287 typename T26, 34288 typename T27, 34289 typename T28, 34290 typename T29, 34291 typename T30, 34292 typename T31, 34293 typename T32, 34294 typename T33, 34295 typename T34, 34296 typename T35, 34297 typename T36, 34298 typename T37, 34299 typename T38, 34300 typename T39, 34301 typename T40, 34302 typename T41, 34303 typename T42, 34304 typename T43, 34305 typename T44, 34306 typename T45, 34307 typename T46, 34308 typename T47, 34309 typename T48, 34310 typename T49, 34311 typename T50, 34312 typename T51, 34313 typename T52, 34314 typename T53, 34315 typename T54, 34316 typename T55, 34317 typename T56, 34318 typename T57, 34319 typename T58, 34320 typename T59, 34321 typename T60, 34322 typename T61, 34323 typename T62, 34324 typename T63, 34325 typename T64, 34326 typename T65, 34327 typename T66, 34328 typename T67> 34329 struct functionImplementation_< 34330 T0, 34331 T1, 34332 T2, 34333 T3, 34334 T4, 34335 T5, 34336 T6, 34337 T7, 34338 T8, 34339 T9, 34340 T10, 34341 T11, 34342 T12, 34343 T13, 34344 T14, 34345 T15, 34346 T16, 34347 T17, 34348 T18, 34349 T19, 34350 T20, 34351 T21, 34352 T22, 34353 T23, 34354 T24, 34355 T25, 34356 T26, 34357 T27, 34358 T28, 34359 T29, 34360 T30, 34361 T31, 34362 T32, 34363 T33, 34364 T34, 34365 T35, 34366 T36, 34367 T37, 34368 T38, 34369 T39, 34370 T40, 34371 T41, 34372 T42, 34373 T43, 34374 T44, 34375 T45, 34376 T46, 34377 T47, 34378 T48, 34379 T49, 34380 T50, 34381 T51, 34382 T52, 34383 T53, 34384 T54, 34385 T55, 34386 T56, 34387 T57, 34388 T58, 34389 T59, 34390 T60, 34391 T61, 34392 T62, 34393 T63, 34394 T64, 34395 T65, 34396 T66, 34397 T67, 34398 NullType, 34399 NullType, 34400 NullType, 34401 NullType, 34402 NullType, 34403 NullType, 34404 NullType, 34405 NullType, 34406 NullType, 34407 NullType, 34408 NullType, 34409 NullType, 34410 NullType, 34411 NullType, 34412 NullType, 34413 NullType, 34414 NullType, 34415 NullType, 34416 NullType, 34417 NullType, 34418 NullType, 34419 NullType, 34420 NullType, 34421 NullType, 34422 NullType, 34423 NullType, 34424 NullType, 34425 NullType, 34426 NullType, 34427 NullType, 34428 NullType, 34429 NullType, 34430 NullType, 34431 NullType, 34432 NullType, 34433 NullType, 34434 NullType, 34435 NullType, 34436 NullType, 34437 NullType, 34438 NullType, 34439 NullType, 34440 NullType, 34441 NullType, 34442 NullType, 34443 NullType, 34444 NullType, 34445 NullType, 34446 NullType, 34447 NullType, 34448 NullType, 34449 NullType, 34450 NullType, 34451 NullType, 34452 NullType, 34453 NullType, 34454 NullType, 34455 NullType, 34456 NullType, 34457 NullType> 34458 { 34459 typedef detail::KernelFunctorGlobal< 34460 T0, 34461 T1, 34462 T2, 34463 T3, 34464 T4, 34465 T5, 34466 T6, 34467 T7, 34468 T8, 34469 T9, 34470 T10, 34471 T11, 34472 T12, 34473 T13, 34474 T14, 34475 T15, 34476 T16, 34477 T17, 34478 T18, 34479 T19, 34480 T20, 34481 T21, 34482 T22, 34483 T23, 34484 T24, 34485 T25, 34486 T26, 34487 T27, 34488 T28, 34489 T29, 34490 T30, 34491 T31, 34492 T32, 34493 T33, 34494 T34, 34495 T35, 34496 T36, 34497 T37, 34498 T38, 34499 T39, 34500 T40, 34501 T41, 34502 T42, 34503 T43, 34504 T44, 34505 T45, 34506 T46, 34507 T47, 34508 T48, 34509 T49, 34510 T50, 34511 T51, 34512 T52, 34513 T53, 34514 T54, 34515 T55, 34516 T56, 34517 T57, 34518 T58, 34519 T59, 34520 T60, 34521 T61, 34522 T62, 34523 T63, 34524 T64, 34525 T65, 34526 T66, 34527 T67, 34528 NullType, 34529 NullType, 34530 NullType, 34531 NullType, 34532 NullType, 34533 NullType, 34534 NullType, 34535 NullType, 34536 NullType, 34537 NullType, 34538 NullType, 34539 NullType, 34540 NullType, 34541 NullType, 34542 NullType, 34543 NullType, 34544 NullType, 34545 NullType, 34546 NullType, 34547 NullType, 34548 NullType, 34549 NullType, 34550 NullType, 34551 NullType, 34552 NullType, 34553 NullType, 34554 NullType, 34555 NullType, 34556 NullType, 34557 NullType, 34558 NullType, 34559 NullType, 34560 NullType, 34561 NullType, 34562 NullType, 34563 NullType, 34564 NullType, 34565 NullType, 34566 NullType, 34567 NullType, 34568 NullType, 34569 NullType, 34570 NullType, 34571 NullType, 34572 NullType, 34573 NullType, 34574 NullType, 34575 NullType, 34576 NullType, 34577 NullType, 34578 NullType, 34579 NullType, 34580 NullType, 34581 NullType, 34582 NullType, 34583 NullType, 34584 NullType, 34585 NullType, 34586 NullType, 34587 NullType> FunctorType; 34588 34589 FunctorType functor_; 34590 34591 functionImplementation_(const FunctorType &functor) : 34592 functor_(functor) 34593 { 34594 } 34595 34596 typedef std::tr1::function<Event ( 34597 const EnqueueArgs&, 34598 T0, 34599 T1, 34600 T2, 34601 T3, 34602 T4, 34603 T5, 34604 T6, 34605 T7, 34606 T8, 34607 T9, 34608 T10, 34609 T11, 34610 T12, 34611 T13, 34612 T14, 34613 T15, 34614 T16, 34615 T17, 34616 T18, 34617 T19, 34618 T20, 34619 T21, 34620 T22, 34621 T23, 34622 T24, 34623 T25, 34624 T26, 34625 T27, 34626 T28, 34627 T29, 34628 T30, 34629 T31, 34630 T32, 34631 T33, 34632 T34, 34633 T35, 34634 T36, 34635 T37, 34636 T38, 34637 T39, 34638 T40, 34639 T41, 34640 T42, 34641 T43, 34642 T44, 34643 T45, 34644 T46, 34645 T47, 34646 T48, 34647 T49, 34648 T50, 34649 T51, 34650 T52, 34651 T53, 34652 T54, 34653 T55, 34654 T56, 34655 T57, 34656 T58, 34657 T59, 34658 T60, 34659 T61, 34660 T62, 34661 T63, 34662 T64, 34663 T65, 34664 T66, 34665 T67)> type_; 34666 34667 Event operator()(const EnqueueArgs& enqueueArgs, 34668 T0 arg0, 34669 T1 arg1, 34670 T2 arg2, 34671 T3 arg3, 34672 T4 arg4, 34673 T5 arg5, 34674 T6 arg6, 34675 T7 arg7, 34676 T8 arg8, 34677 T9 arg9, 34678 T10 arg10, 34679 T11 arg11, 34680 T12 arg12, 34681 T13 arg13, 34682 T14 arg14, 34683 T15 arg15, 34684 T16 arg16, 34685 T17 arg17, 34686 T18 arg18, 34687 T19 arg19, 34688 T20 arg20, 34689 T21 arg21, 34690 T22 arg22, 34691 T23 arg23, 34692 T24 arg24, 34693 T25 arg25, 34694 T26 arg26, 34695 T27 arg27, 34696 T28 arg28, 34697 T29 arg29, 34698 T30 arg30, 34699 T31 arg31, 34700 T32 arg32, 34701 T33 arg33, 34702 T34 arg34, 34703 T35 arg35, 34704 T36 arg36, 34705 T37 arg37, 34706 T38 arg38, 34707 T39 arg39, 34708 T40 arg40, 34709 T41 arg41, 34710 T42 arg42, 34711 T43 arg43, 34712 T44 arg44, 34713 T45 arg45, 34714 T46 arg46, 34715 T47 arg47, 34716 T48 arg48, 34717 T49 arg49, 34718 T50 arg50, 34719 T51 arg51, 34720 T52 arg52, 34721 T53 arg53, 34722 T54 arg54, 34723 T55 arg55, 34724 T56 arg56, 34725 T57 arg57, 34726 T58 arg58, 34727 T59 arg59, 34728 T60 arg60, 34729 T61 arg61, 34730 T62 arg62, 34731 T63 arg63, 34732 T64 arg64, 34733 T65 arg65, 34734 T66 arg66, 34735 T67 arg67) 34736 { 34737 return functor_( 34738 enqueueArgs, 34739 arg0, 34740 arg1, 34741 arg2, 34742 arg3, 34743 arg4, 34744 arg5, 34745 arg6, 34746 arg7, 34747 arg8, 34748 arg9, 34749 arg10, 34750 arg11, 34751 arg12, 34752 arg13, 34753 arg14, 34754 arg15, 34755 arg16, 34756 arg17, 34757 arg18, 34758 arg19, 34759 arg20, 34760 arg21, 34761 arg22, 34762 arg23, 34763 arg24, 34764 arg25, 34765 arg26, 34766 arg27, 34767 arg28, 34768 arg29, 34769 arg30, 34770 arg31, 34771 arg32, 34772 arg33, 34773 arg34, 34774 arg35, 34775 arg36, 34776 arg37, 34777 arg38, 34778 arg39, 34779 arg40, 34780 arg41, 34781 arg42, 34782 arg43, 34783 arg44, 34784 arg45, 34785 arg46, 34786 arg47, 34787 arg48, 34788 arg49, 34789 arg50, 34790 arg51, 34791 arg52, 34792 arg53, 34793 arg54, 34794 arg55, 34795 arg56, 34796 arg57, 34797 arg58, 34798 arg59, 34799 arg60, 34800 arg61, 34801 arg62, 34802 arg63, 34803 arg64, 34804 arg65, 34805 arg66, 34806 arg67); 34807 } 34808 34809 operator type_ () 34810 { 34811 return type_(*this); 34812 } 34813 34814 }; 34815 34816 template< 34817 typename T0, 34818 typename T1, 34819 typename T2, 34820 typename T3, 34821 typename T4, 34822 typename T5, 34823 typename T6, 34824 typename T7, 34825 typename T8, 34826 typename T9, 34827 typename T10, 34828 typename T11, 34829 typename T12, 34830 typename T13, 34831 typename T14, 34832 typename T15, 34833 typename T16, 34834 typename T17, 34835 typename T18, 34836 typename T19, 34837 typename T20, 34838 typename T21, 34839 typename T22, 34840 typename T23, 34841 typename T24, 34842 typename T25, 34843 typename T26, 34844 typename T27, 34845 typename T28, 34846 typename T29, 34847 typename T30, 34848 typename T31, 34849 typename T32, 34850 typename T33, 34851 typename T34, 34852 typename T35, 34853 typename T36, 34854 typename T37, 34855 typename T38, 34856 typename T39, 34857 typename T40, 34858 typename T41, 34859 typename T42, 34860 typename T43, 34861 typename T44, 34862 typename T45, 34863 typename T46, 34864 typename T47, 34865 typename T48, 34866 typename T49, 34867 typename T50, 34868 typename T51, 34869 typename T52, 34870 typename T53, 34871 typename T54, 34872 typename T55, 34873 typename T56, 34874 typename T57, 34875 typename T58, 34876 typename T59, 34877 typename T60, 34878 typename T61, 34879 typename T62, 34880 typename T63, 34881 typename T64, 34882 typename T65, 34883 typename T66, 34884 typename T67, 34885 typename T68> 34886 struct functionImplementation_< 34887 T0, 34888 T1, 34889 T2, 34890 T3, 34891 T4, 34892 T5, 34893 T6, 34894 T7, 34895 T8, 34896 T9, 34897 T10, 34898 T11, 34899 T12, 34900 T13, 34901 T14, 34902 T15, 34903 T16, 34904 T17, 34905 T18, 34906 T19, 34907 T20, 34908 T21, 34909 T22, 34910 T23, 34911 T24, 34912 T25, 34913 T26, 34914 T27, 34915 T28, 34916 T29, 34917 T30, 34918 T31, 34919 T32, 34920 T33, 34921 T34, 34922 T35, 34923 T36, 34924 T37, 34925 T38, 34926 T39, 34927 T40, 34928 T41, 34929 T42, 34930 T43, 34931 T44, 34932 T45, 34933 T46, 34934 T47, 34935 T48, 34936 T49, 34937 T50, 34938 T51, 34939 T52, 34940 T53, 34941 T54, 34942 T55, 34943 T56, 34944 T57, 34945 T58, 34946 T59, 34947 T60, 34948 T61, 34949 T62, 34950 T63, 34951 T64, 34952 T65, 34953 T66, 34954 T67, 34955 T68, 34956 NullType, 34957 NullType, 34958 NullType, 34959 NullType, 34960 NullType, 34961 NullType, 34962 NullType, 34963 NullType, 34964 NullType, 34965 NullType, 34966 NullType, 34967 NullType, 34968 NullType, 34969 NullType, 34970 NullType, 34971 NullType, 34972 NullType, 34973 NullType, 34974 NullType, 34975 NullType, 34976 NullType, 34977 NullType, 34978 NullType, 34979 NullType, 34980 NullType, 34981 NullType, 34982 NullType, 34983 NullType, 34984 NullType, 34985 NullType, 34986 NullType, 34987 NullType, 34988 NullType, 34989 NullType, 34990 NullType, 34991 NullType, 34992 NullType, 34993 NullType, 34994 NullType, 34995 NullType, 34996 NullType, 34997 NullType, 34998 NullType, 34999 NullType, 35000 NullType, 35001 NullType, 35002 NullType, 35003 NullType, 35004 NullType, 35005 NullType, 35006 NullType, 35007 NullType, 35008 NullType, 35009 NullType, 35010 NullType, 35011 NullType, 35012 NullType, 35013 NullType, 35014 NullType> 35015 { 35016 typedef detail::KernelFunctorGlobal< 35017 T0, 35018 T1, 35019 T2, 35020 T3, 35021 T4, 35022 T5, 35023 T6, 35024 T7, 35025 T8, 35026 T9, 35027 T10, 35028 T11, 35029 T12, 35030 T13, 35031 T14, 35032 T15, 35033 T16, 35034 T17, 35035 T18, 35036 T19, 35037 T20, 35038 T21, 35039 T22, 35040 T23, 35041 T24, 35042 T25, 35043 T26, 35044 T27, 35045 T28, 35046 T29, 35047 T30, 35048 T31, 35049 T32, 35050 T33, 35051 T34, 35052 T35, 35053 T36, 35054 T37, 35055 T38, 35056 T39, 35057 T40, 35058 T41, 35059 T42, 35060 T43, 35061 T44, 35062 T45, 35063 T46, 35064 T47, 35065 T48, 35066 T49, 35067 T50, 35068 T51, 35069 T52, 35070 T53, 35071 T54, 35072 T55, 35073 T56, 35074 T57, 35075 T58, 35076 T59, 35077 T60, 35078 T61, 35079 T62, 35080 T63, 35081 T64, 35082 T65, 35083 T66, 35084 T67, 35085 T68, 35086 NullType, 35087 NullType, 35088 NullType, 35089 NullType, 35090 NullType, 35091 NullType, 35092 NullType, 35093 NullType, 35094 NullType, 35095 NullType, 35096 NullType, 35097 NullType, 35098 NullType, 35099 NullType, 35100 NullType, 35101 NullType, 35102 NullType, 35103 NullType, 35104 NullType, 35105 NullType, 35106 NullType, 35107 NullType, 35108 NullType, 35109 NullType, 35110 NullType, 35111 NullType, 35112 NullType, 35113 NullType, 35114 NullType, 35115 NullType, 35116 NullType, 35117 NullType, 35118 NullType, 35119 NullType, 35120 NullType, 35121 NullType, 35122 NullType, 35123 NullType, 35124 NullType, 35125 NullType, 35126 NullType, 35127 NullType, 35128 NullType, 35129 NullType, 35130 NullType, 35131 NullType, 35132 NullType, 35133 NullType, 35134 NullType, 35135 NullType, 35136 NullType, 35137 NullType, 35138 NullType, 35139 NullType, 35140 NullType, 35141 NullType, 35142 NullType, 35143 NullType, 35144 NullType> FunctorType; 35145 35146 FunctorType functor_; 35147 35148 functionImplementation_(const FunctorType &functor) : 35149 functor_(functor) 35150 { 35151 } 35152 35153 typedef std::tr1::function<Event ( 35154 const EnqueueArgs&, 35155 T0, 35156 T1, 35157 T2, 35158 T3, 35159 T4, 35160 T5, 35161 T6, 35162 T7, 35163 T8, 35164 T9, 35165 T10, 35166 T11, 35167 T12, 35168 T13, 35169 T14, 35170 T15, 35171 T16, 35172 T17, 35173 T18, 35174 T19, 35175 T20, 35176 T21, 35177 T22, 35178 T23, 35179 T24, 35180 T25, 35181 T26, 35182 T27, 35183 T28, 35184 T29, 35185 T30, 35186 T31, 35187 T32, 35188 T33, 35189 T34, 35190 T35, 35191 T36, 35192 T37, 35193 T38, 35194 T39, 35195 T40, 35196 T41, 35197 T42, 35198 T43, 35199 T44, 35200 T45, 35201 T46, 35202 T47, 35203 T48, 35204 T49, 35205 T50, 35206 T51, 35207 T52, 35208 T53, 35209 T54, 35210 T55, 35211 T56, 35212 T57, 35213 T58, 35214 T59, 35215 T60, 35216 T61, 35217 T62, 35218 T63, 35219 T64, 35220 T65, 35221 T66, 35222 T67, 35223 T68)> type_; 35224 35225 Event operator()(const EnqueueArgs& enqueueArgs, 35226 T0 arg0, 35227 T1 arg1, 35228 T2 arg2, 35229 T3 arg3, 35230 T4 arg4, 35231 T5 arg5, 35232 T6 arg6, 35233 T7 arg7, 35234 T8 arg8, 35235 T9 arg9, 35236 T10 arg10, 35237 T11 arg11, 35238 T12 arg12, 35239 T13 arg13, 35240 T14 arg14, 35241 T15 arg15, 35242 T16 arg16, 35243 T17 arg17, 35244 T18 arg18, 35245 T19 arg19, 35246 T20 arg20, 35247 T21 arg21, 35248 T22 arg22, 35249 T23 arg23, 35250 T24 arg24, 35251 T25 arg25, 35252 T26 arg26, 35253 T27 arg27, 35254 T28 arg28, 35255 T29 arg29, 35256 T30 arg30, 35257 T31 arg31, 35258 T32 arg32, 35259 T33 arg33, 35260 T34 arg34, 35261 T35 arg35, 35262 T36 arg36, 35263 T37 arg37, 35264 T38 arg38, 35265 T39 arg39, 35266 T40 arg40, 35267 T41 arg41, 35268 T42 arg42, 35269 T43 arg43, 35270 T44 arg44, 35271 T45 arg45, 35272 T46 arg46, 35273 T47 arg47, 35274 T48 arg48, 35275 T49 arg49, 35276 T50 arg50, 35277 T51 arg51, 35278 T52 arg52, 35279 T53 arg53, 35280 T54 arg54, 35281 T55 arg55, 35282 T56 arg56, 35283 T57 arg57, 35284 T58 arg58, 35285 T59 arg59, 35286 T60 arg60, 35287 T61 arg61, 35288 T62 arg62, 35289 T63 arg63, 35290 T64 arg64, 35291 T65 arg65, 35292 T66 arg66, 35293 T67 arg67, 35294 T68 arg68) 35295 { 35296 return functor_( 35297 enqueueArgs, 35298 arg0, 35299 arg1, 35300 arg2, 35301 arg3, 35302 arg4, 35303 arg5, 35304 arg6, 35305 arg7, 35306 arg8, 35307 arg9, 35308 arg10, 35309 arg11, 35310 arg12, 35311 arg13, 35312 arg14, 35313 arg15, 35314 arg16, 35315 arg17, 35316 arg18, 35317 arg19, 35318 arg20, 35319 arg21, 35320 arg22, 35321 arg23, 35322 arg24, 35323 arg25, 35324 arg26, 35325 arg27, 35326 arg28, 35327 arg29, 35328 arg30, 35329 arg31, 35330 arg32, 35331 arg33, 35332 arg34, 35333 arg35, 35334 arg36, 35335 arg37, 35336 arg38, 35337 arg39, 35338 arg40, 35339 arg41, 35340 arg42, 35341 arg43, 35342 arg44, 35343 arg45, 35344 arg46, 35345 arg47, 35346 arg48, 35347 arg49, 35348 arg50, 35349 arg51, 35350 arg52, 35351 arg53, 35352 arg54, 35353 arg55, 35354 arg56, 35355 arg57, 35356 arg58, 35357 arg59, 35358 arg60, 35359 arg61, 35360 arg62, 35361 arg63, 35362 arg64, 35363 arg65, 35364 arg66, 35365 arg67, 35366 arg68); 35367 } 35368 35369 operator type_ () 35370 { 35371 return type_(*this); 35372 } 35373 35374 }; 35375 35376 template< 35377 typename T0, 35378 typename T1, 35379 typename T2, 35380 typename T3, 35381 typename T4, 35382 typename T5, 35383 typename T6, 35384 typename T7, 35385 typename T8, 35386 typename T9, 35387 typename T10, 35388 typename T11, 35389 typename T12, 35390 typename T13, 35391 typename T14, 35392 typename T15, 35393 typename T16, 35394 typename T17, 35395 typename T18, 35396 typename T19, 35397 typename T20, 35398 typename T21, 35399 typename T22, 35400 typename T23, 35401 typename T24, 35402 typename T25, 35403 typename T26, 35404 typename T27, 35405 typename T28, 35406 typename T29, 35407 typename T30, 35408 typename T31, 35409 typename T32, 35410 typename T33, 35411 typename T34, 35412 typename T35, 35413 typename T36, 35414 typename T37, 35415 typename T38, 35416 typename T39, 35417 typename T40, 35418 typename T41, 35419 typename T42, 35420 typename T43, 35421 typename T44, 35422 typename T45, 35423 typename T46, 35424 typename T47, 35425 typename T48, 35426 typename T49, 35427 typename T50, 35428 typename T51, 35429 typename T52, 35430 typename T53, 35431 typename T54, 35432 typename T55, 35433 typename T56, 35434 typename T57, 35435 typename T58, 35436 typename T59, 35437 typename T60, 35438 typename T61, 35439 typename T62, 35440 typename T63, 35441 typename T64, 35442 typename T65, 35443 typename T66, 35444 typename T67, 35445 typename T68, 35446 typename T69> 35447 struct functionImplementation_< 35448 T0, 35449 T1, 35450 T2, 35451 T3, 35452 T4, 35453 T5, 35454 T6, 35455 T7, 35456 T8, 35457 T9, 35458 T10, 35459 T11, 35460 T12, 35461 T13, 35462 T14, 35463 T15, 35464 T16, 35465 T17, 35466 T18, 35467 T19, 35468 T20, 35469 T21, 35470 T22, 35471 T23, 35472 T24, 35473 T25, 35474 T26, 35475 T27, 35476 T28, 35477 T29, 35478 T30, 35479 T31, 35480 T32, 35481 T33, 35482 T34, 35483 T35, 35484 T36, 35485 T37, 35486 T38, 35487 T39, 35488 T40, 35489 T41, 35490 T42, 35491 T43, 35492 T44, 35493 T45, 35494 T46, 35495 T47, 35496 T48, 35497 T49, 35498 T50, 35499 T51, 35500 T52, 35501 T53, 35502 T54, 35503 T55, 35504 T56, 35505 T57, 35506 T58, 35507 T59, 35508 T60, 35509 T61, 35510 T62, 35511 T63, 35512 T64, 35513 T65, 35514 T66, 35515 T67, 35516 T68, 35517 T69, 35518 NullType, 35519 NullType, 35520 NullType, 35521 NullType, 35522 NullType, 35523 NullType, 35524 NullType, 35525 NullType, 35526 NullType, 35527 NullType, 35528 NullType, 35529 NullType, 35530 NullType, 35531 NullType, 35532 NullType, 35533 NullType, 35534 NullType, 35535 NullType, 35536 NullType, 35537 NullType, 35538 NullType, 35539 NullType, 35540 NullType, 35541 NullType, 35542 NullType, 35543 NullType, 35544 NullType, 35545 NullType, 35546 NullType, 35547 NullType, 35548 NullType, 35549 NullType, 35550 NullType, 35551 NullType, 35552 NullType, 35553 NullType, 35554 NullType, 35555 NullType, 35556 NullType, 35557 NullType, 35558 NullType, 35559 NullType, 35560 NullType, 35561 NullType, 35562 NullType, 35563 NullType, 35564 NullType, 35565 NullType, 35566 NullType, 35567 NullType, 35568 NullType, 35569 NullType, 35570 NullType, 35571 NullType, 35572 NullType, 35573 NullType, 35574 NullType, 35575 NullType> 35576 { 35577 typedef detail::KernelFunctorGlobal< 35578 T0, 35579 T1, 35580 T2, 35581 T3, 35582 T4, 35583 T5, 35584 T6, 35585 T7, 35586 T8, 35587 T9, 35588 T10, 35589 T11, 35590 T12, 35591 T13, 35592 T14, 35593 T15, 35594 T16, 35595 T17, 35596 T18, 35597 T19, 35598 T20, 35599 T21, 35600 T22, 35601 T23, 35602 T24, 35603 T25, 35604 T26, 35605 T27, 35606 T28, 35607 T29, 35608 T30, 35609 T31, 35610 T32, 35611 T33, 35612 T34, 35613 T35, 35614 T36, 35615 T37, 35616 T38, 35617 T39, 35618 T40, 35619 T41, 35620 T42, 35621 T43, 35622 T44, 35623 T45, 35624 T46, 35625 T47, 35626 T48, 35627 T49, 35628 T50, 35629 T51, 35630 T52, 35631 T53, 35632 T54, 35633 T55, 35634 T56, 35635 T57, 35636 T58, 35637 T59, 35638 T60, 35639 T61, 35640 T62, 35641 T63, 35642 T64, 35643 T65, 35644 T66, 35645 T67, 35646 T68, 35647 T69, 35648 NullType, 35649 NullType, 35650 NullType, 35651 NullType, 35652 NullType, 35653 NullType, 35654 NullType, 35655 NullType, 35656 NullType, 35657 NullType, 35658 NullType, 35659 NullType, 35660 NullType, 35661 NullType, 35662 NullType, 35663 NullType, 35664 NullType, 35665 NullType, 35666 NullType, 35667 NullType, 35668 NullType, 35669 NullType, 35670 NullType, 35671 NullType, 35672 NullType, 35673 NullType, 35674 NullType, 35675 NullType, 35676 NullType, 35677 NullType, 35678 NullType, 35679 NullType, 35680 NullType, 35681 NullType, 35682 NullType, 35683 NullType, 35684 NullType, 35685 NullType, 35686 NullType, 35687 NullType, 35688 NullType, 35689 NullType, 35690 NullType, 35691 NullType, 35692 NullType, 35693 NullType, 35694 NullType, 35695 NullType, 35696 NullType, 35697 NullType, 35698 NullType, 35699 NullType, 35700 NullType, 35701 NullType, 35702 NullType, 35703 NullType, 35704 NullType, 35705 NullType> FunctorType; 35706 35707 FunctorType functor_; 35708 35709 functionImplementation_(const FunctorType &functor) : 35710 functor_(functor) 35711 { 35712 } 35713 35714 typedef std::tr1::function<Event ( 35715 const EnqueueArgs&, 35716 T0, 35717 T1, 35718 T2, 35719 T3, 35720 T4, 35721 T5, 35722 T6, 35723 T7, 35724 T8, 35725 T9, 35726 T10, 35727 T11, 35728 T12, 35729 T13, 35730 T14, 35731 T15, 35732 T16, 35733 T17, 35734 T18, 35735 T19, 35736 T20, 35737 T21, 35738 T22, 35739 T23, 35740 T24, 35741 T25, 35742 T26, 35743 T27, 35744 T28, 35745 T29, 35746 T30, 35747 T31, 35748 T32, 35749 T33, 35750 T34, 35751 T35, 35752 T36, 35753 T37, 35754 T38, 35755 T39, 35756 T40, 35757 T41, 35758 T42, 35759 T43, 35760 T44, 35761 T45, 35762 T46, 35763 T47, 35764 T48, 35765 T49, 35766 T50, 35767 T51, 35768 T52, 35769 T53, 35770 T54, 35771 T55, 35772 T56, 35773 T57, 35774 T58, 35775 T59, 35776 T60, 35777 T61, 35778 T62, 35779 T63, 35780 T64, 35781 T65, 35782 T66, 35783 T67, 35784 T68, 35785 T69)> type_; 35786 35787 Event operator()(const EnqueueArgs& enqueueArgs, 35788 T0 arg0, 35789 T1 arg1, 35790 T2 arg2, 35791 T3 arg3, 35792 T4 arg4, 35793 T5 arg5, 35794 T6 arg6, 35795 T7 arg7, 35796 T8 arg8, 35797 T9 arg9, 35798 T10 arg10, 35799 T11 arg11, 35800 T12 arg12, 35801 T13 arg13, 35802 T14 arg14, 35803 T15 arg15, 35804 T16 arg16, 35805 T17 arg17, 35806 T18 arg18, 35807 T19 arg19, 35808 T20 arg20, 35809 T21 arg21, 35810 T22 arg22, 35811 T23 arg23, 35812 T24 arg24, 35813 T25 arg25, 35814 T26 arg26, 35815 T27 arg27, 35816 T28 arg28, 35817 T29 arg29, 35818 T30 arg30, 35819 T31 arg31, 35820 T32 arg32, 35821 T33 arg33, 35822 T34 arg34, 35823 T35 arg35, 35824 T36 arg36, 35825 T37 arg37, 35826 T38 arg38, 35827 T39 arg39, 35828 T40 arg40, 35829 T41 arg41, 35830 T42 arg42, 35831 T43 arg43, 35832 T44 arg44, 35833 T45 arg45, 35834 T46 arg46, 35835 T47 arg47, 35836 T48 arg48, 35837 T49 arg49, 35838 T50 arg50, 35839 T51 arg51, 35840 T52 arg52, 35841 T53 arg53, 35842 T54 arg54, 35843 T55 arg55, 35844 T56 arg56, 35845 T57 arg57, 35846 T58 arg58, 35847 T59 arg59, 35848 T60 arg60, 35849 T61 arg61, 35850 T62 arg62, 35851 T63 arg63, 35852 T64 arg64, 35853 T65 arg65, 35854 T66 arg66, 35855 T67 arg67, 35856 T68 arg68, 35857 T69 arg69) 35858 { 35859 return functor_( 35860 enqueueArgs, 35861 arg0, 35862 arg1, 35863 arg2, 35864 arg3, 35865 arg4, 35866 arg5, 35867 arg6, 35868 arg7, 35869 arg8, 35870 arg9, 35871 arg10, 35872 arg11, 35873 arg12, 35874 arg13, 35875 arg14, 35876 arg15, 35877 arg16, 35878 arg17, 35879 arg18, 35880 arg19, 35881 arg20, 35882 arg21, 35883 arg22, 35884 arg23, 35885 arg24, 35886 arg25, 35887 arg26, 35888 arg27, 35889 arg28, 35890 arg29, 35891 arg30, 35892 arg31, 35893 arg32, 35894 arg33, 35895 arg34, 35896 arg35, 35897 arg36, 35898 arg37, 35899 arg38, 35900 arg39, 35901 arg40, 35902 arg41, 35903 arg42, 35904 arg43, 35905 arg44, 35906 arg45, 35907 arg46, 35908 arg47, 35909 arg48, 35910 arg49, 35911 arg50, 35912 arg51, 35913 arg52, 35914 arg53, 35915 arg54, 35916 arg55, 35917 arg56, 35918 arg57, 35919 arg58, 35920 arg59, 35921 arg60, 35922 arg61, 35923 arg62, 35924 arg63, 35925 arg64, 35926 arg65, 35927 arg66, 35928 arg67, 35929 arg68, 35930 arg69); 35931 } 35932 35933 operator type_ () 35934 { 35935 return type_(*this); 35936 } 35937 35938 }; 35939 35940 template< 35941 typename T0, 35942 typename T1, 35943 typename T2, 35944 typename T3, 35945 typename T4, 35946 typename T5, 35947 typename T6, 35948 typename T7, 35949 typename T8, 35950 typename T9, 35951 typename T10, 35952 typename T11, 35953 typename T12, 35954 typename T13, 35955 typename T14, 35956 typename T15, 35957 typename T16, 35958 typename T17, 35959 typename T18, 35960 typename T19, 35961 typename T20, 35962 typename T21, 35963 typename T22, 35964 typename T23, 35965 typename T24, 35966 typename T25, 35967 typename T26, 35968 typename T27, 35969 typename T28, 35970 typename T29, 35971 typename T30, 35972 typename T31, 35973 typename T32, 35974 typename T33, 35975 typename T34, 35976 typename T35, 35977 typename T36, 35978 typename T37, 35979 typename T38, 35980 typename T39, 35981 typename T40, 35982 typename T41, 35983 typename T42, 35984 typename T43, 35985 typename T44, 35986 typename T45, 35987 typename T46, 35988 typename T47, 35989 typename T48, 35990 typename T49, 35991 typename T50, 35992 typename T51, 35993 typename T52, 35994 typename T53, 35995 typename T54, 35996 typename T55, 35997 typename T56, 35998 typename T57, 35999 typename T58, 36000 typename T59, 36001 typename T60, 36002 typename T61, 36003 typename T62, 36004 typename T63, 36005 typename T64, 36006 typename T65, 36007 typename T66, 36008 typename T67, 36009 typename T68, 36010 typename T69, 36011 typename T70> 36012 struct functionImplementation_< 36013 T0, 36014 T1, 36015 T2, 36016 T3, 36017 T4, 36018 T5, 36019 T6, 36020 T7, 36021 T8, 36022 T9, 36023 T10, 36024 T11, 36025 T12, 36026 T13, 36027 T14, 36028 T15, 36029 T16, 36030 T17, 36031 T18, 36032 T19, 36033 T20, 36034 T21, 36035 T22, 36036 T23, 36037 T24, 36038 T25, 36039 T26, 36040 T27, 36041 T28, 36042 T29, 36043 T30, 36044 T31, 36045 T32, 36046 T33, 36047 T34, 36048 T35, 36049 T36, 36050 T37, 36051 T38, 36052 T39, 36053 T40, 36054 T41, 36055 T42, 36056 T43, 36057 T44, 36058 T45, 36059 T46, 36060 T47, 36061 T48, 36062 T49, 36063 T50, 36064 T51, 36065 T52, 36066 T53, 36067 T54, 36068 T55, 36069 T56, 36070 T57, 36071 T58, 36072 T59, 36073 T60, 36074 T61, 36075 T62, 36076 T63, 36077 T64, 36078 T65, 36079 T66, 36080 T67, 36081 T68, 36082 T69, 36083 T70, 36084 NullType, 36085 NullType, 36086 NullType, 36087 NullType, 36088 NullType, 36089 NullType, 36090 NullType, 36091 NullType, 36092 NullType, 36093 NullType, 36094 NullType, 36095 NullType, 36096 NullType, 36097 NullType, 36098 NullType, 36099 NullType, 36100 NullType, 36101 NullType, 36102 NullType, 36103 NullType, 36104 NullType, 36105 NullType, 36106 NullType, 36107 NullType, 36108 NullType, 36109 NullType, 36110 NullType, 36111 NullType, 36112 NullType, 36113 NullType, 36114 NullType, 36115 NullType, 36116 NullType, 36117 NullType, 36118 NullType, 36119 NullType, 36120 NullType, 36121 NullType, 36122 NullType, 36123 NullType, 36124 NullType, 36125 NullType, 36126 NullType, 36127 NullType, 36128 NullType, 36129 NullType, 36130 NullType, 36131 NullType, 36132 NullType, 36133 NullType, 36134 NullType, 36135 NullType, 36136 NullType, 36137 NullType, 36138 NullType, 36139 NullType, 36140 NullType> 36141 { 36142 typedef detail::KernelFunctorGlobal< 36143 T0, 36144 T1, 36145 T2, 36146 T3, 36147 T4, 36148 T5, 36149 T6, 36150 T7, 36151 T8, 36152 T9, 36153 T10, 36154 T11, 36155 T12, 36156 T13, 36157 T14, 36158 T15, 36159 T16, 36160 T17, 36161 T18, 36162 T19, 36163 T20, 36164 T21, 36165 T22, 36166 T23, 36167 T24, 36168 T25, 36169 T26, 36170 T27, 36171 T28, 36172 T29, 36173 T30, 36174 T31, 36175 T32, 36176 T33, 36177 T34, 36178 T35, 36179 T36, 36180 T37, 36181 T38, 36182 T39, 36183 T40, 36184 T41, 36185 T42, 36186 T43, 36187 T44, 36188 T45, 36189 T46, 36190 T47, 36191 T48, 36192 T49, 36193 T50, 36194 T51, 36195 T52, 36196 T53, 36197 T54, 36198 T55, 36199 T56, 36200 T57, 36201 T58, 36202 T59, 36203 T60, 36204 T61, 36205 T62, 36206 T63, 36207 T64, 36208 T65, 36209 T66, 36210 T67, 36211 T68, 36212 T69, 36213 T70, 36214 NullType, 36215 NullType, 36216 NullType, 36217 NullType, 36218 NullType, 36219 NullType, 36220 NullType, 36221 NullType, 36222 NullType, 36223 NullType, 36224 NullType, 36225 NullType, 36226 NullType, 36227 NullType, 36228 NullType, 36229 NullType, 36230 NullType, 36231 NullType, 36232 NullType, 36233 NullType, 36234 NullType, 36235 NullType, 36236 NullType, 36237 NullType, 36238 NullType, 36239 NullType, 36240 NullType, 36241 NullType, 36242 NullType, 36243 NullType, 36244 NullType, 36245 NullType, 36246 NullType, 36247 NullType, 36248 NullType, 36249 NullType, 36250 NullType, 36251 NullType, 36252 NullType, 36253 NullType, 36254 NullType, 36255 NullType, 36256 NullType, 36257 NullType, 36258 NullType, 36259 NullType, 36260 NullType, 36261 NullType, 36262 NullType, 36263 NullType, 36264 NullType, 36265 NullType, 36266 NullType, 36267 NullType, 36268 NullType, 36269 NullType, 36270 NullType> FunctorType; 36271 36272 FunctorType functor_; 36273 36274 functionImplementation_(const FunctorType &functor) : 36275 functor_(functor) 36276 { 36277 } 36278 36279 typedef std::tr1::function<Event ( 36280 const EnqueueArgs&, 36281 T0, 36282 T1, 36283 T2, 36284 T3, 36285 T4, 36286 T5, 36287 T6, 36288 T7, 36289 T8, 36290 T9, 36291 T10, 36292 T11, 36293 T12, 36294 T13, 36295 T14, 36296 T15, 36297 T16, 36298 T17, 36299 T18, 36300 T19, 36301 T20, 36302 T21, 36303 T22, 36304 T23, 36305 T24, 36306 T25, 36307 T26, 36308 T27, 36309 T28, 36310 T29, 36311 T30, 36312 T31, 36313 T32, 36314 T33, 36315 T34, 36316 T35, 36317 T36, 36318 T37, 36319 T38, 36320 T39, 36321 T40, 36322 T41, 36323 T42, 36324 T43, 36325 T44, 36326 T45, 36327 T46, 36328 T47, 36329 T48, 36330 T49, 36331 T50, 36332 T51, 36333 T52, 36334 T53, 36335 T54, 36336 T55, 36337 T56, 36338 T57, 36339 T58, 36340 T59, 36341 T60, 36342 T61, 36343 T62, 36344 T63, 36345 T64, 36346 T65, 36347 T66, 36348 T67, 36349 T68, 36350 T69, 36351 T70)> type_; 36352 36353 Event operator()(const EnqueueArgs& enqueueArgs, 36354 T0 arg0, 36355 T1 arg1, 36356 T2 arg2, 36357 T3 arg3, 36358 T4 arg4, 36359 T5 arg5, 36360 T6 arg6, 36361 T7 arg7, 36362 T8 arg8, 36363 T9 arg9, 36364 T10 arg10, 36365 T11 arg11, 36366 T12 arg12, 36367 T13 arg13, 36368 T14 arg14, 36369 T15 arg15, 36370 T16 arg16, 36371 T17 arg17, 36372 T18 arg18, 36373 T19 arg19, 36374 T20 arg20, 36375 T21 arg21, 36376 T22 arg22, 36377 T23 arg23, 36378 T24 arg24, 36379 T25 arg25, 36380 T26 arg26, 36381 T27 arg27, 36382 T28 arg28, 36383 T29 arg29, 36384 T30 arg30, 36385 T31 arg31, 36386 T32 arg32, 36387 T33 arg33, 36388 T34 arg34, 36389 T35 arg35, 36390 T36 arg36, 36391 T37 arg37, 36392 T38 arg38, 36393 T39 arg39, 36394 T40 arg40, 36395 T41 arg41, 36396 T42 arg42, 36397 T43 arg43, 36398 T44 arg44, 36399 T45 arg45, 36400 T46 arg46, 36401 T47 arg47, 36402 T48 arg48, 36403 T49 arg49, 36404 T50 arg50, 36405 T51 arg51, 36406 T52 arg52, 36407 T53 arg53, 36408 T54 arg54, 36409 T55 arg55, 36410 T56 arg56, 36411 T57 arg57, 36412 T58 arg58, 36413 T59 arg59, 36414 T60 arg60, 36415 T61 arg61, 36416 T62 arg62, 36417 T63 arg63, 36418 T64 arg64, 36419 T65 arg65, 36420 T66 arg66, 36421 T67 arg67, 36422 T68 arg68, 36423 T69 arg69, 36424 T70 arg70) 36425 { 36426 return functor_( 36427 enqueueArgs, 36428 arg0, 36429 arg1, 36430 arg2, 36431 arg3, 36432 arg4, 36433 arg5, 36434 arg6, 36435 arg7, 36436 arg8, 36437 arg9, 36438 arg10, 36439 arg11, 36440 arg12, 36441 arg13, 36442 arg14, 36443 arg15, 36444 arg16, 36445 arg17, 36446 arg18, 36447 arg19, 36448 arg20, 36449 arg21, 36450 arg22, 36451 arg23, 36452 arg24, 36453 arg25, 36454 arg26, 36455 arg27, 36456 arg28, 36457 arg29, 36458 arg30, 36459 arg31, 36460 arg32, 36461 arg33, 36462 arg34, 36463 arg35, 36464 arg36, 36465 arg37, 36466 arg38, 36467 arg39, 36468 arg40, 36469 arg41, 36470 arg42, 36471 arg43, 36472 arg44, 36473 arg45, 36474 arg46, 36475 arg47, 36476 arg48, 36477 arg49, 36478 arg50, 36479 arg51, 36480 arg52, 36481 arg53, 36482 arg54, 36483 arg55, 36484 arg56, 36485 arg57, 36486 arg58, 36487 arg59, 36488 arg60, 36489 arg61, 36490 arg62, 36491 arg63, 36492 arg64, 36493 arg65, 36494 arg66, 36495 arg67, 36496 arg68, 36497 arg69, 36498 arg70); 36499 } 36500 36501 operator type_ () 36502 { 36503 return type_(*this); 36504 } 36505 36506 }; 36507 36508 template< 36509 typename T0, 36510 typename T1, 36511 typename T2, 36512 typename T3, 36513 typename T4, 36514 typename T5, 36515 typename T6, 36516 typename T7, 36517 typename T8, 36518 typename T9, 36519 typename T10, 36520 typename T11, 36521 typename T12, 36522 typename T13, 36523 typename T14, 36524 typename T15, 36525 typename T16, 36526 typename T17, 36527 typename T18, 36528 typename T19, 36529 typename T20, 36530 typename T21, 36531 typename T22, 36532 typename T23, 36533 typename T24, 36534 typename T25, 36535 typename T26, 36536 typename T27, 36537 typename T28, 36538 typename T29, 36539 typename T30, 36540 typename T31, 36541 typename T32, 36542 typename T33, 36543 typename T34, 36544 typename T35, 36545 typename T36, 36546 typename T37, 36547 typename T38, 36548 typename T39, 36549 typename T40, 36550 typename T41, 36551 typename T42, 36552 typename T43, 36553 typename T44, 36554 typename T45, 36555 typename T46, 36556 typename T47, 36557 typename T48, 36558 typename T49, 36559 typename T50, 36560 typename T51, 36561 typename T52, 36562 typename T53, 36563 typename T54, 36564 typename T55, 36565 typename T56, 36566 typename T57, 36567 typename T58, 36568 typename T59, 36569 typename T60, 36570 typename T61, 36571 typename T62, 36572 typename T63, 36573 typename T64, 36574 typename T65, 36575 typename T66, 36576 typename T67, 36577 typename T68, 36578 typename T69, 36579 typename T70, 36580 typename T71> 36581 struct functionImplementation_< 36582 T0, 36583 T1, 36584 T2, 36585 T3, 36586 T4, 36587 T5, 36588 T6, 36589 T7, 36590 T8, 36591 T9, 36592 T10, 36593 T11, 36594 T12, 36595 T13, 36596 T14, 36597 T15, 36598 T16, 36599 T17, 36600 T18, 36601 T19, 36602 T20, 36603 T21, 36604 T22, 36605 T23, 36606 T24, 36607 T25, 36608 T26, 36609 T27, 36610 T28, 36611 T29, 36612 T30, 36613 T31, 36614 T32, 36615 T33, 36616 T34, 36617 T35, 36618 T36, 36619 T37, 36620 T38, 36621 T39, 36622 T40, 36623 T41, 36624 T42, 36625 T43, 36626 T44, 36627 T45, 36628 T46, 36629 T47, 36630 T48, 36631 T49, 36632 T50, 36633 T51, 36634 T52, 36635 T53, 36636 T54, 36637 T55, 36638 T56, 36639 T57, 36640 T58, 36641 T59, 36642 T60, 36643 T61, 36644 T62, 36645 T63, 36646 T64, 36647 T65, 36648 T66, 36649 T67, 36650 T68, 36651 T69, 36652 T70, 36653 T71, 36654 NullType, 36655 NullType, 36656 NullType, 36657 NullType, 36658 NullType, 36659 NullType, 36660 NullType, 36661 NullType, 36662 NullType, 36663 NullType, 36664 NullType, 36665 NullType, 36666 NullType, 36667 NullType, 36668 NullType, 36669 NullType, 36670 NullType, 36671 NullType, 36672 NullType, 36673 NullType, 36674 NullType, 36675 NullType, 36676 NullType, 36677 NullType, 36678 NullType, 36679 NullType, 36680 NullType, 36681 NullType, 36682 NullType, 36683 NullType, 36684 NullType, 36685 NullType, 36686 NullType, 36687 NullType, 36688 NullType, 36689 NullType, 36690 NullType, 36691 NullType, 36692 NullType, 36693 NullType, 36694 NullType, 36695 NullType, 36696 NullType, 36697 NullType, 36698 NullType, 36699 NullType, 36700 NullType, 36701 NullType, 36702 NullType, 36703 NullType, 36704 NullType, 36705 NullType, 36706 NullType, 36707 NullType, 36708 NullType, 36709 NullType> 36710 { 36711 typedef detail::KernelFunctorGlobal< 36712 T0, 36713 T1, 36714 T2, 36715 T3, 36716 T4, 36717 T5, 36718 T6, 36719 T7, 36720 T8, 36721 T9, 36722 T10, 36723 T11, 36724 T12, 36725 T13, 36726 T14, 36727 T15, 36728 T16, 36729 T17, 36730 T18, 36731 T19, 36732 T20, 36733 T21, 36734 T22, 36735 T23, 36736 T24, 36737 T25, 36738 T26, 36739 T27, 36740 T28, 36741 T29, 36742 T30, 36743 T31, 36744 T32, 36745 T33, 36746 T34, 36747 T35, 36748 T36, 36749 T37, 36750 T38, 36751 T39, 36752 T40, 36753 T41, 36754 T42, 36755 T43, 36756 T44, 36757 T45, 36758 T46, 36759 T47, 36760 T48, 36761 T49, 36762 T50, 36763 T51, 36764 T52, 36765 T53, 36766 T54, 36767 T55, 36768 T56, 36769 T57, 36770 T58, 36771 T59, 36772 T60, 36773 T61, 36774 T62, 36775 T63, 36776 T64, 36777 T65, 36778 T66, 36779 T67, 36780 T68, 36781 T69, 36782 T70, 36783 T71, 36784 NullType, 36785 NullType, 36786 NullType, 36787 NullType, 36788 NullType, 36789 NullType, 36790 NullType, 36791 NullType, 36792 NullType, 36793 NullType, 36794 NullType, 36795 NullType, 36796 NullType, 36797 NullType, 36798 NullType, 36799 NullType, 36800 NullType, 36801 NullType, 36802 NullType, 36803 NullType, 36804 NullType, 36805 NullType, 36806 NullType, 36807 NullType, 36808 NullType, 36809 NullType, 36810 NullType, 36811 NullType, 36812 NullType, 36813 NullType, 36814 NullType, 36815 NullType, 36816 NullType, 36817 NullType, 36818 NullType, 36819 NullType, 36820 NullType, 36821 NullType, 36822 NullType, 36823 NullType, 36824 NullType, 36825 NullType, 36826 NullType, 36827 NullType, 36828 NullType, 36829 NullType, 36830 NullType, 36831 NullType, 36832 NullType, 36833 NullType, 36834 NullType, 36835 NullType, 36836 NullType, 36837 NullType, 36838 NullType, 36839 NullType> FunctorType; 36840 36841 FunctorType functor_; 36842 36843 functionImplementation_(const FunctorType &functor) : 36844 functor_(functor) 36845 { 36846 } 36847 36848 typedef std::tr1::function<Event ( 36849 const EnqueueArgs&, 36850 T0, 36851 T1, 36852 T2, 36853 T3, 36854 T4, 36855 T5, 36856 T6, 36857 T7, 36858 T8, 36859 T9, 36860 T10, 36861 T11, 36862 T12, 36863 T13, 36864 T14, 36865 T15, 36866 T16, 36867 T17, 36868 T18, 36869 T19, 36870 T20, 36871 T21, 36872 T22, 36873 T23, 36874 T24, 36875 T25, 36876 T26, 36877 T27, 36878 T28, 36879 T29, 36880 T30, 36881 T31, 36882 T32, 36883 T33, 36884 T34, 36885 T35, 36886 T36, 36887 T37, 36888 T38, 36889 T39, 36890 T40, 36891 T41, 36892 T42, 36893 T43, 36894 T44, 36895 T45, 36896 T46, 36897 T47, 36898 T48, 36899 T49, 36900 T50, 36901 T51, 36902 T52, 36903 T53, 36904 T54, 36905 T55, 36906 T56, 36907 T57, 36908 T58, 36909 T59, 36910 T60, 36911 T61, 36912 T62, 36913 T63, 36914 T64, 36915 T65, 36916 T66, 36917 T67, 36918 T68, 36919 T69, 36920 T70, 36921 T71)> type_; 36922 36923 Event operator()(const EnqueueArgs& enqueueArgs, 36924 T0 arg0, 36925 T1 arg1, 36926 T2 arg2, 36927 T3 arg3, 36928 T4 arg4, 36929 T5 arg5, 36930 T6 arg6, 36931 T7 arg7, 36932 T8 arg8, 36933 T9 arg9, 36934 T10 arg10, 36935 T11 arg11, 36936 T12 arg12, 36937 T13 arg13, 36938 T14 arg14, 36939 T15 arg15, 36940 T16 arg16, 36941 T17 arg17, 36942 T18 arg18, 36943 T19 arg19, 36944 T20 arg20, 36945 T21 arg21, 36946 T22 arg22, 36947 T23 arg23, 36948 T24 arg24, 36949 T25 arg25, 36950 T26 arg26, 36951 T27 arg27, 36952 T28 arg28, 36953 T29 arg29, 36954 T30 arg30, 36955 T31 arg31, 36956 T32 arg32, 36957 T33 arg33, 36958 T34 arg34, 36959 T35 arg35, 36960 T36 arg36, 36961 T37 arg37, 36962 T38 arg38, 36963 T39 arg39, 36964 T40 arg40, 36965 T41 arg41, 36966 T42 arg42, 36967 T43 arg43, 36968 T44 arg44, 36969 T45 arg45, 36970 T46 arg46, 36971 T47 arg47, 36972 T48 arg48, 36973 T49 arg49, 36974 T50 arg50, 36975 T51 arg51, 36976 T52 arg52, 36977 T53 arg53, 36978 T54 arg54, 36979 T55 arg55, 36980 T56 arg56, 36981 T57 arg57, 36982 T58 arg58, 36983 T59 arg59, 36984 T60 arg60, 36985 T61 arg61, 36986 T62 arg62, 36987 T63 arg63, 36988 T64 arg64, 36989 T65 arg65, 36990 T66 arg66, 36991 T67 arg67, 36992 T68 arg68, 36993 T69 arg69, 36994 T70 arg70, 36995 T71 arg71) 36996 { 36997 return functor_( 36998 enqueueArgs, 36999 arg0, 37000 arg1, 37001 arg2, 37002 arg3, 37003 arg4, 37004 arg5, 37005 arg6, 37006 arg7, 37007 arg8, 37008 arg9, 37009 arg10, 37010 arg11, 37011 arg12, 37012 arg13, 37013 arg14, 37014 arg15, 37015 arg16, 37016 arg17, 37017 arg18, 37018 arg19, 37019 arg20, 37020 arg21, 37021 arg22, 37022 arg23, 37023 arg24, 37024 arg25, 37025 arg26, 37026 arg27, 37027 arg28, 37028 arg29, 37029 arg30, 37030 arg31, 37031 arg32, 37032 arg33, 37033 arg34, 37034 arg35, 37035 arg36, 37036 arg37, 37037 arg38, 37038 arg39, 37039 arg40, 37040 arg41, 37041 arg42, 37042 arg43, 37043 arg44, 37044 arg45, 37045 arg46, 37046 arg47, 37047 arg48, 37048 arg49, 37049 arg50, 37050 arg51, 37051 arg52, 37052 arg53, 37053 arg54, 37054 arg55, 37055 arg56, 37056 arg57, 37057 arg58, 37058 arg59, 37059 arg60, 37060 arg61, 37061 arg62, 37062 arg63, 37063 arg64, 37064 arg65, 37065 arg66, 37066 arg67, 37067 arg68, 37068 arg69, 37069 arg70, 37070 arg71); 37071 } 37072 37073 operator type_ () 37074 { 37075 return type_(*this); 37076 } 37077 37078 }; 37079 37080 template< 37081 typename T0, 37082 typename T1, 37083 typename T2, 37084 typename T3, 37085 typename T4, 37086 typename T5, 37087 typename T6, 37088 typename T7, 37089 typename T8, 37090 typename T9, 37091 typename T10, 37092 typename T11, 37093 typename T12, 37094 typename T13, 37095 typename T14, 37096 typename T15, 37097 typename T16, 37098 typename T17, 37099 typename T18, 37100 typename T19, 37101 typename T20, 37102 typename T21, 37103 typename T22, 37104 typename T23, 37105 typename T24, 37106 typename T25, 37107 typename T26, 37108 typename T27, 37109 typename T28, 37110 typename T29, 37111 typename T30, 37112 typename T31, 37113 typename T32, 37114 typename T33, 37115 typename T34, 37116 typename T35, 37117 typename T36, 37118 typename T37, 37119 typename T38, 37120 typename T39, 37121 typename T40, 37122 typename T41, 37123 typename T42, 37124 typename T43, 37125 typename T44, 37126 typename T45, 37127 typename T46, 37128 typename T47, 37129 typename T48, 37130 typename T49, 37131 typename T50, 37132 typename T51, 37133 typename T52, 37134 typename T53, 37135 typename T54, 37136 typename T55, 37137 typename T56, 37138 typename T57, 37139 typename T58, 37140 typename T59, 37141 typename T60, 37142 typename T61, 37143 typename T62, 37144 typename T63, 37145 typename T64, 37146 typename T65, 37147 typename T66, 37148 typename T67, 37149 typename T68, 37150 typename T69, 37151 typename T70, 37152 typename T71, 37153 typename T72> 37154 struct functionImplementation_< 37155 T0, 37156 T1, 37157 T2, 37158 T3, 37159 T4, 37160 T5, 37161 T6, 37162 T7, 37163 T8, 37164 T9, 37165 T10, 37166 T11, 37167 T12, 37168 T13, 37169 T14, 37170 T15, 37171 T16, 37172 T17, 37173 T18, 37174 T19, 37175 T20, 37176 T21, 37177 T22, 37178 T23, 37179 T24, 37180 T25, 37181 T26, 37182 T27, 37183 T28, 37184 T29, 37185 T30, 37186 T31, 37187 T32, 37188 T33, 37189 T34, 37190 T35, 37191 T36, 37192 T37, 37193 T38, 37194 T39, 37195 T40, 37196 T41, 37197 T42, 37198 T43, 37199 T44, 37200 T45, 37201 T46, 37202 T47, 37203 T48, 37204 T49, 37205 T50, 37206 T51, 37207 T52, 37208 T53, 37209 T54, 37210 T55, 37211 T56, 37212 T57, 37213 T58, 37214 T59, 37215 T60, 37216 T61, 37217 T62, 37218 T63, 37219 T64, 37220 T65, 37221 T66, 37222 T67, 37223 T68, 37224 T69, 37225 T70, 37226 T71, 37227 T72, 37228 NullType, 37229 NullType, 37230 NullType, 37231 NullType, 37232 NullType, 37233 NullType, 37234 NullType, 37235 NullType, 37236 NullType, 37237 NullType, 37238 NullType, 37239 NullType, 37240 NullType, 37241 NullType, 37242 NullType, 37243 NullType, 37244 NullType, 37245 NullType, 37246 NullType, 37247 NullType, 37248 NullType, 37249 NullType, 37250 NullType, 37251 NullType, 37252 NullType, 37253 NullType, 37254 NullType, 37255 NullType, 37256 NullType, 37257 NullType, 37258 NullType, 37259 NullType, 37260 NullType, 37261 NullType, 37262 NullType, 37263 NullType, 37264 NullType, 37265 NullType, 37266 NullType, 37267 NullType, 37268 NullType, 37269 NullType, 37270 NullType, 37271 NullType, 37272 NullType, 37273 NullType, 37274 NullType, 37275 NullType, 37276 NullType, 37277 NullType, 37278 NullType, 37279 NullType, 37280 NullType, 37281 NullType, 37282 NullType> 37283 { 37284 typedef detail::KernelFunctorGlobal< 37285 T0, 37286 T1, 37287 T2, 37288 T3, 37289 T4, 37290 T5, 37291 T6, 37292 T7, 37293 T8, 37294 T9, 37295 T10, 37296 T11, 37297 T12, 37298 T13, 37299 T14, 37300 T15, 37301 T16, 37302 T17, 37303 T18, 37304 T19, 37305 T20, 37306 T21, 37307 T22, 37308 T23, 37309 T24, 37310 T25, 37311 T26, 37312 T27, 37313 T28, 37314 T29, 37315 T30, 37316 T31, 37317 T32, 37318 T33, 37319 T34, 37320 T35, 37321 T36, 37322 T37, 37323 T38, 37324 T39, 37325 T40, 37326 T41, 37327 T42, 37328 T43, 37329 T44, 37330 T45, 37331 T46, 37332 T47, 37333 T48, 37334 T49, 37335 T50, 37336 T51, 37337 T52, 37338 T53, 37339 T54, 37340 T55, 37341 T56, 37342 T57, 37343 T58, 37344 T59, 37345 T60, 37346 T61, 37347 T62, 37348 T63, 37349 T64, 37350 T65, 37351 T66, 37352 T67, 37353 T68, 37354 T69, 37355 T70, 37356 T71, 37357 T72, 37358 NullType, 37359 NullType, 37360 NullType, 37361 NullType, 37362 NullType, 37363 NullType, 37364 NullType, 37365 NullType, 37366 NullType, 37367 NullType, 37368 NullType, 37369 NullType, 37370 NullType, 37371 NullType, 37372 NullType, 37373 NullType, 37374 NullType, 37375 NullType, 37376 NullType, 37377 NullType, 37378 NullType, 37379 NullType, 37380 NullType, 37381 NullType, 37382 NullType, 37383 NullType, 37384 NullType, 37385 NullType, 37386 NullType, 37387 NullType, 37388 NullType, 37389 NullType, 37390 NullType, 37391 NullType, 37392 NullType, 37393 NullType, 37394 NullType, 37395 NullType, 37396 NullType, 37397 NullType, 37398 NullType, 37399 NullType, 37400 NullType, 37401 NullType, 37402 NullType, 37403 NullType, 37404 NullType, 37405 NullType, 37406 NullType, 37407 NullType, 37408 NullType, 37409 NullType, 37410 NullType, 37411 NullType, 37412 NullType> FunctorType; 37413 37414 FunctorType functor_; 37415 37416 functionImplementation_(const FunctorType &functor) : 37417 functor_(functor) 37418 { 37419 } 37420 37421 typedef std::tr1::function<Event ( 37422 const EnqueueArgs&, 37423 T0, 37424 T1, 37425 T2, 37426 T3, 37427 T4, 37428 T5, 37429 T6, 37430 T7, 37431 T8, 37432 T9, 37433 T10, 37434 T11, 37435 T12, 37436 T13, 37437 T14, 37438 T15, 37439 T16, 37440 T17, 37441 T18, 37442 T19, 37443 T20, 37444 T21, 37445 T22, 37446 T23, 37447 T24, 37448 T25, 37449 T26, 37450 T27, 37451 T28, 37452 T29, 37453 T30, 37454 T31, 37455 T32, 37456 T33, 37457 T34, 37458 T35, 37459 T36, 37460 T37, 37461 T38, 37462 T39, 37463 T40, 37464 T41, 37465 T42, 37466 T43, 37467 T44, 37468 T45, 37469 T46, 37470 T47, 37471 T48, 37472 T49, 37473 T50, 37474 T51, 37475 T52, 37476 T53, 37477 T54, 37478 T55, 37479 T56, 37480 T57, 37481 T58, 37482 T59, 37483 T60, 37484 T61, 37485 T62, 37486 T63, 37487 T64, 37488 T65, 37489 T66, 37490 T67, 37491 T68, 37492 T69, 37493 T70, 37494 T71, 37495 T72)> type_; 37496 37497 Event operator()(const EnqueueArgs& enqueueArgs, 37498 T0 arg0, 37499 T1 arg1, 37500 T2 arg2, 37501 T3 arg3, 37502 T4 arg4, 37503 T5 arg5, 37504 T6 arg6, 37505 T7 arg7, 37506 T8 arg8, 37507 T9 arg9, 37508 T10 arg10, 37509 T11 arg11, 37510 T12 arg12, 37511 T13 arg13, 37512 T14 arg14, 37513 T15 arg15, 37514 T16 arg16, 37515 T17 arg17, 37516 T18 arg18, 37517 T19 arg19, 37518 T20 arg20, 37519 T21 arg21, 37520 T22 arg22, 37521 T23 arg23, 37522 T24 arg24, 37523 T25 arg25, 37524 T26 arg26, 37525 T27 arg27, 37526 T28 arg28, 37527 T29 arg29, 37528 T30 arg30, 37529 T31 arg31, 37530 T32 arg32, 37531 T33 arg33, 37532 T34 arg34, 37533 T35 arg35, 37534 T36 arg36, 37535 T37 arg37, 37536 T38 arg38, 37537 T39 arg39, 37538 T40 arg40, 37539 T41 arg41, 37540 T42 arg42, 37541 T43 arg43, 37542 T44 arg44, 37543 T45 arg45, 37544 T46 arg46, 37545 T47 arg47, 37546 T48 arg48, 37547 T49 arg49, 37548 T50 arg50, 37549 T51 arg51, 37550 T52 arg52, 37551 T53 arg53, 37552 T54 arg54, 37553 T55 arg55, 37554 T56 arg56, 37555 T57 arg57, 37556 T58 arg58, 37557 T59 arg59, 37558 T60 arg60, 37559 T61 arg61, 37560 T62 arg62, 37561 T63 arg63, 37562 T64 arg64, 37563 T65 arg65, 37564 T66 arg66, 37565 T67 arg67, 37566 T68 arg68, 37567 T69 arg69, 37568 T70 arg70, 37569 T71 arg71, 37570 T72 arg72) 37571 { 37572 return functor_( 37573 enqueueArgs, 37574 arg0, 37575 arg1, 37576 arg2, 37577 arg3, 37578 arg4, 37579 arg5, 37580 arg6, 37581 arg7, 37582 arg8, 37583 arg9, 37584 arg10, 37585 arg11, 37586 arg12, 37587 arg13, 37588 arg14, 37589 arg15, 37590 arg16, 37591 arg17, 37592 arg18, 37593 arg19, 37594 arg20, 37595 arg21, 37596 arg22, 37597 arg23, 37598 arg24, 37599 arg25, 37600 arg26, 37601 arg27, 37602 arg28, 37603 arg29, 37604 arg30, 37605 arg31, 37606 arg32, 37607 arg33, 37608 arg34, 37609 arg35, 37610 arg36, 37611 arg37, 37612 arg38, 37613 arg39, 37614 arg40, 37615 arg41, 37616 arg42, 37617 arg43, 37618 arg44, 37619 arg45, 37620 arg46, 37621 arg47, 37622 arg48, 37623 arg49, 37624 arg50, 37625 arg51, 37626 arg52, 37627 arg53, 37628 arg54, 37629 arg55, 37630 arg56, 37631 arg57, 37632 arg58, 37633 arg59, 37634 arg60, 37635 arg61, 37636 arg62, 37637 arg63, 37638 arg64, 37639 arg65, 37640 arg66, 37641 arg67, 37642 arg68, 37643 arg69, 37644 arg70, 37645 arg71, 37646 arg72); 37647 } 37648 37649 operator type_ () 37650 { 37651 return type_(*this); 37652 } 37653 37654 }; 37655 37656 template< 37657 typename T0, 37658 typename T1, 37659 typename T2, 37660 typename T3, 37661 typename T4, 37662 typename T5, 37663 typename T6, 37664 typename T7, 37665 typename T8, 37666 typename T9, 37667 typename T10, 37668 typename T11, 37669 typename T12, 37670 typename T13, 37671 typename T14, 37672 typename T15, 37673 typename T16, 37674 typename T17, 37675 typename T18, 37676 typename T19, 37677 typename T20, 37678 typename T21, 37679 typename T22, 37680 typename T23, 37681 typename T24, 37682 typename T25, 37683 typename T26, 37684 typename T27, 37685 typename T28, 37686 typename T29, 37687 typename T30, 37688 typename T31, 37689 typename T32, 37690 typename T33, 37691 typename T34, 37692 typename T35, 37693 typename T36, 37694 typename T37, 37695 typename T38, 37696 typename T39, 37697 typename T40, 37698 typename T41, 37699 typename T42, 37700 typename T43, 37701 typename T44, 37702 typename T45, 37703 typename T46, 37704 typename T47, 37705 typename T48, 37706 typename T49, 37707 typename T50, 37708 typename T51, 37709 typename T52, 37710 typename T53, 37711 typename T54, 37712 typename T55, 37713 typename T56, 37714 typename T57, 37715 typename T58, 37716 typename T59, 37717 typename T60, 37718 typename T61, 37719 typename T62, 37720 typename T63, 37721 typename T64, 37722 typename T65, 37723 typename T66, 37724 typename T67, 37725 typename T68, 37726 typename T69, 37727 typename T70, 37728 typename T71, 37729 typename T72, 37730 typename T73> 37731 struct functionImplementation_< 37732 T0, 37733 T1, 37734 T2, 37735 T3, 37736 T4, 37737 T5, 37738 T6, 37739 T7, 37740 T8, 37741 T9, 37742 T10, 37743 T11, 37744 T12, 37745 T13, 37746 T14, 37747 T15, 37748 T16, 37749 T17, 37750 T18, 37751 T19, 37752 T20, 37753 T21, 37754 T22, 37755 T23, 37756 T24, 37757 T25, 37758 T26, 37759 T27, 37760 T28, 37761 T29, 37762 T30, 37763 T31, 37764 T32, 37765 T33, 37766 T34, 37767 T35, 37768 T36, 37769 T37, 37770 T38, 37771 T39, 37772 T40, 37773 T41, 37774 T42, 37775 T43, 37776 T44, 37777 T45, 37778 T46, 37779 T47, 37780 T48, 37781 T49, 37782 T50, 37783 T51, 37784 T52, 37785 T53, 37786 T54, 37787 T55, 37788 T56, 37789 T57, 37790 T58, 37791 T59, 37792 T60, 37793 T61, 37794 T62, 37795 T63, 37796 T64, 37797 T65, 37798 T66, 37799 T67, 37800 T68, 37801 T69, 37802 T70, 37803 T71, 37804 T72, 37805 T73, 37806 NullType, 37807 NullType, 37808 NullType, 37809 NullType, 37810 NullType, 37811 NullType, 37812 NullType, 37813 NullType, 37814 NullType, 37815 NullType, 37816 NullType, 37817 NullType, 37818 NullType, 37819 NullType, 37820 NullType, 37821 NullType, 37822 NullType, 37823 NullType, 37824 NullType, 37825 NullType, 37826 NullType, 37827 NullType, 37828 NullType, 37829 NullType, 37830 NullType, 37831 NullType, 37832 NullType, 37833 NullType, 37834 NullType, 37835 NullType, 37836 NullType, 37837 NullType, 37838 NullType, 37839 NullType, 37840 NullType, 37841 NullType, 37842 NullType, 37843 NullType, 37844 NullType, 37845 NullType, 37846 NullType, 37847 NullType, 37848 NullType, 37849 NullType, 37850 NullType, 37851 NullType, 37852 NullType, 37853 NullType, 37854 NullType, 37855 NullType, 37856 NullType, 37857 NullType, 37858 NullType, 37859 NullType> 37860 { 37861 typedef detail::KernelFunctorGlobal< 37862 T0, 37863 T1, 37864 T2, 37865 T3, 37866 T4, 37867 T5, 37868 T6, 37869 T7, 37870 T8, 37871 T9, 37872 T10, 37873 T11, 37874 T12, 37875 T13, 37876 T14, 37877 T15, 37878 T16, 37879 T17, 37880 T18, 37881 T19, 37882 T20, 37883 T21, 37884 T22, 37885 T23, 37886 T24, 37887 T25, 37888 T26, 37889 T27, 37890 T28, 37891 T29, 37892 T30, 37893 T31, 37894 T32, 37895 T33, 37896 T34, 37897 T35, 37898 T36, 37899 T37, 37900 T38, 37901 T39, 37902 T40, 37903 T41, 37904 T42, 37905 T43, 37906 T44, 37907 T45, 37908 T46, 37909 T47, 37910 T48, 37911 T49, 37912 T50, 37913 T51, 37914 T52, 37915 T53, 37916 T54, 37917 T55, 37918 T56, 37919 T57, 37920 T58, 37921 T59, 37922 T60, 37923 T61, 37924 T62, 37925 T63, 37926 T64, 37927 T65, 37928 T66, 37929 T67, 37930 T68, 37931 T69, 37932 T70, 37933 T71, 37934 T72, 37935 T73, 37936 NullType, 37937 NullType, 37938 NullType, 37939 NullType, 37940 NullType, 37941 NullType, 37942 NullType, 37943 NullType, 37944 NullType, 37945 NullType, 37946 NullType, 37947 NullType, 37948 NullType, 37949 NullType, 37950 NullType, 37951 NullType, 37952 NullType, 37953 NullType, 37954 NullType, 37955 NullType, 37956 NullType, 37957 NullType, 37958 NullType, 37959 NullType, 37960 NullType, 37961 NullType, 37962 NullType, 37963 NullType, 37964 NullType, 37965 NullType, 37966 NullType, 37967 NullType, 37968 NullType, 37969 NullType, 37970 NullType, 37971 NullType, 37972 NullType, 37973 NullType, 37974 NullType, 37975 NullType, 37976 NullType, 37977 NullType, 37978 NullType, 37979 NullType, 37980 NullType, 37981 NullType, 37982 NullType, 37983 NullType, 37984 NullType, 37985 NullType, 37986 NullType, 37987 NullType, 37988 NullType, 37989 NullType> FunctorType; 37990 37991 FunctorType functor_; 37992 37993 functionImplementation_(const FunctorType &functor) : 37994 functor_(functor) 37995 { 37996 } 37997 37998 typedef std::tr1::function<Event ( 37999 const EnqueueArgs&, 38000 T0, 38001 T1, 38002 T2, 38003 T3, 38004 T4, 38005 T5, 38006 T6, 38007 T7, 38008 T8, 38009 T9, 38010 T10, 38011 T11, 38012 T12, 38013 T13, 38014 T14, 38015 T15, 38016 T16, 38017 T17, 38018 T18, 38019 T19, 38020 T20, 38021 T21, 38022 T22, 38023 T23, 38024 T24, 38025 T25, 38026 T26, 38027 T27, 38028 T28, 38029 T29, 38030 T30, 38031 T31, 38032 T32, 38033 T33, 38034 T34, 38035 T35, 38036 T36, 38037 T37, 38038 T38, 38039 T39, 38040 T40, 38041 T41, 38042 T42, 38043 T43, 38044 T44, 38045 T45, 38046 T46, 38047 T47, 38048 T48, 38049 T49, 38050 T50, 38051 T51, 38052 T52, 38053 T53, 38054 T54, 38055 T55, 38056 T56, 38057 T57, 38058 T58, 38059 T59, 38060 T60, 38061 T61, 38062 T62, 38063 T63, 38064 T64, 38065 T65, 38066 T66, 38067 T67, 38068 T68, 38069 T69, 38070 T70, 38071 T71, 38072 T72, 38073 T73)> type_; 38074 38075 Event operator()(const EnqueueArgs& enqueueArgs, 38076 T0 arg0, 38077 T1 arg1, 38078 T2 arg2, 38079 T3 arg3, 38080 T4 arg4, 38081 T5 arg5, 38082 T6 arg6, 38083 T7 arg7, 38084 T8 arg8, 38085 T9 arg9, 38086 T10 arg10, 38087 T11 arg11, 38088 T12 arg12, 38089 T13 arg13, 38090 T14 arg14, 38091 T15 arg15, 38092 T16 arg16, 38093 T17 arg17, 38094 T18 arg18, 38095 T19 arg19, 38096 T20 arg20, 38097 T21 arg21, 38098 T22 arg22, 38099 T23 arg23, 38100 T24 arg24, 38101 T25 arg25, 38102 T26 arg26, 38103 T27 arg27, 38104 T28 arg28, 38105 T29 arg29, 38106 T30 arg30, 38107 T31 arg31, 38108 T32 arg32, 38109 T33 arg33, 38110 T34 arg34, 38111 T35 arg35, 38112 T36 arg36, 38113 T37 arg37, 38114 T38 arg38, 38115 T39 arg39, 38116 T40 arg40, 38117 T41 arg41, 38118 T42 arg42, 38119 T43 arg43, 38120 T44 arg44, 38121 T45 arg45, 38122 T46 arg46, 38123 T47 arg47, 38124 T48 arg48, 38125 T49 arg49, 38126 T50 arg50, 38127 T51 arg51, 38128 T52 arg52, 38129 T53 arg53, 38130 T54 arg54, 38131 T55 arg55, 38132 T56 arg56, 38133 T57 arg57, 38134 T58 arg58, 38135 T59 arg59, 38136 T60 arg60, 38137 T61 arg61, 38138 T62 arg62, 38139 T63 arg63, 38140 T64 arg64, 38141 T65 arg65, 38142 T66 arg66, 38143 T67 arg67, 38144 T68 arg68, 38145 T69 arg69, 38146 T70 arg70, 38147 T71 arg71, 38148 T72 arg72, 38149 T73 arg73) 38150 { 38151 return functor_( 38152 enqueueArgs, 38153 arg0, 38154 arg1, 38155 arg2, 38156 arg3, 38157 arg4, 38158 arg5, 38159 arg6, 38160 arg7, 38161 arg8, 38162 arg9, 38163 arg10, 38164 arg11, 38165 arg12, 38166 arg13, 38167 arg14, 38168 arg15, 38169 arg16, 38170 arg17, 38171 arg18, 38172 arg19, 38173 arg20, 38174 arg21, 38175 arg22, 38176 arg23, 38177 arg24, 38178 arg25, 38179 arg26, 38180 arg27, 38181 arg28, 38182 arg29, 38183 arg30, 38184 arg31, 38185 arg32, 38186 arg33, 38187 arg34, 38188 arg35, 38189 arg36, 38190 arg37, 38191 arg38, 38192 arg39, 38193 arg40, 38194 arg41, 38195 arg42, 38196 arg43, 38197 arg44, 38198 arg45, 38199 arg46, 38200 arg47, 38201 arg48, 38202 arg49, 38203 arg50, 38204 arg51, 38205 arg52, 38206 arg53, 38207 arg54, 38208 arg55, 38209 arg56, 38210 arg57, 38211 arg58, 38212 arg59, 38213 arg60, 38214 arg61, 38215 arg62, 38216 arg63, 38217 arg64, 38218 arg65, 38219 arg66, 38220 arg67, 38221 arg68, 38222 arg69, 38223 arg70, 38224 arg71, 38225 arg72, 38226 arg73); 38227 } 38228 38229 operator type_ () 38230 { 38231 return type_(*this); 38232 } 38233 38234 }; 38235 38236 template< 38237 typename T0, 38238 typename T1, 38239 typename T2, 38240 typename T3, 38241 typename T4, 38242 typename T5, 38243 typename T6, 38244 typename T7, 38245 typename T8, 38246 typename T9, 38247 typename T10, 38248 typename T11, 38249 typename T12, 38250 typename T13, 38251 typename T14, 38252 typename T15, 38253 typename T16, 38254 typename T17, 38255 typename T18, 38256 typename T19, 38257 typename T20, 38258 typename T21, 38259 typename T22, 38260 typename T23, 38261 typename T24, 38262 typename T25, 38263 typename T26, 38264 typename T27, 38265 typename T28, 38266 typename T29, 38267 typename T30, 38268 typename T31, 38269 typename T32, 38270 typename T33, 38271 typename T34, 38272 typename T35, 38273 typename T36, 38274 typename T37, 38275 typename T38, 38276 typename T39, 38277 typename T40, 38278 typename T41, 38279 typename T42, 38280 typename T43, 38281 typename T44, 38282 typename T45, 38283 typename T46, 38284 typename T47, 38285 typename T48, 38286 typename T49, 38287 typename T50, 38288 typename T51, 38289 typename T52, 38290 typename T53, 38291 typename T54, 38292 typename T55, 38293 typename T56, 38294 typename T57, 38295 typename T58, 38296 typename T59, 38297 typename T60, 38298 typename T61, 38299 typename T62, 38300 typename T63, 38301 typename T64, 38302 typename T65, 38303 typename T66, 38304 typename T67, 38305 typename T68, 38306 typename T69, 38307 typename T70, 38308 typename T71, 38309 typename T72, 38310 typename T73, 38311 typename T74> 38312 struct functionImplementation_< 38313 T0, 38314 T1, 38315 T2, 38316 T3, 38317 T4, 38318 T5, 38319 T6, 38320 T7, 38321 T8, 38322 T9, 38323 T10, 38324 T11, 38325 T12, 38326 T13, 38327 T14, 38328 T15, 38329 T16, 38330 T17, 38331 T18, 38332 T19, 38333 T20, 38334 T21, 38335 T22, 38336 T23, 38337 T24, 38338 T25, 38339 T26, 38340 T27, 38341 T28, 38342 T29, 38343 T30, 38344 T31, 38345 T32, 38346 T33, 38347 T34, 38348 T35, 38349 T36, 38350 T37, 38351 T38, 38352 T39, 38353 T40, 38354 T41, 38355 T42, 38356 T43, 38357 T44, 38358 T45, 38359 T46, 38360 T47, 38361 T48, 38362 T49, 38363 T50, 38364 T51, 38365 T52, 38366 T53, 38367 T54, 38368 T55, 38369 T56, 38370 T57, 38371 T58, 38372 T59, 38373 T60, 38374 T61, 38375 T62, 38376 T63, 38377 T64, 38378 T65, 38379 T66, 38380 T67, 38381 T68, 38382 T69, 38383 T70, 38384 T71, 38385 T72, 38386 T73, 38387 T74, 38388 NullType, 38389 NullType, 38390 NullType, 38391 NullType, 38392 NullType, 38393 NullType, 38394 NullType, 38395 NullType, 38396 NullType, 38397 NullType, 38398 NullType, 38399 NullType, 38400 NullType, 38401 NullType, 38402 NullType, 38403 NullType, 38404 NullType, 38405 NullType, 38406 NullType, 38407 NullType, 38408 NullType, 38409 NullType, 38410 NullType, 38411 NullType, 38412 NullType, 38413 NullType, 38414 NullType, 38415 NullType, 38416 NullType, 38417 NullType, 38418 NullType, 38419 NullType, 38420 NullType, 38421 NullType, 38422 NullType, 38423 NullType, 38424 NullType, 38425 NullType, 38426 NullType, 38427 NullType, 38428 NullType, 38429 NullType, 38430 NullType, 38431 NullType, 38432 NullType, 38433 NullType, 38434 NullType, 38435 NullType, 38436 NullType, 38437 NullType, 38438 NullType, 38439 NullType, 38440 NullType> 38441 { 38442 typedef detail::KernelFunctorGlobal< 38443 T0, 38444 T1, 38445 T2, 38446 T3, 38447 T4, 38448 T5, 38449 T6, 38450 T7, 38451 T8, 38452 T9, 38453 T10, 38454 T11, 38455 T12, 38456 T13, 38457 T14, 38458 T15, 38459 T16, 38460 T17, 38461 T18, 38462 T19, 38463 T20, 38464 T21, 38465 T22, 38466 T23, 38467 T24, 38468 T25, 38469 T26, 38470 T27, 38471 T28, 38472 T29, 38473 T30, 38474 T31, 38475 T32, 38476 T33, 38477 T34, 38478 T35, 38479 T36, 38480 T37, 38481 T38, 38482 T39, 38483 T40, 38484 T41, 38485 T42, 38486 T43, 38487 T44, 38488 T45, 38489 T46, 38490 T47, 38491 T48, 38492 T49, 38493 T50, 38494 T51, 38495 T52, 38496 T53, 38497 T54, 38498 T55, 38499 T56, 38500 T57, 38501 T58, 38502 T59, 38503 T60, 38504 T61, 38505 T62, 38506 T63, 38507 T64, 38508 T65, 38509 T66, 38510 T67, 38511 T68, 38512 T69, 38513 T70, 38514 T71, 38515 T72, 38516 T73, 38517 T74, 38518 NullType, 38519 NullType, 38520 NullType, 38521 NullType, 38522 NullType, 38523 NullType, 38524 NullType, 38525 NullType, 38526 NullType, 38527 NullType, 38528 NullType, 38529 NullType, 38530 NullType, 38531 NullType, 38532 NullType, 38533 NullType, 38534 NullType, 38535 NullType, 38536 NullType, 38537 NullType, 38538 NullType, 38539 NullType, 38540 NullType, 38541 NullType, 38542 NullType, 38543 NullType, 38544 NullType, 38545 NullType, 38546 NullType, 38547 NullType, 38548 NullType, 38549 NullType, 38550 NullType, 38551 NullType, 38552 NullType, 38553 NullType, 38554 NullType, 38555 NullType, 38556 NullType, 38557 NullType, 38558 NullType, 38559 NullType, 38560 NullType, 38561 NullType, 38562 NullType, 38563 NullType, 38564 NullType, 38565 NullType, 38566 NullType, 38567 NullType, 38568 NullType, 38569 NullType, 38570 NullType> FunctorType; 38571 38572 FunctorType functor_; 38573 38574 functionImplementation_(const FunctorType &functor) : 38575 functor_(functor) 38576 { 38577 } 38578 38579 typedef std::tr1::function<Event ( 38580 const EnqueueArgs&, 38581 T0, 38582 T1, 38583 T2, 38584 T3, 38585 T4, 38586 T5, 38587 T6, 38588 T7, 38589 T8, 38590 T9, 38591 T10, 38592 T11, 38593 T12, 38594 T13, 38595 T14, 38596 T15, 38597 T16, 38598 T17, 38599 T18, 38600 T19, 38601 T20, 38602 T21, 38603 T22, 38604 T23, 38605 T24, 38606 T25, 38607 T26, 38608 T27, 38609 T28, 38610 T29, 38611 T30, 38612 T31, 38613 T32, 38614 T33, 38615 T34, 38616 T35, 38617 T36, 38618 T37, 38619 T38, 38620 T39, 38621 T40, 38622 T41, 38623 T42, 38624 T43, 38625 T44, 38626 T45, 38627 T46, 38628 T47, 38629 T48, 38630 T49, 38631 T50, 38632 T51, 38633 T52, 38634 T53, 38635 T54, 38636 T55, 38637 T56, 38638 T57, 38639 T58, 38640 T59, 38641 T60, 38642 T61, 38643 T62, 38644 T63, 38645 T64, 38646 T65, 38647 T66, 38648 T67, 38649 T68, 38650 T69, 38651 T70, 38652 T71, 38653 T72, 38654 T73, 38655 T74)> type_; 38656 38657 Event operator()(const EnqueueArgs& enqueueArgs, 38658 T0 arg0, 38659 T1 arg1, 38660 T2 arg2, 38661 T3 arg3, 38662 T4 arg4, 38663 T5 arg5, 38664 T6 arg6, 38665 T7 arg7, 38666 T8 arg8, 38667 T9 arg9, 38668 T10 arg10, 38669 T11 arg11, 38670 T12 arg12, 38671 T13 arg13, 38672 T14 arg14, 38673 T15 arg15, 38674 T16 arg16, 38675 T17 arg17, 38676 T18 arg18, 38677 T19 arg19, 38678 T20 arg20, 38679 T21 arg21, 38680 T22 arg22, 38681 T23 arg23, 38682 T24 arg24, 38683 T25 arg25, 38684 T26 arg26, 38685 T27 arg27, 38686 T28 arg28, 38687 T29 arg29, 38688 T30 arg30, 38689 T31 arg31, 38690 T32 arg32, 38691 T33 arg33, 38692 T34 arg34, 38693 T35 arg35, 38694 T36 arg36, 38695 T37 arg37, 38696 T38 arg38, 38697 T39 arg39, 38698 T40 arg40, 38699 T41 arg41, 38700 T42 arg42, 38701 T43 arg43, 38702 T44 arg44, 38703 T45 arg45, 38704 T46 arg46, 38705 T47 arg47, 38706 T48 arg48, 38707 T49 arg49, 38708 T50 arg50, 38709 T51 arg51, 38710 T52 arg52, 38711 T53 arg53, 38712 T54 arg54, 38713 T55 arg55, 38714 T56 arg56, 38715 T57 arg57, 38716 T58 arg58, 38717 T59 arg59, 38718 T60 arg60, 38719 T61 arg61, 38720 T62 arg62, 38721 T63 arg63, 38722 T64 arg64, 38723 T65 arg65, 38724 T66 arg66, 38725 T67 arg67, 38726 T68 arg68, 38727 T69 arg69, 38728 T70 arg70, 38729 T71 arg71, 38730 T72 arg72, 38731 T73 arg73, 38732 T74 arg74) 38733 { 38734 return functor_( 38735 enqueueArgs, 38736 arg0, 38737 arg1, 38738 arg2, 38739 arg3, 38740 arg4, 38741 arg5, 38742 arg6, 38743 arg7, 38744 arg8, 38745 arg9, 38746 arg10, 38747 arg11, 38748 arg12, 38749 arg13, 38750 arg14, 38751 arg15, 38752 arg16, 38753 arg17, 38754 arg18, 38755 arg19, 38756 arg20, 38757 arg21, 38758 arg22, 38759 arg23, 38760 arg24, 38761 arg25, 38762 arg26, 38763 arg27, 38764 arg28, 38765 arg29, 38766 arg30, 38767 arg31, 38768 arg32, 38769 arg33, 38770 arg34, 38771 arg35, 38772 arg36, 38773 arg37, 38774 arg38, 38775 arg39, 38776 arg40, 38777 arg41, 38778 arg42, 38779 arg43, 38780 arg44, 38781 arg45, 38782 arg46, 38783 arg47, 38784 arg48, 38785 arg49, 38786 arg50, 38787 arg51, 38788 arg52, 38789 arg53, 38790 arg54, 38791 arg55, 38792 arg56, 38793 arg57, 38794 arg58, 38795 arg59, 38796 arg60, 38797 arg61, 38798 arg62, 38799 arg63, 38800 arg64, 38801 arg65, 38802 arg66, 38803 arg67, 38804 arg68, 38805 arg69, 38806 arg70, 38807 arg71, 38808 arg72, 38809 arg73, 38810 arg74); 38811 } 38812 38813 operator type_ () 38814 { 38815 return type_(*this); 38816 } 38817 38818 }; 38819 38820 template< 38821 typename T0, 38822 typename T1, 38823 typename T2, 38824 typename T3, 38825 typename T4, 38826 typename T5, 38827 typename T6, 38828 typename T7, 38829 typename T8, 38830 typename T9, 38831 typename T10, 38832 typename T11, 38833 typename T12, 38834 typename T13, 38835 typename T14, 38836 typename T15, 38837 typename T16, 38838 typename T17, 38839 typename T18, 38840 typename T19, 38841 typename T20, 38842 typename T21, 38843 typename T22, 38844 typename T23, 38845 typename T24, 38846 typename T25, 38847 typename T26, 38848 typename T27, 38849 typename T28, 38850 typename T29, 38851 typename T30, 38852 typename T31, 38853 typename T32, 38854 typename T33, 38855 typename T34, 38856 typename T35, 38857 typename T36, 38858 typename T37, 38859 typename T38, 38860 typename T39, 38861 typename T40, 38862 typename T41, 38863 typename T42, 38864 typename T43, 38865 typename T44, 38866 typename T45, 38867 typename T46, 38868 typename T47, 38869 typename T48, 38870 typename T49, 38871 typename T50, 38872 typename T51, 38873 typename T52, 38874 typename T53, 38875 typename T54, 38876 typename T55, 38877 typename T56, 38878 typename T57, 38879 typename T58, 38880 typename T59, 38881 typename T60, 38882 typename T61, 38883 typename T62, 38884 typename T63, 38885 typename T64, 38886 typename T65, 38887 typename T66, 38888 typename T67, 38889 typename T68, 38890 typename T69, 38891 typename T70, 38892 typename T71, 38893 typename T72, 38894 typename T73, 38895 typename T74, 38896 typename T75> 38897 struct functionImplementation_< 38898 T0, 38899 T1, 38900 T2, 38901 T3, 38902 T4, 38903 T5, 38904 T6, 38905 T7, 38906 T8, 38907 T9, 38908 T10, 38909 T11, 38910 T12, 38911 T13, 38912 T14, 38913 T15, 38914 T16, 38915 T17, 38916 T18, 38917 T19, 38918 T20, 38919 T21, 38920 T22, 38921 T23, 38922 T24, 38923 T25, 38924 T26, 38925 T27, 38926 T28, 38927 T29, 38928 T30, 38929 T31, 38930 T32, 38931 T33, 38932 T34, 38933 T35, 38934 T36, 38935 T37, 38936 T38, 38937 T39, 38938 T40, 38939 T41, 38940 T42, 38941 T43, 38942 T44, 38943 T45, 38944 T46, 38945 T47, 38946 T48, 38947 T49, 38948 T50, 38949 T51, 38950 T52, 38951 T53, 38952 T54, 38953 T55, 38954 T56, 38955 T57, 38956 T58, 38957 T59, 38958 T60, 38959 T61, 38960 T62, 38961 T63, 38962 T64, 38963 T65, 38964 T66, 38965 T67, 38966 T68, 38967 T69, 38968 T70, 38969 T71, 38970 T72, 38971 T73, 38972 T74, 38973 T75, 38974 NullType, 38975 NullType, 38976 NullType, 38977 NullType, 38978 NullType, 38979 NullType, 38980 NullType, 38981 NullType, 38982 NullType, 38983 NullType, 38984 NullType, 38985 NullType, 38986 NullType, 38987 NullType, 38988 NullType, 38989 NullType, 38990 NullType, 38991 NullType, 38992 NullType, 38993 NullType, 38994 NullType, 38995 NullType, 38996 NullType, 38997 NullType, 38998 NullType, 38999 NullType, 39000 NullType, 39001 NullType, 39002 NullType, 39003 NullType, 39004 NullType, 39005 NullType, 39006 NullType, 39007 NullType, 39008 NullType, 39009 NullType, 39010 NullType, 39011 NullType, 39012 NullType, 39013 NullType, 39014 NullType, 39015 NullType, 39016 NullType, 39017 NullType, 39018 NullType, 39019 NullType, 39020 NullType, 39021 NullType, 39022 NullType, 39023 NullType, 39024 NullType, 39025 NullType> 39026 { 39027 typedef detail::KernelFunctorGlobal< 39028 T0, 39029 T1, 39030 T2, 39031 T3, 39032 T4, 39033 T5, 39034 T6, 39035 T7, 39036 T8, 39037 T9, 39038 T10, 39039 T11, 39040 T12, 39041 T13, 39042 T14, 39043 T15, 39044 T16, 39045 T17, 39046 T18, 39047 T19, 39048 T20, 39049 T21, 39050 T22, 39051 T23, 39052 T24, 39053 T25, 39054 T26, 39055 T27, 39056 T28, 39057 T29, 39058 T30, 39059 T31, 39060 T32, 39061 T33, 39062 T34, 39063 T35, 39064 T36, 39065 T37, 39066 T38, 39067 T39, 39068 T40, 39069 T41, 39070 T42, 39071 T43, 39072 T44, 39073 T45, 39074 T46, 39075 T47, 39076 T48, 39077 T49, 39078 T50, 39079 T51, 39080 T52, 39081 T53, 39082 T54, 39083 T55, 39084 T56, 39085 T57, 39086 T58, 39087 T59, 39088 T60, 39089 T61, 39090 T62, 39091 T63, 39092 T64, 39093 T65, 39094 T66, 39095 T67, 39096 T68, 39097 T69, 39098 T70, 39099 T71, 39100 T72, 39101 T73, 39102 T74, 39103 T75, 39104 NullType, 39105 NullType, 39106 NullType, 39107 NullType, 39108 NullType, 39109 NullType, 39110 NullType, 39111 NullType, 39112 NullType, 39113 NullType, 39114 NullType, 39115 NullType, 39116 NullType, 39117 NullType, 39118 NullType, 39119 NullType, 39120 NullType, 39121 NullType, 39122 NullType, 39123 NullType, 39124 NullType, 39125 NullType, 39126 NullType, 39127 NullType, 39128 NullType, 39129 NullType, 39130 NullType, 39131 NullType, 39132 NullType, 39133 NullType, 39134 NullType, 39135 NullType, 39136 NullType, 39137 NullType, 39138 NullType, 39139 NullType, 39140 NullType, 39141 NullType, 39142 NullType, 39143 NullType, 39144 NullType, 39145 NullType, 39146 NullType, 39147 NullType, 39148 NullType, 39149 NullType, 39150 NullType, 39151 NullType, 39152 NullType, 39153 NullType, 39154 NullType, 39155 NullType> FunctorType; 39156 39157 FunctorType functor_; 39158 39159 functionImplementation_(const FunctorType &functor) : 39160 functor_(functor) 39161 { 39162 } 39163 39164 typedef std::tr1::function<Event ( 39165 const EnqueueArgs&, 39166 T0, 39167 T1, 39168 T2, 39169 T3, 39170 T4, 39171 T5, 39172 T6, 39173 T7, 39174 T8, 39175 T9, 39176 T10, 39177 T11, 39178 T12, 39179 T13, 39180 T14, 39181 T15, 39182 T16, 39183 T17, 39184 T18, 39185 T19, 39186 T20, 39187 T21, 39188 T22, 39189 T23, 39190 T24, 39191 T25, 39192 T26, 39193 T27, 39194 T28, 39195 T29, 39196 T30, 39197 T31, 39198 T32, 39199 T33, 39200 T34, 39201 T35, 39202 T36, 39203 T37, 39204 T38, 39205 T39, 39206 T40, 39207 T41, 39208 T42, 39209 T43, 39210 T44, 39211 T45, 39212 T46, 39213 T47, 39214 T48, 39215 T49, 39216 T50, 39217 T51, 39218 T52, 39219 T53, 39220 T54, 39221 T55, 39222 T56, 39223 T57, 39224 T58, 39225 T59, 39226 T60, 39227 T61, 39228 T62, 39229 T63, 39230 T64, 39231 T65, 39232 T66, 39233 T67, 39234 T68, 39235 T69, 39236 T70, 39237 T71, 39238 T72, 39239 T73, 39240 T74, 39241 T75)> type_; 39242 39243 Event operator()(const EnqueueArgs& enqueueArgs, 39244 T0 arg0, 39245 T1 arg1, 39246 T2 arg2, 39247 T3 arg3, 39248 T4 arg4, 39249 T5 arg5, 39250 T6 arg6, 39251 T7 arg7, 39252 T8 arg8, 39253 T9 arg9, 39254 T10 arg10, 39255 T11 arg11, 39256 T12 arg12, 39257 T13 arg13, 39258 T14 arg14, 39259 T15 arg15, 39260 T16 arg16, 39261 T17 arg17, 39262 T18 arg18, 39263 T19 arg19, 39264 T20 arg20, 39265 T21 arg21, 39266 T22 arg22, 39267 T23 arg23, 39268 T24 arg24, 39269 T25 arg25, 39270 T26 arg26, 39271 T27 arg27, 39272 T28 arg28, 39273 T29 arg29, 39274 T30 arg30, 39275 T31 arg31, 39276 T32 arg32, 39277 T33 arg33, 39278 T34 arg34, 39279 T35 arg35, 39280 T36 arg36, 39281 T37 arg37, 39282 T38 arg38, 39283 T39 arg39, 39284 T40 arg40, 39285 T41 arg41, 39286 T42 arg42, 39287 T43 arg43, 39288 T44 arg44, 39289 T45 arg45, 39290 T46 arg46, 39291 T47 arg47, 39292 T48 arg48, 39293 T49 arg49, 39294 T50 arg50, 39295 T51 arg51, 39296 T52 arg52, 39297 T53 arg53, 39298 T54 arg54, 39299 T55 arg55, 39300 T56 arg56, 39301 T57 arg57, 39302 T58 arg58, 39303 T59 arg59, 39304 T60 arg60, 39305 T61 arg61, 39306 T62 arg62, 39307 T63 arg63, 39308 T64 arg64, 39309 T65 arg65, 39310 T66 arg66, 39311 T67 arg67, 39312 T68 arg68, 39313 T69 arg69, 39314 T70 arg70, 39315 T71 arg71, 39316 T72 arg72, 39317 T73 arg73, 39318 T74 arg74, 39319 T75 arg75) 39320 { 39321 return functor_( 39322 enqueueArgs, 39323 arg0, 39324 arg1, 39325 arg2, 39326 arg3, 39327 arg4, 39328 arg5, 39329 arg6, 39330 arg7, 39331 arg8, 39332 arg9, 39333 arg10, 39334 arg11, 39335 arg12, 39336 arg13, 39337 arg14, 39338 arg15, 39339 arg16, 39340 arg17, 39341 arg18, 39342 arg19, 39343 arg20, 39344 arg21, 39345 arg22, 39346 arg23, 39347 arg24, 39348 arg25, 39349 arg26, 39350 arg27, 39351 arg28, 39352 arg29, 39353 arg30, 39354 arg31, 39355 arg32, 39356 arg33, 39357 arg34, 39358 arg35, 39359 arg36, 39360 arg37, 39361 arg38, 39362 arg39, 39363 arg40, 39364 arg41, 39365 arg42, 39366 arg43, 39367 arg44, 39368 arg45, 39369 arg46, 39370 arg47, 39371 arg48, 39372 arg49, 39373 arg50, 39374 arg51, 39375 arg52, 39376 arg53, 39377 arg54, 39378 arg55, 39379 arg56, 39380 arg57, 39381 arg58, 39382 arg59, 39383 arg60, 39384 arg61, 39385 arg62, 39386 arg63, 39387 arg64, 39388 arg65, 39389 arg66, 39390 arg67, 39391 arg68, 39392 arg69, 39393 arg70, 39394 arg71, 39395 arg72, 39396 arg73, 39397 arg74, 39398 arg75); 39399 } 39400 39401 operator type_ () 39402 { 39403 return type_(*this); 39404 } 39405 39406 }; 39407 39408 template< 39409 typename T0, 39410 typename T1, 39411 typename T2, 39412 typename T3, 39413 typename T4, 39414 typename T5, 39415 typename T6, 39416 typename T7, 39417 typename T8, 39418 typename T9, 39419 typename T10, 39420 typename T11, 39421 typename T12, 39422 typename T13, 39423 typename T14, 39424 typename T15, 39425 typename T16, 39426 typename T17, 39427 typename T18, 39428 typename T19, 39429 typename T20, 39430 typename T21, 39431 typename T22, 39432 typename T23, 39433 typename T24, 39434 typename T25, 39435 typename T26, 39436 typename T27, 39437 typename T28, 39438 typename T29, 39439 typename T30, 39440 typename T31, 39441 typename T32, 39442 typename T33, 39443 typename T34, 39444 typename T35, 39445 typename T36, 39446 typename T37, 39447 typename T38, 39448 typename T39, 39449 typename T40, 39450 typename T41, 39451 typename T42, 39452 typename T43, 39453 typename T44, 39454 typename T45, 39455 typename T46, 39456 typename T47, 39457 typename T48, 39458 typename T49, 39459 typename T50, 39460 typename T51, 39461 typename T52, 39462 typename T53, 39463 typename T54, 39464 typename T55, 39465 typename T56, 39466 typename T57, 39467 typename T58, 39468 typename T59, 39469 typename T60, 39470 typename T61, 39471 typename T62, 39472 typename T63, 39473 typename T64, 39474 typename T65, 39475 typename T66, 39476 typename T67, 39477 typename T68, 39478 typename T69, 39479 typename T70, 39480 typename T71, 39481 typename T72, 39482 typename T73, 39483 typename T74, 39484 typename T75, 39485 typename T76> 39486 struct functionImplementation_< 39487 T0, 39488 T1, 39489 T2, 39490 T3, 39491 T4, 39492 T5, 39493 T6, 39494 T7, 39495 T8, 39496 T9, 39497 T10, 39498 T11, 39499 T12, 39500 T13, 39501 T14, 39502 T15, 39503 T16, 39504 T17, 39505 T18, 39506 T19, 39507 T20, 39508 T21, 39509 T22, 39510 T23, 39511 T24, 39512 T25, 39513 T26, 39514 T27, 39515 T28, 39516 T29, 39517 T30, 39518 T31, 39519 T32, 39520 T33, 39521 T34, 39522 T35, 39523 T36, 39524 T37, 39525 T38, 39526 T39, 39527 T40, 39528 T41, 39529 T42, 39530 T43, 39531 T44, 39532 T45, 39533 T46, 39534 T47, 39535 T48, 39536 T49, 39537 T50, 39538 T51, 39539 T52, 39540 T53, 39541 T54, 39542 T55, 39543 T56, 39544 T57, 39545 T58, 39546 T59, 39547 T60, 39548 T61, 39549 T62, 39550 T63, 39551 T64, 39552 T65, 39553 T66, 39554 T67, 39555 T68, 39556 T69, 39557 T70, 39558 T71, 39559 T72, 39560 T73, 39561 T74, 39562 T75, 39563 T76, 39564 NullType, 39565 NullType, 39566 NullType, 39567 NullType, 39568 NullType, 39569 NullType, 39570 NullType, 39571 NullType, 39572 NullType, 39573 NullType, 39574 NullType, 39575 NullType, 39576 NullType, 39577 NullType, 39578 NullType, 39579 NullType, 39580 NullType, 39581 NullType, 39582 NullType, 39583 NullType, 39584 NullType, 39585 NullType, 39586 NullType, 39587 NullType, 39588 NullType, 39589 NullType, 39590 NullType, 39591 NullType, 39592 NullType, 39593 NullType, 39594 NullType, 39595 NullType, 39596 NullType, 39597 NullType, 39598 NullType, 39599 NullType, 39600 NullType, 39601 NullType, 39602 NullType, 39603 NullType, 39604 NullType, 39605 NullType, 39606 NullType, 39607 NullType, 39608 NullType, 39609 NullType, 39610 NullType, 39611 NullType, 39612 NullType, 39613 NullType, 39614 NullType> 39615 { 39616 typedef detail::KernelFunctorGlobal< 39617 T0, 39618 T1, 39619 T2, 39620 T3, 39621 T4, 39622 T5, 39623 T6, 39624 T7, 39625 T8, 39626 T9, 39627 T10, 39628 T11, 39629 T12, 39630 T13, 39631 T14, 39632 T15, 39633 T16, 39634 T17, 39635 T18, 39636 T19, 39637 T20, 39638 T21, 39639 T22, 39640 T23, 39641 T24, 39642 T25, 39643 T26, 39644 T27, 39645 T28, 39646 T29, 39647 T30, 39648 T31, 39649 T32, 39650 T33, 39651 T34, 39652 T35, 39653 T36, 39654 T37, 39655 T38, 39656 T39, 39657 T40, 39658 T41, 39659 T42, 39660 T43, 39661 T44, 39662 T45, 39663 T46, 39664 T47, 39665 T48, 39666 T49, 39667 T50, 39668 T51, 39669 T52, 39670 T53, 39671 T54, 39672 T55, 39673 T56, 39674 T57, 39675 T58, 39676 T59, 39677 T60, 39678 T61, 39679 T62, 39680 T63, 39681 T64, 39682 T65, 39683 T66, 39684 T67, 39685 T68, 39686 T69, 39687 T70, 39688 T71, 39689 T72, 39690 T73, 39691 T74, 39692 T75, 39693 T76, 39694 NullType, 39695 NullType, 39696 NullType, 39697 NullType, 39698 NullType, 39699 NullType, 39700 NullType, 39701 NullType, 39702 NullType, 39703 NullType, 39704 NullType, 39705 NullType, 39706 NullType, 39707 NullType, 39708 NullType, 39709 NullType, 39710 NullType, 39711 NullType, 39712 NullType, 39713 NullType, 39714 NullType, 39715 NullType, 39716 NullType, 39717 NullType, 39718 NullType, 39719 NullType, 39720 NullType, 39721 NullType, 39722 NullType, 39723 NullType, 39724 NullType, 39725 NullType, 39726 NullType, 39727 NullType, 39728 NullType, 39729 NullType, 39730 NullType, 39731 NullType, 39732 NullType, 39733 NullType, 39734 NullType, 39735 NullType, 39736 NullType, 39737 NullType, 39738 NullType, 39739 NullType, 39740 NullType, 39741 NullType, 39742 NullType, 39743 NullType, 39744 NullType> FunctorType; 39745 39746 FunctorType functor_; 39747 39748 functionImplementation_(const FunctorType &functor) : 39749 functor_(functor) 39750 { 39751 } 39752 39753 typedef std::tr1::function<Event ( 39754 const EnqueueArgs&, 39755 T0, 39756 T1, 39757 T2, 39758 T3, 39759 T4, 39760 T5, 39761 T6, 39762 T7, 39763 T8, 39764 T9, 39765 T10, 39766 T11, 39767 T12, 39768 T13, 39769 T14, 39770 T15, 39771 T16, 39772 T17, 39773 T18, 39774 T19, 39775 T20, 39776 T21, 39777 T22, 39778 T23, 39779 T24, 39780 T25, 39781 T26, 39782 T27, 39783 T28, 39784 T29, 39785 T30, 39786 T31, 39787 T32, 39788 T33, 39789 T34, 39790 T35, 39791 T36, 39792 T37, 39793 T38, 39794 T39, 39795 T40, 39796 T41, 39797 T42, 39798 T43, 39799 T44, 39800 T45, 39801 T46, 39802 T47, 39803 T48, 39804 T49, 39805 T50, 39806 T51, 39807 T52, 39808 T53, 39809 T54, 39810 T55, 39811 T56, 39812 T57, 39813 T58, 39814 T59, 39815 T60, 39816 T61, 39817 T62, 39818 T63, 39819 T64, 39820 T65, 39821 T66, 39822 T67, 39823 T68, 39824 T69, 39825 T70, 39826 T71, 39827 T72, 39828 T73, 39829 T74, 39830 T75, 39831 T76)> type_; 39832 39833 Event operator()(const EnqueueArgs& enqueueArgs, 39834 T0 arg0, 39835 T1 arg1, 39836 T2 arg2, 39837 T3 arg3, 39838 T4 arg4, 39839 T5 arg5, 39840 T6 arg6, 39841 T7 arg7, 39842 T8 arg8, 39843 T9 arg9, 39844 T10 arg10, 39845 T11 arg11, 39846 T12 arg12, 39847 T13 arg13, 39848 T14 arg14, 39849 T15 arg15, 39850 T16 arg16, 39851 T17 arg17, 39852 T18 arg18, 39853 T19 arg19, 39854 T20 arg20, 39855 T21 arg21, 39856 T22 arg22, 39857 T23 arg23, 39858 T24 arg24, 39859 T25 arg25, 39860 T26 arg26, 39861 T27 arg27, 39862 T28 arg28, 39863 T29 arg29, 39864 T30 arg30, 39865 T31 arg31, 39866 T32 arg32, 39867 T33 arg33, 39868 T34 arg34, 39869 T35 arg35, 39870 T36 arg36, 39871 T37 arg37, 39872 T38 arg38, 39873 T39 arg39, 39874 T40 arg40, 39875 T41 arg41, 39876 T42 arg42, 39877 T43 arg43, 39878 T44 arg44, 39879 T45 arg45, 39880 T46 arg46, 39881 T47 arg47, 39882 T48 arg48, 39883 T49 arg49, 39884 T50 arg50, 39885 T51 arg51, 39886 T52 arg52, 39887 T53 arg53, 39888 T54 arg54, 39889 T55 arg55, 39890 T56 arg56, 39891 T57 arg57, 39892 T58 arg58, 39893 T59 arg59, 39894 T60 arg60, 39895 T61 arg61, 39896 T62 arg62, 39897 T63 arg63, 39898 T64 arg64, 39899 T65 arg65, 39900 T66 arg66, 39901 T67 arg67, 39902 T68 arg68, 39903 T69 arg69, 39904 T70 arg70, 39905 T71 arg71, 39906 T72 arg72, 39907 T73 arg73, 39908 T74 arg74, 39909 T75 arg75, 39910 T76 arg76) 39911 { 39912 return functor_( 39913 enqueueArgs, 39914 arg0, 39915 arg1, 39916 arg2, 39917 arg3, 39918 arg4, 39919 arg5, 39920 arg6, 39921 arg7, 39922 arg8, 39923 arg9, 39924 arg10, 39925 arg11, 39926 arg12, 39927 arg13, 39928 arg14, 39929 arg15, 39930 arg16, 39931 arg17, 39932 arg18, 39933 arg19, 39934 arg20, 39935 arg21, 39936 arg22, 39937 arg23, 39938 arg24, 39939 arg25, 39940 arg26, 39941 arg27, 39942 arg28, 39943 arg29, 39944 arg30, 39945 arg31, 39946 arg32, 39947 arg33, 39948 arg34, 39949 arg35, 39950 arg36, 39951 arg37, 39952 arg38, 39953 arg39, 39954 arg40, 39955 arg41, 39956 arg42, 39957 arg43, 39958 arg44, 39959 arg45, 39960 arg46, 39961 arg47, 39962 arg48, 39963 arg49, 39964 arg50, 39965 arg51, 39966 arg52, 39967 arg53, 39968 arg54, 39969 arg55, 39970 arg56, 39971 arg57, 39972 arg58, 39973 arg59, 39974 arg60, 39975 arg61, 39976 arg62, 39977 arg63, 39978 arg64, 39979 arg65, 39980 arg66, 39981 arg67, 39982 arg68, 39983 arg69, 39984 arg70, 39985 arg71, 39986 arg72, 39987 arg73, 39988 arg74, 39989 arg75, 39990 arg76); 39991 } 39992 39993 operator type_ () 39994 { 39995 return type_(*this); 39996 } 39997 39998 }; 39999 40000 template< 40001 typename T0, 40002 typename T1, 40003 typename T2, 40004 typename T3, 40005 typename T4, 40006 typename T5, 40007 typename T6, 40008 typename T7, 40009 typename T8, 40010 typename T9, 40011 typename T10, 40012 typename T11, 40013 typename T12, 40014 typename T13, 40015 typename T14, 40016 typename T15, 40017 typename T16, 40018 typename T17, 40019 typename T18, 40020 typename T19, 40021 typename T20, 40022 typename T21, 40023 typename T22, 40024 typename T23, 40025 typename T24, 40026 typename T25, 40027 typename T26, 40028 typename T27, 40029 typename T28, 40030 typename T29, 40031 typename T30, 40032 typename T31, 40033 typename T32, 40034 typename T33, 40035 typename T34, 40036 typename T35, 40037 typename T36, 40038 typename T37, 40039 typename T38, 40040 typename T39, 40041 typename T40, 40042 typename T41, 40043 typename T42, 40044 typename T43, 40045 typename T44, 40046 typename T45, 40047 typename T46, 40048 typename T47, 40049 typename T48, 40050 typename T49, 40051 typename T50, 40052 typename T51, 40053 typename T52, 40054 typename T53, 40055 typename T54, 40056 typename T55, 40057 typename T56, 40058 typename T57, 40059 typename T58, 40060 typename T59, 40061 typename T60, 40062 typename T61, 40063 typename T62, 40064 typename T63, 40065 typename T64, 40066 typename T65, 40067 typename T66, 40068 typename T67, 40069 typename T68, 40070 typename T69, 40071 typename T70, 40072 typename T71, 40073 typename T72, 40074 typename T73, 40075 typename T74, 40076 typename T75, 40077 typename T76, 40078 typename T77> 40079 struct functionImplementation_< 40080 T0, 40081 T1, 40082 T2, 40083 T3, 40084 T4, 40085 T5, 40086 T6, 40087 T7, 40088 T8, 40089 T9, 40090 T10, 40091 T11, 40092 T12, 40093 T13, 40094 T14, 40095 T15, 40096 T16, 40097 T17, 40098 T18, 40099 T19, 40100 T20, 40101 T21, 40102 T22, 40103 T23, 40104 T24, 40105 T25, 40106 T26, 40107 T27, 40108 T28, 40109 T29, 40110 T30, 40111 T31, 40112 T32, 40113 T33, 40114 T34, 40115 T35, 40116 T36, 40117 T37, 40118 T38, 40119 T39, 40120 T40, 40121 T41, 40122 T42, 40123 T43, 40124 T44, 40125 T45, 40126 T46, 40127 T47, 40128 T48, 40129 T49, 40130 T50, 40131 T51, 40132 T52, 40133 T53, 40134 T54, 40135 T55, 40136 T56, 40137 T57, 40138 T58, 40139 T59, 40140 T60, 40141 T61, 40142 T62, 40143 T63, 40144 T64, 40145 T65, 40146 T66, 40147 T67, 40148 T68, 40149 T69, 40150 T70, 40151 T71, 40152 T72, 40153 T73, 40154 T74, 40155 T75, 40156 T76, 40157 T77, 40158 NullType, 40159 NullType, 40160 NullType, 40161 NullType, 40162 NullType, 40163 NullType, 40164 NullType, 40165 NullType, 40166 NullType, 40167 NullType, 40168 NullType, 40169 NullType, 40170 NullType, 40171 NullType, 40172 NullType, 40173 NullType, 40174 NullType, 40175 NullType, 40176 NullType, 40177 NullType, 40178 NullType, 40179 NullType, 40180 NullType, 40181 NullType, 40182 NullType, 40183 NullType, 40184 NullType, 40185 NullType, 40186 NullType, 40187 NullType, 40188 NullType, 40189 NullType, 40190 NullType, 40191 NullType, 40192 NullType, 40193 NullType, 40194 NullType, 40195 NullType, 40196 NullType, 40197 NullType, 40198 NullType, 40199 NullType, 40200 NullType, 40201 NullType, 40202 NullType, 40203 NullType, 40204 NullType, 40205 NullType, 40206 NullType, 40207 NullType> 40208 { 40209 typedef detail::KernelFunctorGlobal< 40210 T0, 40211 T1, 40212 T2, 40213 T3, 40214 T4, 40215 T5, 40216 T6, 40217 T7, 40218 T8, 40219 T9, 40220 T10, 40221 T11, 40222 T12, 40223 T13, 40224 T14, 40225 T15, 40226 T16, 40227 T17, 40228 T18, 40229 T19, 40230 T20, 40231 T21, 40232 T22, 40233 T23, 40234 T24, 40235 T25, 40236 T26, 40237 T27, 40238 T28, 40239 T29, 40240 T30, 40241 T31, 40242 T32, 40243 T33, 40244 T34, 40245 T35, 40246 T36, 40247 T37, 40248 T38, 40249 T39, 40250 T40, 40251 T41, 40252 T42, 40253 T43, 40254 T44, 40255 T45, 40256 T46, 40257 T47, 40258 T48, 40259 T49, 40260 T50, 40261 T51, 40262 T52, 40263 T53, 40264 T54, 40265 T55, 40266 T56, 40267 T57, 40268 T58, 40269 T59, 40270 T60, 40271 T61, 40272 T62, 40273 T63, 40274 T64, 40275 T65, 40276 T66, 40277 T67, 40278 T68, 40279 T69, 40280 T70, 40281 T71, 40282 T72, 40283 T73, 40284 T74, 40285 T75, 40286 T76, 40287 T77, 40288 NullType, 40289 NullType, 40290 NullType, 40291 NullType, 40292 NullType, 40293 NullType, 40294 NullType, 40295 NullType, 40296 NullType, 40297 NullType, 40298 NullType, 40299 NullType, 40300 NullType, 40301 NullType, 40302 NullType, 40303 NullType, 40304 NullType, 40305 NullType, 40306 NullType, 40307 NullType, 40308 NullType, 40309 NullType, 40310 NullType, 40311 NullType, 40312 NullType, 40313 NullType, 40314 NullType, 40315 NullType, 40316 NullType, 40317 NullType, 40318 NullType, 40319 NullType, 40320 NullType, 40321 NullType, 40322 NullType, 40323 NullType, 40324 NullType, 40325 NullType, 40326 NullType, 40327 NullType, 40328 NullType, 40329 NullType, 40330 NullType, 40331 NullType, 40332 NullType, 40333 NullType, 40334 NullType, 40335 NullType, 40336 NullType, 40337 NullType> FunctorType; 40338 40339 FunctorType functor_; 40340 40341 functionImplementation_(const FunctorType &functor) : 40342 functor_(functor) 40343 { 40344 } 40345 40346 typedef std::tr1::function<Event ( 40347 const EnqueueArgs&, 40348 T0, 40349 T1, 40350 T2, 40351 T3, 40352 T4, 40353 T5, 40354 T6, 40355 T7, 40356 T8, 40357 T9, 40358 T10, 40359 T11, 40360 T12, 40361 T13, 40362 T14, 40363 T15, 40364 T16, 40365 T17, 40366 T18, 40367 T19, 40368 T20, 40369 T21, 40370 T22, 40371 T23, 40372 T24, 40373 T25, 40374 T26, 40375 T27, 40376 T28, 40377 T29, 40378 T30, 40379 T31, 40380 T32, 40381 T33, 40382 T34, 40383 T35, 40384 T36, 40385 T37, 40386 T38, 40387 T39, 40388 T40, 40389 T41, 40390 T42, 40391 T43, 40392 T44, 40393 T45, 40394 T46, 40395 T47, 40396 T48, 40397 T49, 40398 T50, 40399 T51, 40400 T52, 40401 T53, 40402 T54, 40403 T55, 40404 T56, 40405 T57, 40406 T58, 40407 T59, 40408 T60, 40409 T61, 40410 T62, 40411 T63, 40412 T64, 40413 T65, 40414 T66, 40415 T67, 40416 T68, 40417 T69, 40418 T70, 40419 T71, 40420 T72, 40421 T73, 40422 T74, 40423 T75, 40424 T76, 40425 T77)> type_; 40426 40427 Event operator()(const EnqueueArgs& enqueueArgs, 40428 T0 arg0, 40429 T1 arg1, 40430 T2 arg2, 40431 T3 arg3, 40432 T4 arg4, 40433 T5 arg5, 40434 T6 arg6, 40435 T7 arg7, 40436 T8 arg8, 40437 T9 arg9, 40438 T10 arg10, 40439 T11 arg11, 40440 T12 arg12, 40441 T13 arg13, 40442 T14 arg14, 40443 T15 arg15, 40444 T16 arg16, 40445 T17 arg17, 40446 T18 arg18, 40447 T19 arg19, 40448 T20 arg20, 40449 T21 arg21, 40450 T22 arg22, 40451 T23 arg23, 40452 T24 arg24, 40453 T25 arg25, 40454 T26 arg26, 40455 T27 arg27, 40456 T28 arg28, 40457 T29 arg29, 40458 T30 arg30, 40459 T31 arg31, 40460 T32 arg32, 40461 T33 arg33, 40462 T34 arg34, 40463 T35 arg35, 40464 T36 arg36, 40465 T37 arg37, 40466 T38 arg38, 40467 T39 arg39, 40468 T40 arg40, 40469 T41 arg41, 40470 T42 arg42, 40471 T43 arg43, 40472 T44 arg44, 40473 T45 arg45, 40474 T46 arg46, 40475 T47 arg47, 40476 T48 arg48, 40477 T49 arg49, 40478 T50 arg50, 40479 T51 arg51, 40480 T52 arg52, 40481 T53 arg53, 40482 T54 arg54, 40483 T55 arg55, 40484 T56 arg56, 40485 T57 arg57, 40486 T58 arg58, 40487 T59 arg59, 40488 T60 arg60, 40489 T61 arg61, 40490 T62 arg62, 40491 T63 arg63, 40492 T64 arg64, 40493 T65 arg65, 40494 T66 arg66, 40495 T67 arg67, 40496 T68 arg68, 40497 T69 arg69, 40498 T70 arg70, 40499 T71 arg71, 40500 T72 arg72, 40501 T73 arg73, 40502 T74 arg74, 40503 T75 arg75, 40504 T76 arg76, 40505 T77 arg77) 40506 { 40507 return functor_( 40508 enqueueArgs, 40509 arg0, 40510 arg1, 40511 arg2, 40512 arg3, 40513 arg4, 40514 arg5, 40515 arg6, 40516 arg7, 40517 arg8, 40518 arg9, 40519 arg10, 40520 arg11, 40521 arg12, 40522 arg13, 40523 arg14, 40524 arg15, 40525 arg16, 40526 arg17, 40527 arg18, 40528 arg19, 40529 arg20, 40530 arg21, 40531 arg22, 40532 arg23, 40533 arg24, 40534 arg25, 40535 arg26, 40536 arg27, 40537 arg28, 40538 arg29, 40539 arg30, 40540 arg31, 40541 arg32, 40542 arg33, 40543 arg34, 40544 arg35, 40545 arg36, 40546 arg37, 40547 arg38, 40548 arg39, 40549 arg40, 40550 arg41, 40551 arg42, 40552 arg43, 40553 arg44, 40554 arg45, 40555 arg46, 40556 arg47, 40557 arg48, 40558 arg49, 40559 arg50, 40560 arg51, 40561 arg52, 40562 arg53, 40563 arg54, 40564 arg55, 40565 arg56, 40566 arg57, 40567 arg58, 40568 arg59, 40569 arg60, 40570 arg61, 40571 arg62, 40572 arg63, 40573 arg64, 40574 arg65, 40575 arg66, 40576 arg67, 40577 arg68, 40578 arg69, 40579 arg70, 40580 arg71, 40581 arg72, 40582 arg73, 40583 arg74, 40584 arg75, 40585 arg76, 40586 arg77); 40587 } 40588 40589 operator type_ () 40590 { 40591 return type_(*this); 40592 } 40593 40594 }; 40595 40596 template< 40597 typename T0, 40598 typename T1, 40599 typename T2, 40600 typename T3, 40601 typename T4, 40602 typename T5, 40603 typename T6, 40604 typename T7, 40605 typename T8, 40606 typename T9, 40607 typename T10, 40608 typename T11, 40609 typename T12, 40610 typename T13, 40611 typename T14, 40612 typename T15, 40613 typename T16, 40614 typename T17, 40615 typename T18, 40616 typename T19, 40617 typename T20, 40618 typename T21, 40619 typename T22, 40620 typename T23, 40621 typename T24, 40622 typename T25, 40623 typename T26, 40624 typename T27, 40625 typename T28, 40626 typename T29, 40627 typename T30, 40628 typename T31, 40629 typename T32, 40630 typename T33, 40631 typename T34, 40632 typename T35, 40633 typename T36, 40634 typename T37, 40635 typename T38, 40636 typename T39, 40637 typename T40, 40638 typename T41, 40639 typename T42, 40640 typename T43, 40641 typename T44, 40642 typename T45, 40643 typename T46, 40644 typename T47, 40645 typename T48, 40646 typename T49, 40647 typename T50, 40648 typename T51, 40649 typename T52, 40650 typename T53, 40651 typename T54, 40652 typename T55, 40653 typename T56, 40654 typename T57, 40655 typename T58, 40656 typename T59, 40657 typename T60, 40658 typename T61, 40659 typename T62, 40660 typename T63, 40661 typename T64, 40662 typename T65, 40663 typename T66, 40664 typename T67, 40665 typename T68, 40666 typename T69, 40667 typename T70, 40668 typename T71, 40669 typename T72, 40670 typename T73, 40671 typename T74, 40672 typename T75, 40673 typename T76, 40674 typename T77, 40675 typename T78> 40676 struct functionImplementation_< 40677 T0, 40678 T1, 40679 T2, 40680 T3, 40681 T4, 40682 T5, 40683 T6, 40684 T7, 40685 T8, 40686 T9, 40687 T10, 40688 T11, 40689 T12, 40690 T13, 40691 T14, 40692 T15, 40693 T16, 40694 T17, 40695 T18, 40696 T19, 40697 T20, 40698 T21, 40699 T22, 40700 T23, 40701 T24, 40702 T25, 40703 T26, 40704 T27, 40705 T28, 40706 T29, 40707 T30, 40708 T31, 40709 T32, 40710 T33, 40711 T34, 40712 T35, 40713 T36, 40714 T37, 40715 T38, 40716 T39, 40717 T40, 40718 T41, 40719 T42, 40720 T43, 40721 T44, 40722 T45, 40723 T46, 40724 T47, 40725 T48, 40726 T49, 40727 T50, 40728 T51, 40729 T52, 40730 T53, 40731 T54, 40732 T55, 40733 T56, 40734 T57, 40735 T58, 40736 T59, 40737 T60, 40738 T61, 40739 T62, 40740 T63, 40741 T64, 40742 T65, 40743 T66, 40744 T67, 40745 T68, 40746 T69, 40747 T70, 40748 T71, 40749 T72, 40750 T73, 40751 T74, 40752 T75, 40753 T76, 40754 T77, 40755 T78, 40756 NullType, 40757 NullType, 40758 NullType, 40759 NullType, 40760 NullType, 40761 NullType, 40762 NullType, 40763 NullType, 40764 NullType, 40765 NullType, 40766 NullType, 40767 NullType, 40768 NullType, 40769 NullType, 40770 NullType, 40771 NullType, 40772 NullType, 40773 NullType, 40774 NullType, 40775 NullType, 40776 NullType, 40777 NullType, 40778 NullType, 40779 NullType, 40780 NullType, 40781 NullType, 40782 NullType, 40783 NullType, 40784 NullType, 40785 NullType, 40786 NullType, 40787 NullType, 40788 NullType, 40789 NullType, 40790 NullType, 40791 NullType, 40792 NullType, 40793 NullType, 40794 NullType, 40795 NullType, 40796 NullType, 40797 NullType, 40798 NullType, 40799 NullType, 40800 NullType, 40801 NullType, 40802 NullType, 40803 NullType, 40804 NullType> 40805 { 40806 typedef detail::KernelFunctorGlobal< 40807 T0, 40808 T1, 40809 T2, 40810 T3, 40811 T4, 40812 T5, 40813 T6, 40814 T7, 40815 T8, 40816 T9, 40817 T10, 40818 T11, 40819 T12, 40820 T13, 40821 T14, 40822 T15, 40823 T16, 40824 T17, 40825 T18, 40826 T19, 40827 T20, 40828 T21, 40829 T22, 40830 T23, 40831 T24, 40832 T25, 40833 T26, 40834 T27, 40835 T28, 40836 T29, 40837 T30, 40838 T31, 40839 T32, 40840 T33, 40841 T34, 40842 T35, 40843 T36, 40844 T37, 40845 T38, 40846 T39, 40847 T40, 40848 T41, 40849 T42, 40850 T43, 40851 T44, 40852 T45, 40853 T46, 40854 T47, 40855 T48, 40856 T49, 40857 T50, 40858 T51, 40859 T52, 40860 T53, 40861 T54, 40862 T55, 40863 T56, 40864 T57, 40865 T58, 40866 T59, 40867 T60, 40868 T61, 40869 T62, 40870 T63, 40871 T64, 40872 T65, 40873 T66, 40874 T67, 40875 T68, 40876 T69, 40877 T70, 40878 T71, 40879 T72, 40880 T73, 40881 T74, 40882 T75, 40883 T76, 40884 T77, 40885 T78, 40886 NullType, 40887 NullType, 40888 NullType, 40889 NullType, 40890 NullType, 40891 NullType, 40892 NullType, 40893 NullType, 40894 NullType, 40895 NullType, 40896 NullType, 40897 NullType, 40898 NullType, 40899 NullType, 40900 NullType, 40901 NullType, 40902 NullType, 40903 NullType, 40904 NullType, 40905 NullType, 40906 NullType, 40907 NullType, 40908 NullType, 40909 NullType, 40910 NullType, 40911 NullType, 40912 NullType, 40913 NullType, 40914 NullType, 40915 NullType, 40916 NullType, 40917 NullType, 40918 NullType, 40919 NullType, 40920 NullType, 40921 NullType, 40922 NullType, 40923 NullType, 40924 NullType, 40925 NullType, 40926 NullType, 40927 NullType, 40928 NullType, 40929 NullType, 40930 NullType, 40931 NullType, 40932 NullType, 40933 NullType, 40934 NullType> FunctorType; 40935 40936 FunctorType functor_; 40937 40938 functionImplementation_(const FunctorType &functor) : 40939 functor_(functor) 40940 { 40941 } 40942 40943 typedef std::tr1::function<Event ( 40944 const EnqueueArgs&, 40945 T0, 40946 T1, 40947 T2, 40948 T3, 40949 T4, 40950 T5, 40951 T6, 40952 T7, 40953 T8, 40954 T9, 40955 T10, 40956 T11, 40957 T12, 40958 T13, 40959 T14, 40960 T15, 40961 T16, 40962 T17, 40963 T18, 40964 T19, 40965 T20, 40966 T21, 40967 T22, 40968 T23, 40969 T24, 40970 T25, 40971 T26, 40972 T27, 40973 T28, 40974 T29, 40975 T30, 40976 T31, 40977 T32, 40978 T33, 40979 T34, 40980 T35, 40981 T36, 40982 T37, 40983 T38, 40984 T39, 40985 T40, 40986 T41, 40987 T42, 40988 T43, 40989 T44, 40990 T45, 40991 T46, 40992 T47, 40993 T48, 40994 T49, 40995 T50, 40996 T51, 40997 T52, 40998 T53, 40999 T54, 41000 T55, 41001 T56, 41002 T57, 41003 T58, 41004 T59, 41005 T60, 41006 T61, 41007 T62, 41008 T63, 41009 T64, 41010 T65, 41011 T66, 41012 T67, 41013 T68, 41014 T69, 41015 T70, 41016 T71, 41017 T72, 41018 T73, 41019 T74, 41020 T75, 41021 T76, 41022 T77, 41023 T78)> type_; 41024 41025 Event operator()(const EnqueueArgs& enqueueArgs, 41026 T0 arg0, 41027 T1 arg1, 41028 T2 arg2, 41029 T3 arg3, 41030 T4 arg4, 41031 T5 arg5, 41032 T6 arg6, 41033 T7 arg7, 41034 T8 arg8, 41035 T9 arg9, 41036 T10 arg10, 41037 T11 arg11, 41038 T12 arg12, 41039 T13 arg13, 41040 T14 arg14, 41041 T15 arg15, 41042 T16 arg16, 41043 T17 arg17, 41044 T18 arg18, 41045 T19 arg19, 41046 T20 arg20, 41047 T21 arg21, 41048 T22 arg22, 41049 T23 arg23, 41050 T24 arg24, 41051 T25 arg25, 41052 T26 arg26, 41053 T27 arg27, 41054 T28 arg28, 41055 T29 arg29, 41056 T30 arg30, 41057 T31 arg31, 41058 T32 arg32, 41059 T33 arg33, 41060 T34 arg34, 41061 T35 arg35, 41062 T36 arg36, 41063 T37 arg37, 41064 T38 arg38, 41065 T39 arg39, 41066 T40 arg40, 41067 T41 arg41, 41068 T42 arg42, 41069 T43 arg43, 41070 T44 arg44, 41071 T45 arg45, 41072 T46 arg46, 41073 T47 arg47, 41074 T48 arg48, 41075 T49 arg49, 41076 T50 arg50, 41077 T51 arg51, 41078 T52 arg52, 41079 T53 arg53, 41080 T54 arg54, 41081 T55 arg55, 41082 T56 arg56, 41083 T57 arg57, 41084 T58 arg58, 41085 T59 arg59, 41086 T60 arg60, 41087 T61 arg61, 41088 T62 arg62, 41089 T63 arg63, 41090 T64 arg64, 41091 T65 arg65, 41092 T66 arg66, 41093 T67 arg67, 41094 T68 arg68, 41095 T69 arg69, 41096 T70 arg70, 41097 T71 arg71, 41098 T72 arg72, 41099 T73 arg73, 41100 T74 arg74, 41101 T75 arg75, 41102 T76 arg76, 41103 T77 arg77, 41104 T78 arg78) 41105 { 41106 return functor_( 41107 enqueueArgs, 41108 arg0, 41109 arg1, 41110 arg2, 41111 arg3, 41112 arg4, 41113 arg5, 41114 arg6, 41115 arg7, 41116 arg8, 41117 arg9, 41118 arg10, 41119 arg11, 41120 arg12, 41121 arg13, 41122 arg14, 41123 arg15, 41124 arg16, 41125 arg17, 41126 arg18, 41127 arg19, 41128 arg20, 41129 arg21, 41130 arg22, 41131 arg23, 41132 arg24, 41133 arg25, 41134 arg26, 41135 arg27, 41136 arg28, 41137 arg29, 41138 arg30, 41139 arg31, 41140 arg32, 41141 arg33, 41142 arg34, 41143 arg35, 41144 arg36, 41145 arg37, 41146 arg38, 41147 arg39, 41148 arg40, 41149 arg41, 41150 arg42, 41151 arg43, 41152 arg44, 41153 arg45, 41154 arg46, 41155 arg47, 41156 arg48, 41157 arg49, 41158 arg50, 41159 arg51, 41160 arg52, 41161 arg53, 41162 arg54, 41163 arg55, 41164 arg56, 41165 arg57, 41166 arg58, 41167 arg59, 41168 arg60, 41169 arg61, 41170 arg62, 41171 arg63, 41172 arg64, 41173 arg65, 41174 arg66, 41175 arg67, 41176 arg68, 41177 arg69, 41178 arg70, 41179 arg71, 41180 arg72, 41181 arg73, 41182 arg74, 41183 arg75, 41184 arg76, 41185 arg77, 41186 arg78); 41187 } 41188 41189 operator type_ () 41190 { 41191 return type_(*this); 41192 } 41193 41194 }; 41195 41196 template< 41197 typename T0, 41198 typename T1, 41199 typename T2, 41200 typename T3, 41201 typename T4, 41202 typename T5, 41203 typename T6, 41204 typename T7, 41205 typename T8, 41206 typename T9, 41207 typename T10, 41208 typename T11, 41209 typename T12, 41210 typename T13, 41211 typename T14, 41212 typename T15, 41213 typename T16, 41214 typename T17, 41215 typename T18, 41216 typename T19, 41217 typename T20, 41218 typename T21, 41219 typename T22, 41220 typename T23, 41221 typename T24, 41222 typename T25, 41223 typename T26, 41224 typename T27, 41225 typename T28, 41226 typename T29, 41227 typename T30, 41228 typename T31, 41229 typename T32, 41230 typename T33, 41231 typename T34, 41232 typename T35, 41233 typename T36, 41234 typename T37, 41235 typename T38, 41236 typename T39, 41237 typename T40, 41238 typename T41, 41239 typename T42, 41240 typename T43, 41241 typename T44, 41242 typename T45, 41243 typename T46, 41244 typename T47, 41245 typename T48, 41246 typename T49, 41247 typename T50, 41248 typename T51, 41249 typename T52, 41250 typename T53, 41251 typename T54, 41252 typename T55, 41253 typename T56, 41254 typename T57, 41255 typename T58, 41256 typename T59, 41257 typename T60, 41258 typename T61, 41259 typename T62, 41260 typename T63, 41261 typename T64, 41262 typename T65, 41263 typename T66, 41264 typename T67, 41265 typename T68, 41266 typename T69, 41267 typename T70, 41268 typename T71, 41269 typename T72, 41270 typename T73, 41271 typename T74, 41272 typename T75, 41273 typename T76, 41274 typename T77, 41275 typename T78, 41276 typename T79> 41277 struct functionImplementation_< 41278 T0, 41279 T1, 41280 T2, 41281 T3, 41282 T4, 41283 T5, 41284 T6, 41285 T7, 41286 T8, 41287 T9, 41288 T10, 41289 T11, 41290 T12, 41291 T13, 41292 T14, 41293 T15, 41294 T16, 41295 T17, 41296 T18, 41297 T19, 41298 T20, 41299 T21, 41300 T22, 41301 T23, 41302 T24, 41303 T25, 41304 T26, 41305 T27, 41306 T28, 41307 T29, 41308 T30, 41309 T31, 41310 T32, 41311 T33, 41312 T34, 41313 T35, 41314 T36, 41315 T37, 41316 T38, 41317 T39, 41318 T40, 41319 T41, 41320 T42, 41321 T43, 41322 T44, 41323 T45, 41324 T46, 41325 T47, 41326 T48, 41327 T49, 41328 T50, 41329 T51, 41330 T52, 41331 T53, 41332 T54, 41333 T55, 41334 T56, 41335 T57, 41336 T58, 41337 T59, 41338 T60, 41339 T61, 41340 T62, 41341 T63, 41342 T64, 41343 T65, 41344 T66, 41345 T67, 41346 T68, 41347 T69, 41348 T70, 41349 T71, 41350 T72, 41351 T73, 41352 T74, 41353 T75, 41354 T76, 41355 T77, 41356 T78, 41357 T79, 41358 NullType, 41359 NullType, 41360 NullType, 41361 NullType, 41362 NullType, 41363 NullType, 41364 NullType, 41365 NullType, 41366 NullType, 41367 NullType, 41368 NullType, 41369 NullType, 41370 NullType, 41371 NullType, 41372 NullType, 41373 NullType, 41374 NullType, 41375 NullType, 41376 NullType, 41377 NullType, 41378 NullType, 41379 NullType, 41380 NullType, 41381 NullType, 41382 NullType, 41383 NullType, 41384 NullType, 41385 NullType, 41386 NullType, 41387 NullType, 41388 NullType, 41389 NullType, 41390 NullType, 41391 NullType, 41392 NullType, 41393 NullType, 41394 NullType, 41395 NullType, 41396 NullType, 41397 NullType, 41398 NullType, 41399 NullType, 41400 NullType, 41401 NullType, 41402 NullType, 41403 NullType, 41404 NullType, 41405 NullType> 41406 { 41407 typedef detail::KernelFunctorGlobal< 41408 T0, 41409 T1, 41410 T2, 41411 T3, 41412 T4, 41413 T5, 41414 T6, 41415 T7, 41416 T8, 41417 T9, 41418 T10, 41419 T11, 41420 T12, 41421 T13, 41422 T14, 41423 T15, 41424 T16, 41425 T17, 41426 T18, 41427 T19, 41428 T20, 41429 T21, 41430 T22, 41431 T23, 41432 T24, 41433 T25, 41434 T26, 41435 T27, 41436 T28, 41437 T29, 41438 T30, 41439 T31, 41440 T32, 41441 T33, 41442 T34, 41443 T35, 41444 T36, 41445 T37, 41446 T38, 41447 T39, 41448 T40, 41449 T41, 41450 T42, 41451 T43, 41452 T44, 41453 T45, 41454 T46, 41455 T47, 41456 T48, 41457 T49, 41458 T50, 41459 T51, 41460 T52, 41461 T53, 41462 T54, 41463 T55, 41464 T56, 41465 T57, 41466 T58, 41467 T59, 41468 T60, 41469 T61, 41470 T62, 41471 T63, 41472 T64, 41473 T65, 41474 T66, 41475 T67, 41476 T68, 41477 T69, 41478 T70, 41479 T71, 41480 T72, 41481 T73, 41482 T74, 41483 T75, 41484 T76, 41485 T77, 41486 T78, 41487 T79, 41488 NullType, 41489 NullType, 41490 NullType, 41491 NullType, 41492 NullType, 41493 NullType, 41494 NullType, 41495 NullType, 41496 NullType, 41497 NullType, 41498 NullType, 41499 NullType, 41500 NullType, 41501 NullType, 41502 NullType, 41503 NullType, 41504 NullType, 41505 NullType, 41506 NullType, 41507 NullType, 41508 NullType, 41509 NullType, 41510 NullType, 41511 NullType, 41512 NullType, 41513 NullType, 41514 NullType, 41515 NullType, 41516 NullType, 41517 NullType, 41518 NullType, 41519 NullType, 41520 NullType, 41521 NullType, 41522 NullType, 41523 NullType, 41524 NullType, 41525 NullType, 41526 NullType, 41527 NullType, 41528 NullType, 41529 NullType, 41530 NullType, 41531 NullType, 41532 NullType, 41533 NullType, 41534 NullType, 41535 NullType> FunctorType; 41536 41537 FunctorType functor_; 41538 41539 functionImplementation_(const FunctorType &functor) : 41540 functor_(functor) 41541 { 41542 } 41543 41544 typedef std::tr1::function<Event ( 41545 const EnqueueArgs&, 41546 T0, 41547 T1, 41548 T2, 41549 T3, 41550 T4, 41551 T5, 41552 T6, 41553 T7, 41554 T8, 41555 T9, 41556 T10, 41557 T11, 41558 T12, 41559 T13, 41560 T14, 41561 T15, 41562 T16, 41563 T17, 41564 T18, 41565 T19, 41566 T20, 41567 T21, 41568 T22, 41569 T23, 41570 T24, 41571 T25, 41572 T26, 41573 T27, 41574 T28, 41575 T29, 41576 T30, 41577 T31, 41578 T32, 41579 T33, 41580 T34, 41581 T35, 41582 T36, 41583 T37, 41584 T38, 41585 T39, 41586 T40, 41587 T41, 41588 T42, 41589 T43, 41590 T44, 41591 T45, 41592 T46, 41593 T47, 41594 T48, 41595 T49, 41596 T50, 41597 T51, 41598 T52, 41599 T53, 41600 T54, 41601 T55, 41602 T56, 41603 T57, 41604 T58, 41605 T59, 41606 T60, 41607 T61, 41608 T62, 41609 T63, 41610 T64, 41611 T65, 41612 T66, 41613 T67, 41614 T68, 41615 T69, 41616 T70, 41617 T71, 41618 T72, 41619 T73, 41620 T74, 41621 T75, 41622 T76, 41623 T77, 41624 T78, 41625 T79)> type_; 41626 41627 Event operator()(const EnqueueArgs& enqueueArgs, 41628 T0 arg0, 41629 T1 arg1, 41630 T2 arg2, 41631 T3 arg3, 41632 T4 arg4, 41633 T5 arg5, 41634 T6 arg6, 41635 T7 arg7, 41636 T8 arg8, 41637 T9 arg9, 41638 T10 arg10, 41639 T11 arg11, 41640 T12 arg12, 41641 T13 arg13, 41642 T14 arg14, 41643 T15 arg15, 41644 T16 arg16, 41645 T17 arg17, 41646 T18 arg18, 41647 T19 arg19, 41648 T20 arg20, 41649 T21 arg21, 41650 T22 arg22, 41651 T23 arg23, 41652 T24 arg24, 41653 T25 arg25, 41654 T26 arg26, 41655 T27 arg27, 41656 T28 arg28, 41657 T29 arg29, 41658 T30 arg30, 41659 T31 arg31, 41660 T32 arg32, 41661 T33 arg33, 41662 T34 arg34, 41663 T35 arg35, 41664 T36 arg36, 41665 T37 arg37, 41666 T38 arg38, 41667 T39 arg39, 41668 T40 arg40, 41669 T41 arg41, 41670 T42 arg42, 41671 T43 arg43, 41672 T44 arg44, 41673 T45 arg45, 41674 T46 arg46, 41675 T47 arg47, 41676 T48 arg48, 41677 T49 arg49, 41678 T50 arg50, 41679 T51 arg51, 41680 T52 arg52, 41681 T53 arg53, 41682 T54 arg54, 41683 T55 arg55, 41684 T56 arg56, 41685 T57 arg57, 41686 T58 arg58, 41687 T59 arg59, 41688 T60 arg60, 41689 T61 arg61, 41690 T62 arg62, 41691 T63 arg63, 41692 T64 arg64, 41693 T65 arg65, 41694 T66 arg66, 41695 T67 arg67, 41696 T68 arg68, 41697 T69 arg69, 41698 T70 arg70, 41699 T71 arg71, 41700 T72 arg72, 41701 T73 arg73, 41702 T74 arg74, 41703 T75 arg75, 41704 T76 arg76, 41705 T77 arg77, 41706 T78 arg78, 41707 T79 arg79) 41708 { 41709 return functor_( 41710 enqueueArgs, 41711 arg0, 41712 arg1, 41713 arg2, 41714 arg3, 41715 arg4, 41716 arg5, 41717 arg6, 41718 arg7, 41719 arg8, 41720 arg9, 41721 arg10, 41722 arg11, 41723 arg12, 41724 arg13, 41725 arg14, 41726 arg15, 41727 arg16, 41728 arg17, 41729 arg18, 41730 arg19, 41731 arg20, 41732 arg21, 41733 arg22, 41734 arg23, 41735 arg24, 41736 arg25, 41737 arg26, 41738 arg27, 41739 arg28, 41740 arg29, 41741 arg30, 41742 arg31, 41743 arg32, 41744 arg33, 41745 arg34, 41746 arg35, 41747 arg36, 41748 arg37, 41749 arg38, 41750 arg39, 41751 arg40, 41752 arg41, 41753 arg42, 41754 arg43, 41755 arg44, 41756 arg45, 41757 arg46, 41758 arg47, 41759 arg48, 41760 arg49, 41761 arg50, 41762 arg51, 41763 arg52, 41764 arg53, 41765 arg54, 41766 arg55, 41767 arg56, 41768 arg57, 41769 arg58, 41770 arg59, 41771 arg60, 41772 arg61, 41773 arg62, 41774 arg63, 41775 arg64, 41776 arg65, 41777 arg66, 41778 arg67, 41779 arg68, 41780 arg69, 41781 arg70, 41782 arg71, 41783 arg72, 41784 arg73, 41785 arg74, 41786 arg75, 41787 arg76, 41788 arg77, 41789 arg78, 41790 arg79); 41791 } 41792 41793 operator type_ () 41794 { 41795 return type_(*this); 41796 } 41797 41798 }; 41799 41800 template< 41801 typename T0, 41802 typename T1, 41803 typename T2, 41804 typename T3, 41805 typename T4, 41806 typename T5, 41807 typename T6, 41808 typename T7, 41809 typename T8, 41810 typename T9, 41811 typename T10, 41812 typename T11, 41813 typename T12, 41814 typename T13, 41815 typename T14, 41816 typename T15, 41817 typename T16, 41818 typename T17, 41819 typename T18, 41820 typename T19, 41821 typename T20, 41822 typename T21, 41823 typename T22, 41824 typename T23, 41825 typename T24, 41826 typename T25, 41827 typename T26, 41828 typename T27, 41829 typename T28, 41830 typename T29, 41831 typename T30, 41832 typename T31, 41833 typename T32, 41834 typename T33, 41835 typename T34, 41836 typename T35, 41837 typename T36, 41838 typename T37, 41839 typename T38, 41840 typename T39, 41841 typename T40, 41842 typename T41, 41843 typename T42, 41844 typename T43, 41845 typename T44, 41846 typename T45, 41847 typename T46, 41848 typename T47, 41849 typename T48, 41850 typename T49, 41851 typename T50, 41852 typename T51, 41853 typename T52, 41854 typename T53, 41855 typename T54, 41856 typename T55, 41857 typename T56, 41858 typename T57, 41859 typename T58, 41860 typename T59, 41861 typename T60, 41862 typename T61, 41863 typename T62, 41864 typename T63, 41865 typename T64, 41866 typename T65, 41867 typename T66, 41868 typename T67, 41869 typename T68, 41870 typename T69, 41871 typename T70, 41872 typename T71, 41873 typename T72, 41874 typename T73, 41875 typename T74, 41876 typename T75, 41877 typename T76, 41878 typename T77, 41879 typename T78, 41880 typename T79, 41881 typename T80> 41882 struct functionImplementation_< 41883 T0, 41884 T1, 41885 T2, 41886 T3, 41887 T4, 41888 T5, 41889 T6, 41890 T7, 41891 T8, 41892 T9, 41893 T10, 41894 T11, 41895 T12, 41896 T13, 41897 T14, 41898 T15, 41899 T16, 41900 T17, 41901 T18, 41902 T19, 41903 T20, 41904 T21, 41905 T22, 41906 T23, 41907 T24, 41908 T25, 41909 T26, 41910 T27, 41911 T28, 41912 T29, 41913 T30, 41914 T31, 41915 T32, 41916 T33, 41917 T34, 41918 T35, 41919 T36, 41920 T37, 41921 T38, 41922 T39, 41923 T40, 41924 T41, 41925 T42, 41926 T43, 41927 T44, 41928 T45, 41929 T46, 41930 T47, 41931 T48, 41932 T49, 41933 T50, 41934 T51, 41935 T52, 41936 T53, 41937 T54, 41938 T55, 41939 T56, 41940 T57, 41941 T58, 41942 T59, 41943 T60, 41944 T61, 41945 T62, 41946 T63, 41947 T64, 41948 T65, 41949 T66, 41950 T67, 41951 T68, 41952 T69, 41953 T70, 41954 T71, 41955 T72, 41956 T73, 41957 T74, 41958 T75, 41959 T76, 41960 T77, 41961 T78, 41962 T79, 41963 T80, 41964 NullType, 41965 NullType, 41966 NullType, 41967 NullType, 41968 NullType, 41969 NullType, 41970 NullType, 41971 NullType, 41972 NullType, 41973 NullType, 41974 NullType, 41975 NullType, 41976 NullType, 41977 NullType, 41978 NullType, 41979 NullType, 41980 NullType, 41981 NullType, 41982 NullType, 41983 NullType, 41984 NullType, 41985 NullType, 41986 NullType, 41987 NullType, 41988 NullType, 41989 NullType, 41990 NullType, 41991 NullType, 41992 NullType, 41993 NullType, 41994 NullType, 41995 NullType, 41996 NullType, 41997 NullType, 41998 NullType, 41999 NullType, 42000 NullType, 42001 NullType, 42002 NullType, 42003 NullType, 42004 NullType, 42005 NullType, 42006 NullType, 42007 NullType, 42008 NullType, 42009 NullType, 42010 NullType> 42011 { 42012 typedef detail::KernelFunctorGlobal< 42013 T0, 42014 T1, 42015 T2, 42016 T3, 42017 T4, 42018 T5, 42019 T6, 42020 T7, 42021 T8, 42022 T9, 42023 T10, 42024 T11, 42025 T12, 42026 T13, 42027 T14, 42028 T15, 42029 T16, 42030 T17, 42031 T18, 42032 T19, 42033 T20, 42034 T21, 42035 T22, 42036 T23, 42037 T24, 42038 T25, 42039 T26, 42040 T27, 42041 T28, 42042 T29, 42043 T30, 42044 T31, 42045 T32, 42046 T33, 42047 T34, 42048 T35, 42049 T36, 42050 T37, 42051 T38, 42052 T39, 42053 T40, 42054 T41, 42055 T42, 42056 T43, 42057 T44, 42058 T45, 42059 T46, 42060 T47, 42061 T48, 42062 T49, 42063 T50, 42064 T51, 42065 T52, 42066 T53, 42067 T54, 42068 T55, 42069 T56, 42070 T57, 42071 T58, 42072 T59, 42073 T60, 42074 T61, 42075 T62, 42076 T63, 42077 T64, 42078 T65, 42079 T66, 42080 T67, 42081 T68, 42082 T69, 42083 T70, 42084 T71, 42085 T72, 42086 T73, 42087 T74, 42088 T75, 42089 T76, 42090 T77, 42091 T78, 42092 T79, 42093 T80, 42094 NullType, 42095 NullType, 42096 NullType, 42097 NullType, 42098 NullType, 42099 NullType, 42100 NullType, 42101 NullType, 42102 NullType, 42103 NullType, 42104 NullType, 42105 NullType, 42106 NullType, 42107 NullType, 42108 NullType, 42109 NullType, 42110 NullType, 42111 NullType, 42112 NullType, 42113 NullType, 42114 NullType, 42115 NullType, 42116 NullType, 42117 NullType, 42118 NullType, 42119 NullType, 42120 NullType, 42121 NullType, 42122 NullType, 42123 NullType, 42124 NullType, 42125 NullType, 42126 NullType, 42127 NullType, 42128 NullType, 42129 NullType, 42130 NullType, 42131 NullType, 42132 NullType, 42133 NullType, 42134 NullType, 42135 NullType, 42136 NullType, 42137 NullType, 42138 NullType, 42139 NullType, 42140 NullType> FunctorType; 42141 42142 FunctorType functor_; 42143 42144 functionImplementation_(const FunctorType &functor) : 42145 functor_(functor) 42146 { 42147 } 42148 42149 typedef std::tr1::function<Event ( 42150 const EnqueueArgs&, 42151 T0, 42152 T1, 42153 T2, 42154 T3, 42155 T4, 42156 T5, 42157 T6, 42158 T7, 42159 T8, 42160 T9, 42161 T10, 42162 T11, 42163 T12, 42164 T13, 42165 T14, 42166 T15, 42167 T16, 42168 T17, 42169 T18, 42170 T19, 42171 T20, 42172 T21, 42173 T22, 42174 T23, 42175 T24, 42176 T25, 42177 T26, 42178 T27, 42179 T28, 42180 T29, 42181 T30, 42182 T31, 42183 T32, 42184 T33, 42185 T34, 42186 T35, 42187 T36, 42188 T37, 42189 T38, 42190 T39, 42191 T40, 42192 T41, 42193 T42, 42194 T43, 42195 T44, 42196 T45, 42197 T46, 42198 T47, 42199 T48, 42200 T49, 42201 T50, 42202 T51, 42203 T52, 42204 T53, 42205 T54, 42206 T55, 42207 T56, 42208 T57, 42209 T58, 42210 T59, 42211 T60, 42212 T61, 42213 T62, 42214 T63, 42215 T64, 42216 T65, 42217 T66, 42218 T67, 42219 T68, 42220 T69, 42221 T70, 42222 T71, 42223 T72, 42224 T73, 42225 T74, 42226 T75, 42227 T76, 42228 T77, 42229 T78, 42230 T79, 42231 T80)> type_; 42232 42233 Event operator()(const EnqueueArgs& enqueueArgs, 42234 T0 arg0, 42235 T1 arg1, 42236 T2 arg2, 42237 T3 arg3, 42238 T4 arg4, 42239 T5 arg5, 42240 T6 arg6, 42241 T7 arg7, 42242 T8 arg8, 42243 T9 arg9, 42244 T10 arg10, 42245 T11 arg11, 42246 T12 arg12, 42247 T13 arg13, 42248 T14 arg14, 42249 T15 arg15, 42250 T16 arg16, 42251 T17 arg17, 42252 T18 arg18, 42253 T19 arg19, 42254 T20 arg20, 42255 T21 arg21, 42256 T22 arg22, 42257 T23 arg23, 42258 T24 arg24, 42259 T25 arg25, 42260 T26 arg26, 42261 T27 arg27, 42262 T28 arg28, 42263 T29 arg29, 42264 T30 arg30, 42265 T31 arg31, 42266 T32 arg32, 42267 T33 arg33, 42268 T34 arg34, 42269 T35 arg35, 42270 T36 arg36, 42271 T37 arg37, 42272 T38 arg38, 42273 T39 arg39, 42274 T40 arg40, 42275 T41 arg41, 42276 T42 arg42, 42277 T43 arg43, 42278 T44 arg44, 42279 T45 arg45, 42280 T46 arg46, 42281 T47 arg47, 42282 T48 arg48, 42283 T49 arg49, 42284 T50 arg50, 42285 T51 arg51, 42286 T52 arg52, 42287 T53 arg53, 42288 T54 arg54, 42289 T55 arg55, 42290 T56 arg56, 42291 T57 arg57, 42292 T58 arg58, 42293 T59 arg59, 42294 T60 arg60, 42295 T61 arg61, 42296 T62 arg62, 42297 T63 arg63, 42298 T64 arg64, 42299 T65 arg65, 42300 T66 arg66, 42301 T67 arg67, 42302 T68 arg68, 42303 T69 arg69, 42304 T70 arg70, 42305 T71 arg71, 42306 T72 arg72, 42307 T73 arg73, 42308 T74 arg74, 42309 T75 arg75, 42310 T76 arg76, 42311 T77 arg77, 42312 T78 arg78, 42313 T79 arg79, 42314 T80 arg80) 42315 { 42316 return functor_( 42317 enqueueArgs, 42318 arg0, 42319 arg1, 42320 arg2, 42321 arg3, 42322 arg4, 42323 arg5, 42324 arg6, 42325 arg7, 42326 arg8, 42327 arg9, 42328 arg10, 42329 arg11, 42330 arg12, 42331 arg13, 42332 arg14, 42333 arg15, 42334 arg16, 42335 arg17, 42336 arg18, 42337 arg19, 42338 arg20, 42339 arg21, 42340 arg22, 42341 arg23, 42342 arg24, 42343 arg25, 42344 arg26, 42345 arg27, 42346 arg28, 42347 arg29, 42348 arg30, 42349 arg31, 42350 arg32, 42351 arg33, 42352 arg34, 42353 arg35, 42354 arg36, 42355 arg37, 42356 arg38, 42357 arg39, 42358 arg40, 42359 arg41, 42360 arg42, 42361 arg43, 42362 arg44, 42363 arg45, 42364 arg46, 42365 arg47, 42366 arg48, 42367 arg49, 42368 arg50, 42369 arg51, 42370 arg52, 42371 arg53, 42372 arg54, 42373 arg55, 42374 arg56, 42375 arg57, 42376 arg58, 42377 arg59, 42378 arg60, 42379 arg61, 42380 arg62, 42381 arg63, 42382 arg64, 42383 arg65, 42384 arg66, 42385 arg67, 42386 arg68, 42387 arg69, 42388 arg70, 42389 arg71, 42390 arg72, 42391 arg73, 42392 arg74, 42393 arg75, 42394 arg76, 42395 arg77, 42396 arg78, 42397 arg79, 42398 arg80); 42399 } 42400 42401 operator type_ () 42402 { 42403 return type_(*this); 42404 } 42405 42406 }; 42407 42408 template< 42409 typename T0, 42410 typename T1, 42411 typename T2, 42412 typename T3, 42413 typename T4, 42414 typename T5, 42415 typename T6, 42416 typename T7, 42417 typename T8, 42418 typename T9, 42419 typename T10, 42420 typename T11, 42421 typename T12, 42422 typename T13, 42423 typename T14, 42424 typename T15, 42425 typename T16, 42426 typename T17, 42427 typename T18, 42428 typename T19, 42429 typename T20, 42430 typename T21, 42431 typename T22, 42432 typename T23, 42433 typename T24, 42434 typename T25, 42435 typename T26, 42436 typename T27, 42437 typename T28, 42438 typename T29, 42439 typename T30, 42440 typename T31, 42441 typename T32, 42442 typename T33, 42443 typename T34, 42444 typename T35, 42445 typename T36, 42446 typename T37, 42447 typename T38, 42448 typename T39, 42449 typename T40, 42450 typename T41, 42451 typename T42, 42452 typename T43, 42453 typename T44, 42454 typename T45, 42455 typename T46, 42456 typename T47, 42457 typename T48, 42458 typename T49, 42459 typename T50, 42460 typename T51, 42461 typename T52, 42462 typename T53, 42463 typename T54, 42464 typename T55, 42465 typename T56, 42466 typename T57, 42467 typename T58, 42468 typename T59, 42469 typename T60, 42470 typename T61, 42471 typename T62, 42472 typename T63, 42473 typename T64, 42474 typename T65, 42475 typename T66, 42476 typename T67, 42477 typename T68, 42478 typename T69, 42479 typename T70, 42480 typename T71, 42481 typename T72, 42482 typename T73, 42483 typename T74, 42484 typename T75, 42485 typename T76, 42486 typename T77, 42487 typename T78, 42488 typename T79, 42489 typename T80, 42490 typename T81> 42491 struct functionImplementation_< 42492 T0, 42493 T1, 42494 T2, 42495 T3, 42496 T4, 42497 T5, 42498 T6, 42499 T7, 42500 T8, 42501 T9, 42502 T10, 42503 T11, 42504 T12, 42505 T13, 42506 T14, 42507 T15, 42508 T16, 42509 T17, 42510 T18, 42511 T19, 42512 T20, 42513 T21, 42514 T22, 42515 T23, 42516 T24, 42517 T25, 42518 T26, 42519 T27, 42520 T28, 42521 T29, 42522 T30, 42523 T31, 42524 T32, 42525 T33, 42526 T34, 42527 T35, 42528 T36, 42529 T37, 42530 T38, 42531 T39, 42532 T40, 42533 T41, 42534 T42, 42535 T43, 42536 T44, 42537 T45, 42538 T46, 42539 T47, 42540 T48, 42541 T49, 42542 T50, 42543 T51, 42544 T52, 42545 T53, 42546 T54, 42547 T55, 42548 T56, 42549 T57, 42550 T58, 42551 T59, 42552 T60, 42553 T61, 42554 T62, 42555 T63, 42556 T64, 42557 T65, 42558 T66, 42559 T67, 42560 T68, 42561 T69, 42562 T70, 42563 T71, 42564 T72, 42565 T73, 42566 T74, 42567 T75, 42568 T76, 42569 T77, 42570 T78, 42571 T79, 42572 T80, 42573 T81, 42574 NullType, 42575 NullType, 42576 NullType, 42577 NullType, 42578 NullType, 42579 NullType, 42580 NullType, 42581 NullType, 42582 NullType, 42583 NullType, 42584 NullType, 42585 NullType, 42586 NullType, 42587 NullType, 42588 NullType, 42589 NullType, 42590 NullType, 42591 NullType, 42592 NullType, 42593 NullType, 42594 NullType, 42595 NullType, 42596 NullType, 42597 NullType, 42598 NullType, 42599 NullType, 42600 NullType, 42601 NullType, 42602 NullType, 42603 NullType, 42604 NullType, 42605 NullType, 42606 NullType, 42607 NullType, 42608 NullType, 42609 NullType, 42610 NullType, 42611 NullType, 42612 NullType, 42613 NullType, 42614 NullType, 42615 NullType, 42616 NullType, 42617 NullType, 42618 NullType, 42619 NullType> 42620 { 42621 typedef detail::KernelFunctorGlobal< 42622 T0, 42623 T1, 42624 T2, 42625 T3, 42626 T4, 42627 T5, 42628 T6, 42629 T7, 42630 T8, 42631 T9, 42632 T10, 42633 T11, 42634 T12, 42635 T13, 42636 T14, 42637 T15, 42638 T16, 42639 T17, 42640 T18, 42641 T19, 42642 T20, 42643 T21, 42644 T22, 42645 T23, 42646 T24, 42647 T25, 42648 T26, 42649 T27, 42650 T28, 42651 T29, 42652 T30, 42653 T31, 42654 T32, 42655 T33, 42656 T34, 42657 T35, 42658 T36, 42659 T37, 42660 T38, 42661 T39, 42662 T40, 42663 T41, 42664 T42, 42665 T43, 42666 T44, 42667 T45, 42668 T46, 42669 T47, 42670 T48, 42671 T49, 42672 T50, 42673 T51, 42674 T52, 42675 T53, 42676 T54, 42677 T55, 42678 T56, 42679 T57, 42680 T58, 42681 T59, 42682 T60, 42683 T61, 42684 T62, 42685 T63, 42686 T64, 42687 T65, 42688 T66, 42689 T67, 42690 T68, 42691 T69, 42692 T70, 42693 T71, 42694 T72, 42695 T73, 42696 T74, 42697 T75, 42698 T76, 42699 T77, 42700 T78, 42701 T79, 42702 T80, 42703 T81, 42704 NullType, 42705 NullType, 42706 NullType, 42707 NullType, 42708 NullType, 42709 NullType, 42710 NullType, 42711 NullType, 42712 NullType, 42713 NullType, 42714 NullType, 42715 NullType, 42716 NullType, 42717 NullType, 42718 NullType, 42719 NullType, 42720 NullType, 42721 NullType, 42722 NullType, 42723 NullType, 42724 NullType, 42725 NullType, 42726 NullType, 42727 NullType, 42728 NullType, 42729 NullType, 42730 NullType, 42731 NullType, 42732 NullType, 42733 NullType, 42734 NullType, 42735 NullType, 42736 NullType, 42737 NullType, 42738 NullType, 42739 NullType, 42740 NullType, 42741 NullType, 42742 NullType, 42743 NullType, 42744 NullType, 42745 NullType, 42746 NullType, 42747 NullType, 42748 NullType, 42749 NullType> FunctorType; 42750 42751 FunctorType functor_; 42752 42753 functionImplementation_(const FunctorType &functor) : 42754 functor_(functor) 42755 { 42756 } 42757 42758 typedef std::tr1::function<Event ( 42759 const EnqueueArgs&, 42760 T0, 42761 T1, 42762 T2, 42763 T3, 42764 T4, 42765 T5, 42766 T6, 42767 T7, 42768 T8, 42769 T9, 42770 T10, 42771 T11, 42772 T12, 42773 T13, 42774 T14, 42775 T15, 42776 T16, 42777 T17, 42778 T18, 42779 T19, 42780 T20, 42781 T21, 42782 T22, 42783 T23, 42784 T24, 42785 T25, 42786 T26, 42787 T27, 42788 T28, 42789 T29, 42790 T30, 42791 T31, 42792 T32, 42793 T33, 42794 T34, 42795 T35, 42796 T36, 42797 T37, 42798 T38, 42799 T39, 42800 T40, 42801 T41, 42802 T42, 42803 T43, 42804 T44, 42805 T45, 42806 T46, 42807 T47, 42808 T48, 42809 T49, 42810 T50, 42811 T51, 42812 T52, 42813 T53, 42814 T54, 42815 T55, 42816 T56, 42817 T57, 42818 T58, 42819 T59, 42820 T60, 42821 T61, 42822 T62, 42823 T63, 42824 T64, 42825 T65, 42826 T66, 42827 T67, 42828 T68, 42829 T69, 42830 T70, 42831 T71, 42832 T72, 42833 T73, 42834 T74, 42835 T75, 42836 T76, 42837 T77, 42838 T78, 42839 T79, 42840 T80, 42841 T81)> type_; 42842 42843 Event operator()(const EnqueueArgs& enqueueArgs, 42844 T0 arg0, 42845 T1 arg1, 42846 T2 arg2, 42847 T3 arg3, 42848 T4 arg4, 42849 T5 arg5, 42850 T6 arg6, 42851 T7 arg7, 42852 T8 arg8, 42853 T9 arg9, 42854 T10 arg10, 42855 T11 arg11, 42856 T12 arg12, 42857 T13 arg13, 42858 T14 arg14, 42859 T15 arg15, 42860 T16 arg16, 42861 T17 arg17, 42862 T18 arg18, 42863 T19 arg19, 42864 T20 arg20, 42865 T21 arg21, 42866 T22 arg22, 42867 T23 arg23, 42868 T24 arg24, 42869 T25 arg25, 42870 T26 arg26, 42871 T27 arg27, 42872 T28 arg28, 42873 T29 arg29, 42874 T30 arg30, 42875 T31 arg31, 42876 T32 arg32, 42877 T33 arg33, 42878 T34 arg34, 42879 T35 arg35, 42880 T36 arg36, 42881 T37 arg37, 42882 T38 arg38, 42883 T39 arg39, 42884 T40 arg40, 42885 T41 arg41, 42886 T42 arg42, 42887 T43 arg43, 42888 T44 arg44, 42889 T45 arg45, 42890 T46 arg46, 42891 T47 arg47, 42892 T48 arg48, 42893 T49 arg49, 42894 T50 arg50, 42895 T51 arg51, 42896 T52 arg52, 42897 T53 arg53, 42898 T54 arg54, 42899 T55 arg55, 42900 T56 arg56, 42901 T57 arg57, 42902 T58 arg58, 42903 T59 arg59, 42904 T60 arg60, 42905 T61 arg61, 42906 T62 arg62, 42907 T63 arg63, 42908 T64 arg64, 42909 T65 arg65, 42910 T66 arg66, 42911 T67 arg67, 42912 T68 arg68, 42913 T69 arg69, 42914 T70 arg70, 42915 T71 arg71, 42916 T72 arg72, 42917 T73 arg73, 42918 T74 arg74, 42919 T75 arg75, 42920 T76 arg76, 42921 T77 arg77, 42922 T78 arg78, 42923 T79 arg79, 42924 T80 arg80, 42925 T81 arg81) 42926 { 42927 return functor_( 42928 enqueueArgs, 42929 arg0, 42930 arg1, 42931 arg2, 42932 arg3, 42933 arg4, 42934 arg5, 42935 arg6, 42936 arg7, 42937 arg8, 42938 arg9, 42939 arg10, 42940 arg11, 42941 arg12, 42942 arg13, 42943 arg14, 42944 arg15, 42945 arg16, 42946 arg17, 42947 arg18, 42948 arg19, 42949 arg20, 42950 arg21, 42951 arg22, 42952 arg23, 42953 arg24, 42954 arg25, 42955 arg26, 42956 arg27, 42957 arg28, 42958 arg29, 42959 arg30, 42960 arg31, 42961 arg32, 42962 arg33, 42963 arg34, 42964 arg35, 42965 arg36, 42966 arg37, 42967 arg38, 42968 arg39, 42969 arg40, 42970 arg41, 42971 arg42, 42972 arg43, 42973 arg44, 42974 arg45, 42975 arg46, 42976 arg47, 42977 arg48, 42978 arg49, 42979 arg50, 42980 arg51, 42981 arg52, 42982 arg53, 42983 arg54, 42984 arg55, 42985 arg56, 42986 arg57, 42987 arg58, 42988 arg59, 42989 arg60, 42990 arg61, 42991 arg62, 42992 arg63, 42993 arg64, 42994 arg65, 42995 arg66, 42996 arg67, 42997 arg68, 42998 arg69, 42999 arg70, 43000 arg71, 43001 arg72, 43002 arg73, 43003 arg74, 43004 arg75, 43005 arg76, 43006 arg77, 43007 arg78, 43008 arg79, 43009 arg80, 43010 arg81); 43011 } 43012 43013 operator type_ () 43014 { 43015 return type_(*this); 43016 } 43017 43018 }; 43019 43020 template< 43021 typename T0, 43022 typename T1, 43023 typename T2, 43024 typename T3, 43025 typename T4, 43026 typename T5, 43027 typename T6, 43028 typename T7, 43029 typename T8, 43030 typename T9, 43031 typename T10, 43032 typename T11, 43033 typename T12, 43034 typename T13, 43035 typename T14, 43036 typename T15, 43037 typename T16, 43038 typename T17, 43039 typename T18, 43040 typename T19, 43041 typename T20, 43042 typename T21, 43043 typename T22, 43044 typename T23, 43045 typename T24, 43046 typename T25, 43047 typename T26, 43048 typename T27, 43049 typename T28, 43050 typename T29, 43051 typename T30, 43052 typename T31, 43053 typename T32, 43054 typename T33, 43055 typename T34, 43056 typename T35, 43057 typename T36, 43058 typename T37, 43059 typename T38, 43060 typename T39, 43061 typename T40, 43062 typename T41, 43063 typename T42, 43064 typename T43, 43065 typename T44, 43066 typename T45, 43067 typename T46, 43068 typename T47, 43069 typename T48, 43070 typename T49, 43071 typename T50, 43072 typename T51, 43073 typename T52, 43074 typename T53, 43075 typename T54, 43076 typename T55, 43077 typename T56, 43078 typename T57, 43079 typename T58, 43080 typename T59, 43081 typename T60, 43082 typename T61, 43083 typename T62, 43084 typename T63, 43085 typename T64, 43086 typename T65, 43087 typename T66, 43088 typename T67, 43089 typename T68, 43090 typename T69, 43091 typename T70, 43092 typename T71, 43093 typename T72, 43094 typename T73, 43095 typename T74, 43096 typename T75, 43097 typename T76, 43098 typename T77, 43099 typename T78, 43100 typename T79, 43101 typename T80, 43102 typename T81, 43103 typename T82> 43104 struct functionImplementation_< 43105 T0, 43106 T1, 43107 T2, 43108 T3, 43109 T4, 43110 T5, 43111 T6, 43112 T7, 43113 T8, 43114 T9, 43115 T10, 43116 T11, 43117 T12, 43118 T13, 43119 T14, 43120 T15, 43121 T16, 43122 T17, 43123 T18, 43124 T19, 43125 T20, 43126 T21, 43127 T22, 43128 T23, 43129 T24, 43130 T25, 43131 T26, 43132 T27, 43133 T28, 43134 T29, 43135 T30, 43136 T31, 43137 T32, 43138 T33, 43139 T34, 43140 T35, 43141 T36, 43142 T37, 43143 T38, 43144 T39, 43145 T40, 43146 T41, 43147 T42, 43148 T43, 43149 T44, 43150 T45, 43151 T46, 43152 T47, 43153 T48, 43154 T49, 43155 T50, 43156 T51, 43157 T52, 43158 T53, 43159 T54, 43160 T55, 43161 T56, 43162 T57, 43163 T58, 43164 T59, 43165 T60, 43166 T61, 43167 T62, 43168 T63, 43169 T64, 43170 T65, 43171 T66, 43172 T67, 43173 T68, 43174 T69, 43175 T70, 43176 T71, 43177 T72, 43178 T73, 43179 T74, 43180 T75, 43181 T76, 43182 T77, 43183 T78, 43184 T79, 43185 T80, 43186 T81, 43187 T82, 43188 NullType, 43189 NullType, 43190 NullType, 43191 NullType, 43192 NullType, 43193 NullType, 43194 NullType, 43195 NullType, 43196 NullType, 43197 NullType, 43198 NullType, 43199 NullType, 43200 NullType, 43201 NullType, 43202 NullType, 43203 NullType, 43204 NullType, 43205 NullType, 43206 NullType, 43207 NullType, 43208 NullType, 43209 NullType, 43210 NullType, 43211 NullType, 43212 NullType, 43213 NullType, 43214 NullType, 43215 NullType, 43216 NullType, 43217 NullType, 43218 NullType, 43219 NullType, 43220 NullType, 43221 NullType, 43222 NullType, 43223 NullType, 43224 NullType, 43225 NullType, 43226 NullType, 43227 NullType, 43228 NullType, 43229 NullType, 43230 NullType, 43231 NullType, 43232 NullType> 43233 { 43234 typedef detail::KernelFunctorGlobal< 43235 T0, 43236 T1, 43237 T2, 43238 T3, 43239 T4, 43240 T5, 43241 T6, 43242 T7, 43243 T8, 43244 T9, 43245 T10, 43246 T11, 43247 T12, 43248 T13, 43249 T14, 43250 T15, 43251 T16, 43252 T17, 43253 T18, 43254 T19, 43255 T20, 43256 T21, 43257 T22, 43258 T23, 43259 T24, 43260 T25, 43261 T26, 43262 T27, 43263 T28, 43264 T29, 43265 T30, 43266 T31, 43267 T32, 43268 T33, 43269 T34, 43270 T35, 43271 T36, 43272 T37, 43273 T38, 43274 T39, 43275 T40, 43276 T41, 43277 T42, 43278 T43, 43279 T44, 43280 T45, 43281 T46, 43282 T47, 43283 T48, 43284 T49, 43285 T50, 43286 T51, 43287 T52, 43288 T53, 43289 T54, 43290 T55, 43291 T56, 43292 T57, 43293 T58, 43294 T59, 43295 T60, 43296 T61, 43297 T62, 43298 T63, 43299 T64, 43300 T65, 43301 T66, 43302 T67, 43303 T68, 43304 T69, 43305 T70, 43306 T71, 43307 T72, 43308 T73, 43309 T74, 43310 T75, 43311 T76, 43312 T77, 43313 T78, 43314 T79, 43315 T80, 43316 T81, 43317 T82, 43318 NullType, 43319 NullType, 43320 NullType, 43321 NullType, 43322 NullType, 43323 NullType, 43324 NullType, 43325 NullType, 43326 NullType, 43327 NullType, 43328 NullType, 43329 NullType, 43330 NullType, 43331 NullType, 43332 NullType, 43333 NullType, 43334 NullType, 43335 NullType, 43336 NullType, 43337 NullType, 43338 NullType, 43339 NullType, 43340 NullType, 43341 NullType, 43342 NullType, 43343 NullType, 43344 NullType, 43345 NullType, 43346 NullType, 43347 NullType, 43348 NullType, 43349 NullType, 43350 NullType, 43351 NullType, 43352 NullType, 43353 NullType, 43354 NullType, 43355 NullType, 43356 NullType, 43357 NullType, 43358 NullType, 43359 NullType, 43360 NullType, 43361 NullType, 43362 NullType> FunctorType; 43363 43364 FunctorType functor_; 43365 43366 functionImplementation_(const FunctorType &functor) : 43367 functor_(functor) 43368 { 43369 } 43370 43371 typedef std::tr1::function<Event ( 43372 const EnqueueArgs&, 43373 T0, 43374 T1, 43375 T2, 43376 T3, 43377 T4, 43378 T5, 43379 T6, 43380 T7, 43381 T8, 43382 T9, 43383 T10, 43384 T11, 43385 T12, 43386 T13, 43387 T14, 43388 T15, 43389 T16, 43390 T17, 43391 T18, 43392 T19, 43393 T20, 43394 T21, 43395 T22, 43396 T23, 43397 T24, 43398 T25, 43399 T26, 43400 T27, 43401 T28, 43402 T29, 43403 T30, 43404 T31, 43405 T32, 43406 T33, 43407 T34, 43408 T35, 43409 T36, 43410 T37, 43411 T38, 43412 T39, 43413 T40, 43414 T41, 43415 T42, 43416 T43, 43417 T44, 43418 T45, 43419 T46, 43420 T47, 43421 T48, 43422 T49, 43423 T50, 43424 T51, 43425 T52, 43426 T53, 43427 T54, 43428 T55, 43429 T56, 43430 T57, 43431 T58, 43432 T59, 43433 T60, 43434 T61, 43435 T62, 43436 T63, 43437 T64, 43438 T65, 43439 T66, 43440 T67, 43441 T68, 43442 T69, 43443 T70, 43444 T71, 43445 T72, 43446 T73, 43447 T74, 43448 T75, 43449 T76, 43450 T77, 43451 T78, 43452 T79, 43453 T80, 43454 T81, 43455 T82)> type_; 43456 43457 Event operator()(const EnqueueArgs& enqueueArgs, 43458 T0 arg0, 43459 T1 arg1, 43460 T2 arg2, 43461 T3 arg3, 43462 T4 arg4, 43463 T5 arg5, 43464 T6 arg6, 43465 T7 arg7, 43466 T8 arg8, 43467 T9 arg9, 43468 T10 arg10, 43469 T11 arg11, 43470 T12 arg12, 43471 T13 arg13, 43472 T14 arg14, 43473 T15 arg15, 43474 T16 arg16, 43475 T17 arg17, 43476 T18 arg18, 43477 T19 arg19, 43478 T20 arg20, 43479 T21 arg21, 43480 T22 arg22, 43481 T23 arg23, 43482 T24 arg24, 43483 T25 arg25, 43484 T26 arg26, 43485 T27 arg27, 43486 T28 arg28, 43487 T29 arg29, 43488 T30 arg30, 43489 T31 arg31, 43490 T32 arg32, 43491 T33 arg33, 43492 T34 arg34, 43493 T35 arg35, 43494 T36 arg36, 43495 T37 arg37, 43496 T38 arg38, 43497 T39 arg39, 43498 T40 arg40, 43499 T41 arg41, 43500 T42 arg42, 43501 T43 arg43, 43502 T44 arg44, 43503 T45 arg45, 43504 T46 arg46, 43505 T47 arg47, 43506 T48 arg48, 43507 T49 arg49, 43508 T50 arg50, 43509 T51 arg51, 43510 T52 arg52, 43511 T53 arg53, 43512 T54 arg54, 43513 T55 arg55, 43514 T56 arg56, 43515 T57 arg57, 43516 T58 arg58, 43517 T59 arg59, 43518 T60 arg60, 43519 T61 arg61, 43520 T62 arg62, 43521 T63 arg63, 43522 T64 arg64, 43523 T65 arg65, 43524 T66 arg66, 43525 T67 arg67, 43526 T68 arg68, 43527 T69 arg69, 43528 T70 arg70, 43529 T71 arg71, 43530 T72 arg72, 43531 T73 arg73, 43532 T74 arg74, 43533 T75 arg75, 43534 T76 arg76, 43535 T77 arg77, 43536 T78 arg78, 43537 T79 arg79, 43538 T80 arg80, 43539 T81 arg81, 43540 T82 arg82) 43541 { 43542 return functor_( 43543 enqueueArgs, 43544 arg0, 43545 arg1, 43546 arg2, 43547 arg3, 43548 arg4, 43549 arg5, 43550 arg6, 43551 arg7, 43552 arg8, 43553 arg9, 43554 arg10, 43555 arg11, 43556 arg12, 43557 arg13, 43558 arg14, 43559 arg15, 43560 arg16, 43561 arg17, 43562 arg18, 43563 arg19, 43564 arg20, 43565 arg21, 43566 arg22, 43567 arg23, 43568 arg24, 43569 arg25, 43570 arg26, 43571 arg27, 43572 arg28, 43573 arg29, 43574 arg30, 43575 arg31, 43576 arg32, 43577 arg33, 43578 arg34, 43579 arg35, 43580 arg36, 43581 arg37, 43582 arg38, 43583 arg39, 43584 arg40, 43585 arg41, 43586 arg42, 43587 arg43, 43588 arg44, 43589 arg45, 43590 arg46, 43591 arg47, 43592 arg48, 43593 arg49, 43594 arg50, 43595 arg51, 43596 arg52, 43597 arg53, 43598 arg54, 43599 arg55, 43600 arg56, 43601 arg57, 43602 arg58, 43603 arg59, 43604 arg60, 43605 arg61, 43606 arg62, 43607 arg63, 43608 arg64, 43609 arg65, 43610 arg66, 43611 arg67, 43612 arg68, 43613 arg69, 43614 arg70, 43615 arg71, 43616 arg72, 43617 arg73, 43618 arg74, 43619 arg75, 43620 arg76, 43621 arg77, 43622 arg78, 43623 arg79, 43624 arg80, 43625 arg81, 43626 arg82); 43627 } 43628 43629 operator type_ () 43630 { 43631 return type_(*this); 43632 } 43633 43634 }; 43635 43636 template< 43637 typename T0, 43638 typename T1, 43639 typename T2, 43640 typename T3, 43641 typename T4, 43642 typename T5, 43643 typename T6, 43644 typename T7, 43645 typename T8, 43646 typename T9, 43647 typename T10, 43648 typename T11, 43649 typename T12, 43650 typename T13, 43651 typename T14, 43652 typename T15, 43653 typename T16, 43654 typename T17, 43655 typename T18, 43656 typename T19, 43657 typename T20, 43658 typename T21, 43659 typename T22, 43660 typename T23, 43661 typename T24, 43662 typename T25, 43663 typename T26, 43664 typename T27, 43665 typename T28, 43666 typename T29, 43667 typename T30, 43668 typename T31, 43669 typename T32, 43670 typename T33, 43671 typename T34, 43672 typename T35, 43673 typename T36, 43674 typename T37, 43675 typename T38, 43676 typename T39, 43677 typename T40, 43678 typename T41, 43679 typename T42, 43680 typename T43, 43681 typename T44, 43682 typename T45, 43683 typename T46, 43684 typename T47, 43685 typename T48, 43686 typename T49, 43687 typename T50, 43688 typename T51, 43689 typename T52, 43690 typename T53, 43691 typename T54, 43692 typename T55, 43693 typename T56, 43694 typename T57, 43695 typename T58, 43696 typename T59, 43697 typename T60, 43698 typename T61, 43699 typename T62, 43700 typename T63, 43701 typename T64, 43702 typename T65, 43703 typename T66, 43704 typename T67, 43705 typename T68, 43706 typename T69, 43707 typename T70, 43708 typename T71, 43709 typename T72, 43710 typename T73, 43711 typename T74, 43712 typename T75, 43713 typename T76, 43714 typename T77, 43715 typename T78, 43716 typename T79, 43717 typename T80, 43718 typename T81, 43719 typename T82, 43720 typename T83> 43721 struct functionImplementation_< 43722 T0, 43723 T1, 43724 T2, 43725 T3, 43726 T4, 43727 T5, 43728 T6, 43729 T7, 43730 T8, 43731 T9, 43732 T10, 43733 T11, 43734 T12, 43735 T13, 43736 T14, 43737 T15, 43738 T16, 43739 T17, 43740 T18, 43741 T19, 43742 T20, 43743 T21, 43744 T22, 43745 T23, 43746 T24, 43747 T25, 43748 T26, 43749 T27, 43750 T28, 43751 T29, 43752 T30, 43753 T31, 43754 T32, 43755 T33, 43756 T34, 43757 T35, 43758 T36, 43759 T37, 43760 T38, 43761 T39, 43762 T40, 43763 T41, 43764 T42, 43765 T43, 43766 T44, 43767 T45, 43768 T46, 43769 T47, 43770 T48, 43771 T49, 43772 T50, 43773 T51, 43774 T52, 43775 T53, 43776 T54, 43777 T55, 43778 T56, 43779 T57, 43780 T58, 43781 T59, 43782 T60, 43783 T61, 43784 T62, 43785 T63, 43786 T64, 43787 T65, 43788 T66, 43789 T67, 43790 T68, 43791 T69, 43792 T70, 43793 T71, 43794 T72, 43795 T73, 43796 T74, 43797 T75, 43798 T76, 43799 T77, 43800 T78, 43801 T79, 43802 T80, 43803 T81, 43804 T82, 43805 T83, 43806 NullType, 43807 NullType, 43808 NullType, 43809 NullType, 43810 NullType, 43811 NullType, 43812 NullType, 43813 NullType, 43814 NullType, 43815 NullType, 43816 NullType, 43817 NullType, 43818 NullType, 43819 NullType, 43820 NullType, 43821 NullType, 43822 NullType, 43823 NullType, 43824 NullType, 43825 NullType, 43826 NullType, 43827 NullType, 43828 NullType, 43829 NullType, 43830 NullType, 43831 NullType, 43832 NullType, 43833 NullType, 43834 NullType, 43835 NullType, 43836 NullType, 43837 NullType, 43838 NullType, 43839 NullType, 43840 NullType, 43841 NullType, 43842 NullType, 43843 NullType, 43844 NullType, 43845 NullType, 43846 NullType, 43847 NullType, 43848 NullType, 43849 NullType> 43850 { 43851 typedef detail::KernelFunctorGlobal< 43852 T0, 43853 T1, 43854 T2, 43855 T3, 43856 T4, 43857 T5, 43858 T6, 43859 T7, 43860 T8, 43861 T9, 43862 T10, 43863 T11, 43864 T12, 43865 T13, 43866 T14, 43867 T15, 43868 T16, 43869 T17, 43870 T18, 43871 T19, 43872 T20, 43873 T21, 43874 T22, 43875 T23, 43876 T24, 43877 T25, 43878 T26, 43879 T27, 43880 T28, 43881 T29, 43882 T30, 43883 T31, 43884 T32, 43885 T33, 43886 T34, 43887 T35, 43888 T36, 43889 T37, 43890 T38, 43891 T39, 43892 T40, 43893 T41, 43894 T42, 43895 T43, 43896 T44, 43897 T45, 43898 T46, 43899 T47, 43900 T48, 43901 T49, 43902 T50, 43903 T51, 43904 T52, 43905 T53, 43906 T54, 43907 T55, 43908 T56, 43909 T57, 43910 T58, 43911 T59, 43912 T60, 43913 T61, 43914 T62, 43915 T63, 43916 T64, 43917 T65, 43918 T66, 43919 T67, 43920 T68, 43921 T69, 43922 T70, 43923 T71, 43924 T72, 43925 T73, 43926 T74, 43927 T75, 43928 T76, 43929 T77, 43930 T78, 43931 T79, 43932 T80, 43933 T81, 43934 T82, 43935 T83, 43936 NullType, 43937 NullType, 43938 NullType, 43939 NullType, 43940 NullType, 43941 NullType, 43942 NullType, 43943 NullType, 43944 NullType, 43945 NullType, 43946 NullType, 43947 NullType, 43948 NullType, 43949 NullType, 43950 NullType, 43951 NullType, 43952 NullType, 43953 NullType, 43954 NullType, 43955 NullType, 43956 NullType, 43957 NullType, 43958 NullType, 43959 NullType, 43960 NullType, 43961 NullType, 43962 NullType, 43963 NullType, 43964 NullType, 43965 NullType, 43966 NullType, 43967 NullType, 43968 NullType, 43969 NullType, 43970 NullType, 43971 NullType, 43972 NullType, 43973 NullType, 43974 NullType, 43975 NullType, 43976 NullType, 43977 NullType, 43978 NullType, 43979 NullType> FunctorType; 43980 43981 FunctorType functor_; 43982 43983 functionImplementation_(const FunctorType &functor) : 43984 functor_(functor) 43985 { 43986 } 43987 43988 typedef std::tr1::function<Event ( 43989 const EnqueueArgs&, 43990 T0, 43991 T1, 43992 T2, 43993 T3, 43994 T4, 43995 T5, 43996 T6, 43997 T7, 43998 T8, 43999 T9, 44000 T10, 44001 T11, 44002 T12, 44003 T13, 44004 T14, 44005 T15, 44006 T16, 44007 T17, 44008 T18, 44009 T19, 44010 T20, 44011 T21, 44012 T22, 44013 T23, 44014 T24, 44015 T25, 44016 T26, 44017 T27, 44018 T28, 44019 T29, 44020 T30, 44021 T31, 44022 T32, 44023 T33, 44024 T34, 44025 T35, 44026 T36, 44027 T37, 44028 T38, 44029 T39, 44030 T40, 44031 T41, 44032 T42, 44033 T43, 44034 T44, 44035 T45, 44036 T46, 44037 T47, 44038 T48, 44039 T49, 44040 T50, 44041 T51, 44042 T52, 44043 T53, 44044 T54, 44045 T55, 44046 T56, 44047 T57, 44048 T58, 44049 T59, 44050 T60, 44051 T61, 44052 T62, 44053 T63, 44054 T64, 44055 T65, 44056 T66, 44057 T67, 44058 T68, 44059 T69, 44060 T70, 44061 T71, 44062 T72, 44063 T73, 44064 T74, 44065 T75, 44066 T76, 44067 T77, 44068 T78, 44069 T79, 44070 T80, 44071 T81, 44072 T82, 44073 T83)> type_; 44074 44075 Event operator()(const EnqueueArgs& enqueueArgs, 44076 T0 arg0, 44077 T1 arg1, 44078 T2 arg2, 44079 T3 arg3, 44080 T4 arg4, 44081 T5 arg5, 44082 T6 arg6, 44083 T7 arg7, 44084 T8 arg8, 44085 T9 arg9, 44086 T10 arg10, 44087 T11 arg11, 44088 T12 arg12, 44089 T13 arg13, 44090 T14 arg14, 44091 T15 arg15, 44092 T16 arg16, 44093 T17 arg17, 44094 T18 arg18, 44095 T19 arg19, 44096 T20 arg20, 44097 T21 arg21, 44098 T22 arg22, 44099 T23 arg23, 44100 T24 arg24, 44101 T25 arg25, 44102 T26 arg26, 44103 T27 arg27, 44104 T28 arg28, 44105 T29 arg29, 44106 T30 arg30, 44107 T31 arg31, 44108 T32 arg32, 44109 T33 arg33, 44110 T34 arg34, 44111 T35 arg35, 44112 T36 arg36, 44113 T37 arg37, 44114 T38 arg38, 44115 T39 arg39, 44116 T40 arg40, 44117 T41 arg41, 44118 T42 arg42, 44119 T43 arg43, 44120 T44 arg44, 44121 T45 arg45, 44122 T46 arg46, 44123 T47 arg47, 44124 T48 arg48, 44125 T49 arg49, 44126 T50 arg50, 44127 T51 arg51, 44128 T52 arg52, 44129 T53 arg53, 44130 T54 arg54, 44131 T55 arg55, 44132 T56 arg56, 44133 T57 arg57, 44134 T58 arg58, 44135 T59 arg59, 44136 T60 arg60, 44137 T61 arg61, 44138 T62 arg62, 44139 T63 arg63, 44140 T64 arg64, 44141 T65 arg65, 44142 T66 arg66, 44143 T67 arg67, 44144 T68 arg68, 44145 T69 arg69, 44146 T70 arg70, 44147 T71 arg71, 44148 T72 arg72, 44149 T73 arg73, 44150 T74 arg74, 44151 T75 arg75, 44152 T76 arg76, 44153 T77 arg77, 44154 T78 arg78, 44155 T79 arg79, 44156 T80 arg80, 44157 T81 arg81, 44158 T82 arg82, 44159 T83 arg83) 44160 { 44161 return functor_( 44162 enqueueArgs, 44163 arg0, 44164 arg1, 44165 arg2, 44166 arg3, 44167 arg4, 44168 arg5, 44169 arg6, 44170 arg7, 44171 arg8, 44172 arg9, 44173 arg10, 44174 arg11, 44175 arg12, 44176 arg13, 44177 arg14, 44178 arg15, 44179 arg16, 44180 arg17, 44181 arg18, 44182 arg19, 44183 arg20, 44184 arg21, 44185 arg22, 44186 arg23, 44187 arg24, 44188 arg25, 44189 arg26, 44190 arg27, 44191 arg28, 44192 arg29, 44193 arg30, 44194 arg31, 44195 arg32, 44196 arg33, 44197 arg34, 44198 arg35, 44199 arg36, 44200 arg37, 44201 arg38, 44202 arg39, 44203 arg40, 44204 arg41, 44205 arg42, 44206 arg43, 44207 arg44, 44208 arg45, 44209 arg46, 44210 arg47, 44211 arg48, 44212 arg49, 44213 arg50, 44214 arg51, 44215 arg52, 44216 arg53, 44217 arg54, 44218 arg55, 44219 arg56, 44220 arg57, 44221 arg58, 44222 arg59, 44223 arg60, 44224 arg61, 44225 arg62, 44226 arg63, 44227 arg64, 44228 arg65, 44229 arg66, 44230 arg67, 44231 arg68, 44232 arg69, 44233 arg70, 44234 arg71, 44235 arg72, 44236 arg73, 44237 arg74, 44238 arg75, 44239 arg76, 44240 arg77, 44241 arg78, 44242 arg79, 44243 arg80, 44244 arg81, 44245 arg82, 44246 arg83); 44247 } 44248 44249 operator type_ () 44250 { 44251 return type_(*this); 44252 } 44253 44254 }; 44255 44256 template< 44257 typename T0, 44258 typename T1, 44259 typename T2, 44260 typename T3, 44261 typename T4, 44262 typename T5, 44263 typename T6, 44264 typename T7, 44265 typename T8, 44266 typename T9, 44267 typename T10, 44268 typename T11, 44269 typename T12, 44270 typename T13, 44271 typename T14, 44272 typename T15, 44273 typename T16, 44274 typename T17, 44275 typename T18, 44276 typename T19, 44277 typename T20, 44278 typename T21, 44279 typename T22, 44280 typename T23, 44281 typename T24, 44282 typename T25, 44283 typename T26, 44284 typename T27, 44285 typename T28, 44286 typename T29, 44287 typename T30, 44288 typename T31, 44289 typename T32, 44290 typename T33, 44291 typename T34, 44292 typename T35, 44293 typename T36, 44294 typename T37, 44295 typename T38, 44296 typename T39, 44297 typename T40, 44298 typename T41, 44299 typename T42, 44300 typename T43, 44301 typename T44, 44302 typename T45, 44303 typename T46, 44304 typename T47, 44305 typename T48, 44306 typename T49, 44307 typename T50, 44308 typename T51, 44309 typename T52, 44310 typename T53, 44311 typename T54, 44312 typename T55, 44313 typename T56, 44314 typename T57, 44315 typename T58, 44316 typename T59, 44317 typename T60, 44318 typename T61, 44319 typename T62, 44320 typename T63, 44321 typename T64, 44322 typename T65, 44323 typename T66, 44324 typename T67, 44325 typename T68, 44326 typename T69, 44327 typename T70, 44328 typename T71, 44329 typename T72, 44330 typename T73, 44331 typename T74, 44332 typename T75, 44333 typename T76, 44334 typename T77, 44335 typename T78, 44336 typename T79, 44337 typename T80, 44338 typename T81, 44339 typename T82, 44340 typename T83, 44341 typename T84> 44342 struct functionImplementation_< 44343 T0, 44344 T1, 44345 T2, 44346 T3, 44347 T4, 44348 T5, 44349 T6, 44350 T7, 44351 T8, 44352 T9, 44353 T10, 44354 T11, 44355 T12, 44356 T13, 44357 T14, 44358 T15, 44359 T16, 44360 T17, 44361 T18, 44362 T19, 44363 T20, 44364 T21, 44365 T22, 44366 T23, 44367 T24, 44368 T25, 44369 T26, 44370 T27, 44371 T28, 44372 T29, 44373 T30, 44374 T31, 44375 T32, 44376 T33, 44377 T34, 44378 T35, 44379 T36, 44380 T37, 44381 T38, 44382 T39, 44383 T40, 44384 T41, 44385 T42, 44386 T43, 44387 T44, 44388 T45, 44389 T46, 44390 T47, 44391 T48, 44392 T49, 44393 T50, 44394 T51, 44395 T52, 44396 T53, 44397 T54, 44398 T55, 44399 T56, 44400 T57, 44401 T58, 44402 T59, 44403 T60, 44404 T61, 44405 T62, 44406 T63, 44407 T64, 44408 T65, 44409 T66, 44410 T67, 44411 T68, 44412 T69, 44413 T70, 44414 T71, 44415 T72, 44416 T73, 44417 T74, 44418 T75, 44419 T76, 44420 T77, 44421 T78, 44422 T79, 44423 T80, 44424 T81, 44425 T82, 44426 T83, 44427 T84, 44428 NullType, 44429 NullType, 44430 NullType, 44431 NullType, 44432 NullType, 44433 NullType, 44434 NullType, 44435 NullType, 44436 NullType, 44437 NullType, 44438 NullType, 44439 NullType, 44440 NullType, 44441 NullType, 44442 NullType, 44443 NullType, 44444 NullType, 44445 NullType, 44446 NullType, 44447 NullType, 44448 NullType, 44449 NullType, 44450 NullType, 44451 NullType, 44452 NullType, 44453 NullType, 44454 NullType, 44455 NullType, 44456 NullType, 44457 NullType, 44458 NullType, 44459 NullType, 44460 NullType, 44461 NullType, 44462 NullType, 44463 NullType, 44464 NullType, 44465 NullType, 44466 NullType, 44467 NullType, 44468 NullType, 44469 NullType, 44470 NullType> 44471 { 44472 typedef detail::KernelFunctorGlobal< 44473 T0, 44474 T1, 44475 T2, 44476 T3, 44477 T4, 44478 T5, 44479 T6, 44480 T7, 44481 T8, 44482 T9, 44483 T10, 44484 T11, 44485 T12, 44486 T13, 44487 T14, 44488 T15, 44489 T16, 44490 T17, 44491 T18, 44492 T19, 44493 T20, 44494 T21, 44495 T22, 44496 T23, 44497 T24, 44498 T25, 44499 T26, 44500 T27, 44501 T28, 44502 T29, 44503 T30, 44504 T31, 44505 T32, 44506 T33, 44507 T34, 44508 T35, 44509 T36, 44510 T37, 44511 T38, 44512 T39, 44513 T40, 44514 T41, 44515 T42, 44516 T43, 44517 T44, 44518 T45, 44519 T46, 44520 T47, 44521 T48, 44522 T49, 44523 T50, 44524 T51, 44525 T52, 44526 T53, 44527 T54, 44528 T55, 44529 T56, 44530 T57, 44531 T58, 44532 T59, 44533 T60, 44534 T61, 44535 T62, 44536 T63, 44537 T64, 44538 T65, 44539 T66, 44540 T67, 44541 T68, 44542 T69, 44543 T70, 44544 T71, 44545 T72, 44546 T73, 44547 T74, 44548 T75, 44549 T76, 44550 T77, 44551 T78, 44552 T79, 44553 T80, 44554 T81, 44555 T82, 44556 T83, 44557 T84, 44558 NullType, 44559 NullType, 44560 NullType, 44561 NullType, 44562 NullType, 44563 NullType, 44564 NullType, 44565 NullType, 44566 NullType, 44567 NullType, 44568 NullType, 44569 NullType, 44570 NullType, 44571 NullType, 44572 NullType, 44573 NullType, 44574 NullType, 44575 NullType, 44576 NullType, 44577 NullType, 44578 NullType, 44579 NullType, 44580 NullType, 44581 NullType, 44582 NullType, 44583 NullType, 44584 NullType, 44585 NullType, 44586 NullType, 44587 NullType, 44588 NullType, 44589 NullType, 44590 NullType, 44591 NullType, 44592 NullType, 44593 NullType, 44594 NullType, 44595 NullType, 44596 NullType, 44597 NullType, 44598 NullType, 44599 NullType, 44600 NullType> FunctorType; 44601 44602 FunctorType functor_; 44603 44604 functionImplementation_(const FunctorType &functor) : 44605 functor_(functor) 44606 { 44607 } 44608 44609 typedef std::tr1::function<Event ( 44610 const EnqueueArgs&, 44611 T0, 44612 T1, 44613 T2, 44614 T3, 44615 T4, 44616 T5, 44617 T6, 44618 T7, 44619 T8, 44620 T9, 44621 T10, 44622 T11, 44623 T12, 44624 T13, 44625 T14, 44626 T15, 44627 T16, 44628 T17, 44629 T18, 44630 T19, 44631 T20, 44632 T21, 44633 T22, 44634 T23, 44635 T24, 44636 T25, 44637 T26, 44638 T27, 44639 T28, 44640 T29, 44641 T30, 44642 T31, 44643 T32, 44644 T33, 44645 T34, 44646 T35, 44647 T36, 44648 T37, 44649 T38, 44650 T39, 44651 T40, 44652 T41, 44653 T42, 44654 T43, 44655 T44, 44656 T45, 44657 T46, 44658 T47, 44659 T48, 44660 T49, 44661 T50, 44662 T51, 44663 T52, 44664 T53, 44665 T54, 44666 T55, 44667 T56, 44668 T57, 44669 T58, 44670 T59, 44671 T60, 44672 T61, 44673 T62, 44674 T63, 44675 T64, 44676 T65, 44677 T66, 44678 T67, 44679 T68, 44680 T69, 44681 T70, 44682 T71, 44683 T72, 44684 T73, 44685 T74, 44686 T75, 44687 T76, 44688 T77, 44689 T78, 44690 T79, 44691 T80, 44692 T81, 44693 T82, 44694 T83, 44695 T84)> type_; 44696 44697 Event operator()(const EnqueueArgs& enqueueArgs, 44698 T0 arg0, 44699 T1 arg1, 44700 T2 arg2, 44701 T3 arg3, 44702 T4 arg4, 44703 T5 arg5, 44704 T6 arg6, 44705 T7 arg7, 44706 T8 arg8, 44707 T9 arg9, 44708 T10 arg10, 44709 T11 arg11, 44710 T12 arg12, 44711 T13 arg13, 44712 T14 arg14, 44713 T15 arg15, 44714 T16 arg16, 44715 T17 arg17, 44716 T18 arg18, 44717 T19 arg19, 44718 T20 arg20, 44719 T21 arg21, 44720 T22 arg22, 44721 T23 arg23, 44722 T24 arg24, 44723 T25 arg25, 44724 T26 arg26, 44725 T27 arg27, 44726 T28 arg28, 44727 T29 arg29, 44728 T30 arg30, 44729 T31 arg31, 44730 T32 arg32, 44731 T33 arg33, 44732 T34 arg34, 44733 T35 arg35, 44734 T36 arg36, 44735 T37 arg37, 44736 T38 arg38, 44737 T39 arg39, 44738 T40 arg40, 44739 T41 arg41, 44740 T42 arg42, 44741 T43 arg43, 44742 T44 arg44, 44743 T45 arg45, 44744 T46 arg46, 44745 T47 arg47, 44746 T48 arg48, 44747 T49 arg49, 44748 T50 arg50, 44749 T51 arg51, 44750 T52 arg52, 44751 T53 arg53, 44752 T54 arg54, 44753 T55 arg55, 44754 T56 arg56, 44755 T57 arg57, 44756 T58 arg58, 44757 T59 arg59, 44758 T60 arg60, 44759 T61 arg61, 44760 T62 arg62, 44761 T63 arg63, 44762 T64 arg64, 44763 T65 arg65, 44764 T66 arg66, 44765 T67 arg67, 44766 T68 arg68, 44767 T69 arg69, 44768 T70 arg70, 44769 T71 arg71, 44770 T72 arg72, 44771 T73 arg73, 44772 T74 arg74, 44773 T75 arg75, 44774 T76 arg76, 44775 T77 arg77, 44776 T78 arg78, 44777 T79 arg79, 44778 T80 arg80, 44779 T81 arg81, 44780 T82 arg82, 44781 T83 arg83, 44782 T84 arg84) 44783 { 44784 return functor_( 44785 enqueueArgs, 44786 arg0, 44787 arg1, 44788 arg2, 44789 arg3, 44790 arg4, 44791 arg5, 44792 arg6, 44793 arg7, 44794 arg8, 44795 arg9, 44796 arg10, 44797 arg11, 44798 arg12, 44799 arg13, 44800 arg14, 44801 arg15, 44802 arg16, 44803 arg17, 44804 arg18, 44805 arg19, 44806 arg20, 44807 arg21, 44808 arg22, 44809 arg23, 44810 arg24, 44811 arg25, 44812 arg26, 44813 arg27, 44814 arg28, 44815 arg29, 44816 arg30, 44817 arg31, 44818 arg32, 44819 arg33, 44820 arg34, 44821 arg35, 44822 arg36, 44823 arg37, 44824 arg38, 44825 arg39, 44826 arg40, 44827 arg41, 44828 arg42, 44829 arg43, 44830 arg44, 44831 arg45, 44832 arg46, 44833 arg47, 44834 arg48, 44835 arg49, 44836 arg50, 44837 arg51, 44838 arg52, 44839 arg53, 44840 arg54, 44841 arg55, 44842 arg56, 44843 arg57, 44844 arg58, 44845 arg59, 44846 arg60, 44847 arg61, 44848 arg62, 44849 arg63, 44850 arg64, 44851 arg65, 44852 arg66, 44853 arg67, 44854 arg68, 44855 arg69, 44856 arg70, 44857 arg71, 44858 arg72, 44859 arg73, 44860 arg74, 44861 arg75, 44862 arg76, 44863 arg77, 44864 arg78, 44865 arg79, 44866 arg80, 44867 arg81, 44868 arg82, 44869 arg83, 44870 arg84); 44871 } 44872 44873 operator type_ () 44874 { 44875 return type_(*this); 44876 } 44877 44878 }; 44879 44880 template< 44881 typename T0, 44882 typename T1, 44883 typename T2, 44884 typename T3, 44885 typename T4, 44886 typename T5, 44887 typename T6, 44888 typename T7, 44889 typename T8, 44890 typename T9, 44891 typename T10, 44892 typename T11, 44893 typename T12, 44894 typename T13, 44895 typename T14, 44896 typename T15, 44897 typename T16, 44898 typename T17, 44899 typename T18, 44900 typename T19, 44901 typename T20, 44902 typename T21, 44903 typename T22, 44904 typename T23, 44905 typename T24, 44906 typename T25, 44907 typename T26, 44908 typename T27, 44909 typename T28, 44910 typename T29, 44911 typename T30, 44912 typename T31, 44913 typename T32, 44914 typename T33, 44915 typename T34, 44916 typename T35, 44917 typename T36, 44918 typename T37, 44919 typename T38, 44920 typename T39, 44921 typename T40, 44922 typename T41, 44923 typename T42, 44924 typename T43, 44925 typename T44, 44926 typename T45, 44927 typename T46, 44928 typename T47, 44929 typename T48, 44930 typename T49, 44931 typename T50, 44932 typename T51, 44933 typename T52, 44934 typename T53, 44935 typename T54, 44936 typename T55, 44937 typename T56, 44938 typename T57, 44939 typename T58, 44940 typename T59, 44941 typename T60, 44942 typename T61, 44943 typename T62, 44944 typename T63, 44945 typename T64, 44946 typename T65, 44947 typename T66, 44948 typename T67, 44949 typename T68, 44950 typename T69, 44951 typename T70, 44952 typename T71, 44953 typename T72, 44954 typename T73, 44955 typename T74, 44956 typename T75, 44957 typename T76, 44958 typename T77, 44959 typename T78, 44960 typename T79, 44961 typename T80, 44962 typename T81, 44963 typename T82, 44964 typename T83, 44965 typename T84, 44966 typename T85> 44967 struct functionImplementation_< 44968 T0, 44969 T1, 44970 T2, 44971 T3, 44972 T4, 44973 T5, 44974 T6, 44975 T7, 44976 T8, 44977 T9, 44978 T10, 44979 T11, 44980 T12, 44981 T13, 44982 T14, 44983 T15, 44984 T16, 44985 T17, 44986 T18, 44987 T19, 44988 T20, 44989 T21, 44990 T22, 44991 T23, 44992 T24, 44993 T25, 44994 T26, 44995 T27, 44996 T28, 44997 T29, 44998 T30, 44999 T31, 45000 T32, 45001 T33, 45002 T34, 45003 T35, 45004 T36, 45005 T37, 45006 T38, 45007 T39, 45008 T40, 45009 T41, 45010 T42, 45011 T43, 45012 T44, 45013 T45, 45014 T46, 45015 T47, 45016 T48, 45017 T49, 45018 T50, 45019 T51, 45020 T52, 45021 T53, 45022 T54, 45023 T55, 45024 T56, 45025 T57, 45026 T58, 45027 T59, 45028 T60, 45029 T61, 45030 T62, 45031 T63, 45032 T64, 45033 T65, 45034 T66, 45035 T67, 45036 T68, 45037 T69, 45038 T70, 45039 T71, 45040 T72, 45041 T73, 45042 T74, 45043 T75, 45044 T76, 45045 T77, 45046 T78, 45047 T79, 45048 T80, 45049 T81, 45050 T82, 45051 T83, 45052 T84, 45053 T85, 45054 NullType, 45055 NullType, 45056 NullType, 45057 NullType, 45058 NullType, 45059 NullType, 45060 NullType, 45061 NullType, 45062 NullType, 45063 NullType, 45064 NullType, 45065 NullType, 45066 NullType, 45067 NullType, 45068 NullType, 45069 NullType, 45070 NullType, 45071 NullType, 45072 NullType, 45073 NullType, 45074 NullType, 45075 NullType, 45076 NullType, 45077 NullType, 45078 NullType, 45079 NullType, 45080 NullType, 45081 NullType, 45082 NullType, 45083 NullType, 45084 NullType, 45085 NullType, 45086 NullType, 45087 NullType, 45088 NullType, 45089 NullType, 45090 NullType, 45091 NullType, 45092 NullType, 45093 NullType, 45094 NullType, 45095 NullType> 45096 { 45097 typedef detail::KernelFunctorGlobal< 45098 T0, 45099 T1, 45100 T2, 45101 T3, 45102 T4, 45103 T5, 45104 T6, 45105 T7, 45106 T8, 45107 T9, 45108 T10, 45109 T11, 45110 T12, 45111 T13, 45112 T14, 45113 T15, 45114 T16, 45115 T17, 45116 T18, 45117 T19, 45118 T20, 45119 T21, 45120 T22, 45121 T23, 45122 T24, 45123 T25, 45124 T26, 45125 T27, 45126 T28, 45127 T29, 45128 T30, 45129 T31, 45130 T32, 45131 T33, 45132 T34, 45133 T35, 45134 T36, 45135 T37, 45136 T38, 45137 T39, 45138 T40, 45139 T41, 45140 T42, 45141 T43, 45142 T44, 45143 T45, 45144 T46, 45145 T47, 45146 T48, 45147 T49, 45148 T50, 45149 T51, 45150 T52, 45151 T53, 45152 T54, 45153 T55, 45154 T56, 45155 T57, 45156 T58, 45157 T59, 45158 T60, 45159 T61, 45160 T62, 45161 T63, 45162 T64, 45163 T65, 45164 T66, 45165 T67, 45166 T68, 45167 T69, 45168 T70, 45169 T71, 45170 T72, 45171 T73, 45172 T74, 45173 T75, 45174 T76, 45175 T77, 45176 T78, 45177 T79, 45178 T80, 45179 T81, 45180 T82, 45181 T83, 45182 T84, 45183 T85, 45184 NullType, 45185 NullType, 45186 NullType, 45187 NullType, 45188 NullType, 45189 NullType, 45190 NullType, 45191 NullType, 45192 NullType, 45193 NullType, 45194 NullType, 45195 NullType, 45196 NullType, 45197 NullType, 45198 NullType, 45199 NullType, 45200 NullType, 45201 NullType, 45202 NullType, 45203 NullType, 45204 NullType, 45205 NullType, 45206 NullType, 45207 NullType, 45208 NullType, 45209 NullType, 45210 NullType, 45211 NullType, 45212 NullType, 45213 NullType, 45214 NullType, 45215 NullType, 45216 NullType, 45217 NullType, 45218 NullType, 45219 NullType, 45220 NullType, 45221 NullType, 45222 NullType, 45223 NullType, 45224 NullType, 45225 NullType> FunctorType; 45226 45227 FunctorType functor_; 45228 45229 functionImplementation_(const FunctorType &functor) : 45230 functor_(functor) 45231 { 45232 } 45233 45234 typedef std::tr1::function<Event ( 45235 const EnqueueArgs&, 45236 T0, 45237 T1, 45238 T2, 45239 T3, 45240 T4, 45241 T5, 45242 T6, 45243 T7, 45244 T8, 45245 T9, 45246 T10, 45247 T11, 45248 T12, 45249 T13, 45250 T14, 45251 T15, 45252 T16, 45253 T17, 45254 T18, 45255 T19, 45256 T20, 45257 T21, 45258 T22, 45259 T23, 45260 T24, 45261 T25, 45262 T26, 45263 T27, 45264 T28, 45265 T29, 45266 T30, 45267 T31, 45268 T32, 45269 T33, 45270 T34, 45271 T35, 45272 T36, 45273 T37, 45274 T38, 45275 T39, 45276 T40, 45277 T41, 45278 T42, 45279 T43, 45280 T44, 45281 T45, 45282 T46, 45283 T47, 45284 T48, 45285 T49, 45286 T50, 45287 T51, 45288 T52, 45289 T53, 45290 T54, 45291 T55, 45292 T56, 45293 T57, 45294 T58, 45295 T59, 45296 T60, 45297 T61, 45298 T62, 45299 T63, 45300 T64, 45301 T65, 45302 T66, 45303 T67, 45304 T68, 45305 T69, 45306 T70, 45307 T71, 45308 T72, 45309 T73, 45310 T74, 45311 T75, 45312 T76, 45313 T77, 45314 T78, 45315 T79, 45316 T80, 45317 T81, 45318 T82, 45319 T83, 45320 T84, 45321 T85)> type_; 45322 45323 Event operator()(const EnqueueArgs& enqueueArgs, 45324 T0 arg0, 45325 T1 arg1, 45326 T2 arg2, 45327 T3 arg3, 45328 T4 arg4, 45329 T5 arg5, 45330 T6 arg6, 45331 T7 arg7, 45332 T8 arg8, 45333 T9 arg9, 45334 T10 arg10, 45335 T11 arg11, 45336 T12 arg12, 45337 T13 arg13, 45338 T14 arg14, 45339 T15 arg15, 45340 T16 arg16, 45341 T17 arg17, 45342 T18 arg18, 45343 T19 arg19, 45344 T20 arg20, 45345 T21 arg21, 45346 T22 arg22, 45347 T23 arg23, 45348 T24 arg24, 45349 T25 arg25, 45350 T26 arg26, 45351 T27 arg27, 45352 T28 arg28, 45353 T29 arg29, 45354 T30 arg30, 45355 T31 arg31, 45356 T32 arg32, 45357 T33 arg33, 45358 T34 arg34, 45359 T35 arg35, 45360 T36 arg36, 45361 T37 arg37, 45362 T38 arg38, 45363 T39 arg39, 45364 T40 arg40, 45365 T41 arg41, 45366 T42 arg42, 45367 T43 arg43, 45368 T44 arg44, 45369 T45 arg45, 45370 T46 arg46, 45371 T47 arg47, 45372 T48 arg48, 45373 T49 arg49, 45374 T50 arg50, 45375 T51 arg51, 45376 T52 arg52, 45377 T53 arg53, 45378 T54 arg54, 45379 T55 arg55, 45380 T56 arg56, 45381 T57 arg57, 45382 T58 arg58, 45383 T59 arg59, 45384 T60 arg60, 45385 T61 arg61, 45386 T62 arg62, 45387 T63 arg63, 45388 T64 arg64, 45389 T65 arg65, 45390 T66 arg66, 45391 T67 arg67, 45392 T68 arg68, 45393 T69 arg69, 45394 T70 arg70, 45395 T71 arg71, 45396 T72 arg72, 45397 T73 arg73, 45398 T74 arg74, 45399 T75 arg75, 45400 T76 arg76, 45401 T77 arg77, 45402 T78 arg78, 45403 T79 arg79, 45404 T80 arg80, 45405 T81 arg81, 45406 T82 arg82, 45407 T83 arg83, 45408 T84 arg84, 45409 T85 arg85) 45410 { 45411 return functor_( 45412 enqueueArgs, 45413 arg0, 45414 arg1, 45415 arg2, 45416 arg3, 45417 arg4, 45418 arg5, 45419 arg6, 45420 arg7, 45421 arg8, 45422 arg9, 45423 arg10, 45424 arg11, 45425 arg12, 45426 arg13, 45427 arg14, 45428 arg15, 45429 arg16, 45430 arg17, 45431 arg18, 45432 arg19, 45433 arg20, 45434 arg21, 45435 arg22, 45436 arg23, 45437 arg24, 45438 arg25, 45439 arg26, 45440 arg27, 45441 arg28, 45442 arg29, 45443 arg30, 45444 arg31, 45445 arg32, 45446 arg33, 45447 arg34, 45448 arg35, 45449 arg36, 45450 arg37, 45451 arg38, 45452 arg39, 45453 arg40, 45454 arg41, 45455 arg42, 45456 arg43, 45457 arg44, 45458 arg45, 45459 arg46, 45460 arg47, 45461 arg48, 45462 arg49, 45463 arg50, 45464 arg51, 45465 arg52, 45466 arg53, 45467 arg54, 45468 arg55, 45469 arg56, 45470 arg57, 45471 arg58, 45472 arg59, 45473 arg60, 45474 arg61, 45475 arg62, 45476 arg63, 45477 arg64, 45478 arg65, 45479 arg66, 45480 arg67, 45481 arg68, 45482 arg69, 45483 arg70, 45484 arg71, 45485 arg72, 45486 arg73, 45487 arg74, 45488 arg75, 45489 arg76, 45490 arg77, 45491 arg78, 45492 arg79, 45493 arg80, 45494 arg81, 45495 arg82, 45496 arg83, 45497 arg84, 45498 arg85); 45499 } 45500 45501 operator type_ () 45502 { 45503 return type_(*this); 45504 } 45505 45506 }; 45507 45508 template< 45509 typename T0, 45510 typename T1, 45511 typename T2, 45512 typename T3, 45513 typename T4, 45514 typename T5, 45515 typename T6, 45516 typename T7, 45517 typename T8, 45518 typename T9, 45519 typename T10, 45520 typename T11, 45521 typename T12, 45522 typename T13, 45523 typename T14, 45524 typename T15, 45525 typename T16, 45526 typename T17, 45527 typename T18, 45528 typename T19, 45529 typename T20, 45530 typename T21, 45531 typename T22, 45532 typename T23, 45533 typename T24, 45534 typename T25, 45535 typename T26, 45536 typename T27, 45537 typename T28, 45538 typename T29, 45539 typename T30, 45540 typename T31, 45541 typename T32, 45542 typename T33, 45543 typename T34, 45544 typename T35, 45545 typename T36, 45546 typename T37, 45547 typename T38, 45548 typename T39, 45549 typename T40, 45550 typename T41, 45551 typename T42, 45552 typename T43, 45553 typename T44, 45554 typename T45, 45555 typename T46, 45556 typename T47, 45557 typename T48, 45558 typename T49, 45559 typename T50, 45560 typename T51, 45561 typename T52, 45562 typename T53, 45563 typename T54, 45564 typename T55, 45565 typename T56, 45566 typename T57, 45567 typename T58, 45568 typename T59, 45569 typename T60, 45570 typename T61, 45571 typename T62, 45572 typename T63, 45573 typename T64, 45574 typename T65, 45575 typename T66, 45576 typename T67, 45577 typename T68, 45578 typename T69, 45579 typename T70, 45580 typename T71, 45581 typename T72, 45582 typename T73, 45583 typename T74, 45584 typename T75, 45585 typename T76, 45586 typename T77, 45587 typename T78, 45588 typename T79, 45589 typename T80, 45590 typename T81, 45591 typename T82, 45592 typename T83, 45593 typename T84, 45594 typename T85, 45595 typename T86> 45596 struct functionImplementation_< 45597 T0, 45598 T1, 45599 T2, 45600 T3, 45601 T4, 45602 T5, 45603 T6, 45604 T7, 45605 T8, 45606 T9, 45607 T10, 45608 T11, 45609 T12, 45610 T13, 45611 T14, 45612 T15, 45613 T16, 45614 T17, 45615 T18, 45616 T19, 45617 T20, 45618 T21, 45619 T22, 45620 T23, 45621 T24, 45622 T25, 45623 T26, 45624 T27, 45625 T28, 45626 T29, 45627 T30, 45628 T31, 45629 T32, 45630 T33, 45631 T34, 45632 T35, 45633 T36, 45634 T37, 45635 T38, 45636 T39, 45637 T40, 45638 T41, 45639 T42, 45640 T43, 45641 T44, 45642 T45, 45643 T46, 45644 T47, 45645 T48, 45646 T49, 45647 T50, 45648 T51, 45649 T52, 45650 T53, 45651 T54, 45652 T55, 45653 T56, 45654 T57, 45655 T58, 45656 T59, 45657 T60, 45658 T61, 45659 T62, 45660 T63, 45661 T64, 45662 T65, 45663 T66, 45664 T67, 45665 T68, 45666 T69, 45667 T70, 45668 T71, 45669 T72, 45670 T73, 45671 T74, 45672 T75, 45673 T76, 45674 T77, 45675 T78, 45676 T79, 45677 T80, 45678 T81, 45679 T82, 45680 T83, 45681 T84, 45682 T85, 45683 T86, 45684 NullType, 45685 NullType, 45686 NullType, 45687 NullType, 45688 NullType, 45689 NullType, 45690 NullType, 45691 NullType, 45692 NullType, 45693 NullType, 45694 NullType, 45695 NullType, 45696 NullType, 45697 NullType, 45698 NullType, 45699 NullType, 45700 NullType, 45701 NullType, 45702 NullType, 45703 NullType, 45704 NullType, 45705 NullType, 45706 NullType, 45707 NullType, 45708 NullType, 45709 NullType, 45710 NullType, 45711 NullType, 45712 NullType, 45713 NullType, 45714 NullType, 45715 NullType, 45716 NullType, 45717 NullType, 45718 NullType, 45719 NullType, 45720 NullType, 45721 NullType, 45722 NullType, 45723 NullType, 45724 NullType> 45725 { 45726 typedef detail::KernelFunctorGlobal< 45727 T0, 45728 T1, 45729 T2, 45730 T3, 45731 T4, 45732 T5, 45733 T6, 45734 T7, 45735 T8, 45736 T9, 45737 T10, 45738 T11, 45739 T12, 45740 T13, 45741 T14, 45742 T15, 45743 T16, 45744 T17, 45745 T18, 45746 T19, 45747 T20, 45748 T21, 45749 T22, 45750 T23, 45751 T24, 45752 T25, 45753 T26, 45754 T27, 45755 T28, 45756 T29, 45757 T30, 45758 T31, 45759 T32, 45760 T33, 45761 T34, 45762 T35, 45763 T36, 45764 T37, 45765 T38, 45766 T39, 45767 T40, 45768 T41, 45769 T42, 45770 T43, 45771 T44, 45772 T45, 45773 T46, 45774 T47, 45775 T48, 45776 T49, 45777 T50, 45778 T51, 45779 T52, 45780 T53, 45781 T54, 45782 T55, 45783 T56, 45784 T57, 45785 T58, 45786 T59, 45787 T60, 45788 T61, 45789 T62, 45790 T63, 45791 T64, 45792 T65, 45793 T66, 45794 T67, 45795 T68, 45796 T69, 45797 T70, 45798 T71, 45799 T72, 45800 T73, 45801 T74, 45802 T75, 45803 T76, 45804 T77, 45805 T78, 45806 T79, 45807 T80, 45808 T81, 45809 T82, 45810 T83, 45811 T84, 45812 T85, 45813 T86, 45814 NullType, 45815 NullType, 45816 NullType, 45817 NullType, 45818 NullType, 45819 NullType, 45820 NullType, 45821 NullType, 45822 NullType, 45823 NullType, 45824 NullType, 45825 NullType, 45826 NullType, 45827 NullType, 45828 NullType, 45829 NullType, 45830 NullType, 45831 NullType, 45832 NullType, 45833 NullType, 45834 NullType, 45835 NullType, 45836 NullType, 45837 NullType, 45838 NullType, 45839 NullType, 45840 NullType, 45841 NullType, 45842 NullType, 45843 NullType, 45844 NullType, 45845 NullType, 45846 NullType, 45847 NullType, 45848 NullType, 45849 NullType, 45850 NullType, 45851 NullType, 45852 NullType, 45853 NullType, 45854 NullType> FunctorType; 45855 45856 FunctorType functor_; 45857 45858 functionImplementation_(const FunctorType &functor) : 45859 functor_(functor) 45860 { 45861 } 45862 45863 typedef std::tr1::function<Event ( 45864 const EnqueueArgs&, 45865 T0, 45866 T1, 45867 T2, 45868 T3, 45869 T4, 45870 T5, 45871 T6, 45872 T7, 45873 T8, 45874 T9, 45875 T10, 45876 T11, 45877 T12, 45878 T13, 45879 T14, 45880 T15, 45881 T16, 45882 T17, 45883 T18, 45884 T19, 45885 T20, 45886 T21, 45887 T22, 45888 T23, 45889 T24, 45890 T25, 45891 T26, 45892 T27, 45893 T28, 45894 T29, 45895 T30, 45896 T31, 45897 T32, 45898 T33, 45899 T34, 45900 T35, 45901 T36, 45902 T37, 45903 T38, 45904 T39, 45905 T40, 45906 T41, 45907 T42, 45908 T43, 45909 T44, 45910 T45, 45911 T46, 45912 T47, 45913 T48, 45914 T49, 45915 T50, 45916 T51, 45917 T52, 45918 T53, 45919 T54, 45920 T55, 45921 T56, 45922 T57, 45923 T58, 45924 T59, 45925 T60, 45926 T61, 45927 T62, 45928 T63, 45929 T64, 45930 T65, 45931 T66, 45932 T67, 45933 T68, 45934 T69, 45935 T70, 45936 T71, 45937 T72, 45938 T73, 45939 T74, 45940 T75, 45941 T76, 45942 T77, 45943 T78, 45944 T79, 45945 T80, 45946 T81, 45947 T82, 45948 T83, 45949 T84, 45950 T85, 45951 T86)> type_; 45952 45953 Event operator()(const EnqueueArgs& enqueueArgs, 45954 T0 arg0, 45955 T1 arg1, 45956 T2 arg2, 45957 T3 arg3, 45958 T4 arg4, 45959 T5 arg5, 45960 T6 arg6, 45961 T7 arg7, 45962 T8 arg8, 45963 T9 arg9, 45964 T10 arg10, 45965 T11 arg11, 45966 T12 arg12, 45967 T13 arg13, 45968 T14 arg14, 45969 T15 arg15, 45970 T16 arg16, 45971 T17 arg17, 45972 T18 arg18, 45973 T19 arg19, 45974 T20 arg20, 45975 T21 arg21, 45976 T22 arg22, 45977 T23 arg23, 45978 T24 arg24, 45979 T25 arg25, 45980 T26 arg26, 45981 T27 arg27, 45982 T28 arg28, 45983 T29 arg29, 45984 T30 arg30, 45985 T31 arg31, 45986 T32 arg32, 45987 T33 arg33, 45988 T34 arg34, 45989 T35 arg35, 45990 T36 arg36, 45991 T37 arg37, 45992 T38 arg38, 45993 T39 arg39, 45994 T40 arg40, 45995 T41 arg41, 45996 T42 arg42, 45997 T43 arg43, 45998 T44 arg44, 45999 T45 arg45, 46000 T46 arg46, 46001 T47 arg47, 46002 T48 arg48, 46003 T49 arg49, 46004 T50 arg50, 46005 T51 arg51, 46006 T52 arg52, 46007 T53 arg53, 46008 T54 arg54, 46009 T55 arg55, 46010 T56 arg56, 46011 T57 arg57, 46012 T58 arg58, 46013 T59 arg59, 46014 T60 arg60, 46015 T61 arg61, 46016 T62 arg62, 46017 T63 arg63, 46018 T64 arg64, 46019 T65 arg65, 46020 T66 arg66, 46021 T67 arg67, 46022 T68 arg68, 46023 T69 arg69, 46024 T70 arg70, 46025 T71 arg71, 46026 T72 arg72, 46027 T73 arg73, 46028 T74 arg74, 46029 T75 arg75, 46030 T76 arg76, 46031 T77 arg77, 46032 T78 arg78, 46033 T79 arg79, 46034 T80 arg80, 46035 T81 arg81, 46036 T82 arg82, 46037 T83 arg83, 46038 T84 arg84, 46039 T85 arg85, 46040 T86 arg86) 46041 { 46042 return functor_( 46043 enqueueArgs, 46044 arg0, 46045 arg1, 46046 arg2, 46047 arg3, 46048 arg4, 46049 arg5, 46050 arg6, 46051 arg7, 46052 arg8, 46053 arg9, 46054 arg10, 46055 arg11, 46056 arg12, 46057 arg13, 46058 arg14, 46059 arg15, 46060 arg16, 46061 arg17, 46062 arg18, 46063 arg19, 46064 arg20, 46065 arg21, 46066 arg22, 46067 arg23, 46068 arg24, 46069 arg25, 46070 arg26, 46071 arg27, 46072 arg28, 46073 arg29, 46074 arg30, 46075 arg31, 46076 arg32, 46077 arg33, 46078 arg34, 46079 arg35, 46080 arg36, 46081 arg37, 46082 arg38, 46083 arg39, 46084 arg40, 46085 arg41, 46086 arg42, 46087 arg43, 46088 arg44, 46089 arg45, 46090 arg46, 46091 arg47, 46092 arg48, 46093 arg49, 46094 arg50, 46095 arg51, 46096 arg52, 46097 arg53, 46098 arg54, 46099 arg55, 46100 arg56, 46101 arg57, 46102 arg58, 46103 arg59, 46104 arg60, 46105 arg61, 46106 arg62, 46107 arg63, 46108 arg64, 46109 arg65, 46110 arg66, 46111 arg67, 46112 arg68, 46113 arg69, 46114 arg70, 46115 arg71, 46116 arg72, 46117 arg73, 46118 arg74, 46119 arg75, 46120 arg76, 46121 arg77, 46122 arg78, 46123 arg79, 46124 arg80, 46125 arg81, 46126 arg82, 46127 arg83, 46128 arg84, 46129 arg85, 46130 arg86); 46131 } 46132 46133 operator type_ () 46134 { 46135 return type_(*this); 46136 } 46137 46138 }; 46139 46140 template< 46141 typename T0, 46142 typename T1, 46143 typename T2, 46144 typename T3, 46145 typename T4, 46146 typename T5, 46147 typename T6, 46148 typename T7, 46149 typename T8, 46150 typename T9, 46151 typename T10, 46152 typename T11, 46153 typename T12, 46154 typename T13, 46155 typename T14, 46156 typename T15, 46157 typename T16, 46158 typename T17, 46159 typename T18, 46160 typename T19, 46161 typename T20, 46162 typename T21, 46163 typename T22, 46164 typename T23, 46165 typename T24, 46166 typename T25, 46167 typename T26, 46168 typename T27, 46169 typename T28, 46170 typename T29, 46171 typename T30, 46172 typename T31, 46173 typename T32, 46174 typename T33, 46175 typename T34, 46176 typename T35, 46177 typename T36, 46178 typename T37, 46179 typename T38, 46180 typename T39, 46181 typename T40, 46182 typename T41, 46183 typename T42, 46184 typename T43, 46185 typename T44, 46186 typename T45, 46187 typename T46, 46188 typename T47, 46189 typename T48, 46190 typename T49, 46191 typename T50, 46192 typename T51, 46193 typename T52, 46194 typename T53, 46195 typename T54, 46196 typename T55, 46197 typename T56, 46198 typename T57, 46199 typename T58, 46200 typename T59, 46201 typename T60, 46202 typename T61, 46203 typename T62, 46204 typename T63, 46205 typename T64, 46206 typename T65, 46207 typename T66, 46208 typename T67, 46209 typename T68, 46210 typename T69, 46211 typename T70, 46212 typename T71, 46213 typename T72, 46214 typename T73, 46215 typename T74, 46216 typename T75, 46217 typename T76, 46218 typename T77, 46219 typename T78, 46220 typename T79, 46221 typename T80, 46222 typename T81, 46223 typename T82, 46224 typename T83, 46225 typename T84, 46226 typename T85, 46227 typename T86, 46228 typename T87> 46229 struct functionImplementation_< 46230 T0, 46231 T1, 46232 T2, 46233 T3, 46234 T4, 46235 T5, 46236 T6, 46237 T7, 46238 T8, 46239 T9, 46240 T10, 46241 T11, 46242 T12, 46243 T13, 46244 T14, 46245 T15, 46246 T16, 46247 T17, 46248 T18, 46249 T19, 46250 T20, 46251 T21, 46252 T22, 46253 T23, 46254 T24, 46255 T25, 46256 T26, 46257 T27, 46258 T28, 46259 T29, 46260 T30, 46261 T31, 46262 T32, 46263 T33, 46264 T34, 46265 T35, 46266 T36, 46267 T37, 46268 T38, 46269 T39, 46270 T40, 46271 T41, 46272 T42, 46273 T43, 46274 T44, 46275 T45, 46276 T46, 46277 T47, 46278 T48, 46279 T49, 46280 T50, 46281 T51, 46282 T52, 46283 T53, 46284 T54, 46285 T55, 46286 T56, 46287 T57, 46288 T58, 46289 T59, 46290 T60, 46291 T61, 46292 T62, 46293 T63, 46294 T64, 46295 T65, 46296 T66, 46297 T67, 46298 T68, 46299 T69, 46300 T70, 46301 T71, 46302 T72, 46303 T73, 46304 T74, 46305 T75, 46306 T76, 46307 T77, 46308 T78, 46309 T79, 46310 T80, 46311 T81, 46312 T82, 46313 T83, 46314 T84, 46315 T85, 46316 T86, 46317 T87, 46318 NullType, 46319 NullType, 46320 NullType, 46321 NullType, 46322 NullType, 46323 NullType, 46324 NullType, 46325 NullType, 46326 NullType, 46327 NullType, 46328 NullType, 46329 NullType, 46330 NullType, 46331 NullType, 46332 NullType, 46333 NullType, 46334 NullType, 46335 NullType, 46336 NullType, 46337 NullType, 46338 NullType, 46339 NullType, 46340 NullType, 46341 NullType, 46342 NullType, 46343 NullType, 46344 NullType, 46345 NullType, 46346 NullType, 46347 NullType, 46348 NullType, 46349 NullType, 46350 NullType, 46351 NullType, 46352 NullType, 46353 NullType, 46354 NullType, 46355 NullType, 46356 NullType, 46357 NullType> 46358 { 46359 typedef detail::KernelFunctorGlobal< 46360 T0, 46361 T1, 46362 T2, 46363 T3, 46364 T4, 46365 T5, 46366 T6, 46367 T7, 46368 T8, 46369 T9, 46370 T10, 46371 T11, 46372 T12, 46373 T13, 46374 T14, 46375 T15, 46376 T16, 46377 T17, 46378 T18, 46379 T19, 46380 T20, 46381 T21, 46382 T22, 46383 T23, 46384 T24, 46385 T25, 46386 T26, 46387 T27, 46388 T28, 46389 T29, 46390 T30, 46391 T31, 46392 T32, 46393 T33, 46394 T34, 46395 T35, 46396 T36, 46397 T37, 46398 T38, 46399 T39, 46400 T40, 46401 T41, 46402 T42, 46403 T43, 46404 T44, 46405 T45, 46406 T46, 46407 T47, 46408 T48, 46409 T49, 46410 T50, 46411 T51, 46412 T52, 46413 T53, 46414 T54, 46415 T55, 46416 T56, 46417 T57, 46418 T58, 46419 T59, 46420 T60, 46421 T61, 46422 T62, 46423 T63, 46424 T64, 46425 T65, 46426 T66, 46427 T67, 46428 T68, 46429 T69, 46430 T70, 46431 T71, 46432 T72, 46433 T73, 46434 T74, 46435 T75, 46436 T76, 46437 T77, 46438 T78, 46439 T79, 46440 T80, 46441 T81, 46442 T82, 46443 T83, 46444 T84, 46445 T85, 46446 T86, 46447 T87, 46448 NullType, 46449 NullType, 46450 NullType, 46451 NullType, 46452 NullType, 46453 NullType, 46454 NullType, 46455 NullType, 46456 NullType, 46457 NullType, 46458 NullType, 46459 NullType, 46460 NullType, 46461 NullType, 46462 NullType, 46463 NullType, 46464 NullType, 46465 NullType, 46466 NullType, 46467 NullType, 46468 NullType, 46469 NullType, 46470 NullType, 46471 NullType, 46472 NullType, 46473 NullType, 46474 NullType, 46475 NullType, 46476 NullType, 46477 NullType, 46478 NullType, 46479 NullType, 46480 NullType, 46481 NullType, 46482 NullType, 46483 NullType, 46484 NullType, 46485 NullType, 46486 NullType, 46487 NullType> FunctorType; 46488 46489 FunctorType functor_; 46490 46491 functionImplementation_(const FunctorType &functor) : 46492 functor_(functor) 46493 { 46494 } 46495 46496 typedef std::tr1::function<Event ( 46497 const EnqueueArgs&, 46498 T0, 46499 T1, 46500 T2, 46501 T3, 46502 T4, 46503 T5, 46504 T6, 46505 T7, 46506 T8, 46507 T9, 46508 T10, 46509 T11, 46510 T12, 46511 T13, 46512 T14, 46513 T15, 46514 T16, 46515 T17, 46516 T18, 46517 T19, 46518 T20, 46519 T21, 46520 T22, 46521 T23, 46522 T24, 46523 T25, 46524 T26, 46525 T27, 46526 T28, 46527 T29, 46528 T30, 46529 T31, 46530 T32, 46531 T33, 46532 T34, 46533 T35, 46534 T36, 46535 T37, 46536 T38, 46537 T39, 46538 T40, 46539 T41, 46540 T42, 46541 T43, 46542 T44, 46543 T45, 46544 T46, 46545 T47, 46546 T48, 46547 T49, 46548 T50, 46549 T51, 46550 T52, 46551 T53, 46552 T54, 46553 T55, 46554 T56, 46555 T57, 46556 T58, 46557 T59, 46558 T60, 46559 T61, 46560 T62, 46561 T63, 46562 T64, 46563 T65, 46564 T66, 46565 T67, 46566 T68, 46567 T69, 46568 T70, 46569 T71, 46570 T72, 46571 T73, 46572 T74, 46573 T75, 46574 T76, 46575 T77, 46576 T78, 46577 T79, 46578 T80, 46579 T81, 46580 T82, 46581 T83, 46582 T84, 46583 T85, 46584 T86, 46585 T87)> type_; 46586 46587 Event operator()(const EnqueueArgs& enqueueArgs, 46588 T0 arg0, 46589 T1 arg1, 46590 T2 arg2, 46591 T3 arg3, 46592 T4 arg4, 46593 T5 arg5, 46594 T6 arg6, 46595 T7 arg7, 46596 T8 arg8, 46597 T9 arg9, 46598 T10 arg10, 46599 T11 arg11, 46600 T12 arg12, 46601 T13 arg13, 46602 T14 arg14, 46603 T15 arg15, 46604 T16 arg16, 46605 T17 arg17, 46606 T18 arg18, 46607 T19 arg19, 46608 T20 arg20, 46609 T21 arg21, 46610 T22 arg22, 46611 T23 arg23, 46612 T24 arg24, 46613 T25 arg25, 46614 T26 arg26, 46615 T27 arg27, 46616 T28 arg28, 46617 T29 arg29, 46618 T30 arg30, 46619 T31 arg31, 46620 T32 arg32, 46621 T33 arg33, 46622 T34 arg34, 46623 T35 arg35, 46624 T36 arg36, 46625 T37 arg37, 46626 T38 arg38, 46627 T39 arg39, 46628 T40 arg40, 46629 T41 arg41, 46630 T42 arg42, 46631 T43 arg43, 46632 T44 arg44, 46633 T45 arg45, 46634 T46 arg46, 46635 T47 arg47, 46636 T48 arg48, 46637 T49 arg49, 46638 T50 arg50, 46639 T51 arg51, 46640 T52 arg52, 46641 T53 arg53, 46642 T54 arg54, 46643 T55 arg55, 46644 T56 arg56, 46645 T57 arg57, 46646 T58 arg58, 46647 T59 arg59, 46648 T60 arg60, 46649 T61 arg61, 46650 T62 arg62, 46651 T63 arg63, 46652 T64 arg64, 46653 T65 arg65, 46654 T66 arg66, 46655 T67 arg67, 46656 T68 arg68, 46657 T69 arg69, 46658 T70 arg70, 46659 T71 arg71, 46660 T72 arg72, 46661 T73 arg73, 46662 T74 arg74, 46663 T75 arg75, 46664 T76 arg76, 46665 T77 arg77, 46666 T78 arg78, 46667 T79 arg79, 46668 T80 arg80, 46669 T81 arg81, 46670 T82 arg82, 46671 T83 arg83, 46672 T84 arg84, 46673 T85 arg85, 46674 T86 arg86, 46675 T87 arg87) 46676 { 46677 return functor_( 46678 enqueueArgs, 46679 arg0, 46680 arg1, 46681 arg2, 46682 arg3, 46683 arg4, 46684 arg5, 46685 arg6, 46686 arg7, 46687 arg8, 46688 arg9, 46689 arg10, 46690 arg11, 46691 arg12, 46692 arg13, 46693 arg14, 46694 arg15, 46695 arg16, 46696 arg17, 46697 arg18, 46698 arg19, 46699 arg20, 46700 arg21, 46701 arg22, 46702 arg23, 46703 arg24, 46704 arg25, 46705 arg26, 46706 arg27, 46707 arg28, 46708 arg29, 46709 arg30, 46710 arg31, 46711 arg32, 46712 arg33, 46713 arg34, 46714 arg35, 46715 arg36, 46716 arg37, 46717 arg38, 46718 arg39, 46719 arg40, 46720 arg41, 46721 arg42, 46722 arg43, 46723 arg44, 46724 arg45, 46725 arg46, 46726 arg47, 46727 arg48, 46728 arg49, 46729 arg50, 46730 arg51, 46731 arg52, 46732 arg53, 46733 arg54, 46734 arg55, 46735 arg56, 46736 arg57, 46737 arg58, 46738 arg59, 46739 arg60, 46740 arg61, 46741 arg62, 46742 arg63, 46743 arg64, 46744 arg65, 46745 arg66, 46746 arg67, 46747 arg68, 46748 arg69, 46749 arg70, 46750 arg71, 46751 arg72, 46752 arg73, 46753 arg74, 46754 arg75, 46755 arg76, 46756 arg77, 46757 arg78, 46758 arg79, 46759 arg80, 46760 arg81, 46761 arg82, 46762 arg83, 46763 arg84, 46764 arg85, 46765 arg86, 46766 arg87); 46767 } 46768 46769 operator type_ () 46770 { 46771 return type_(*this); 46772 } 46773 46774 }; 46775 46776 template< 46777 typename T0, 46778 typename T1, 46779 typename T2, 46780 typename T3, 46781 typename T4, 46782 typename T5, 46783 typename T6, 46784 typename T7, 46785 typename T8, 46786 typename T9, 46787 typename T10, 46788 typename T11, 46789 typename T12, 46790 typename T13, 46791 typename T14, 46792 typename T15, 46793 typename T16, 46794 typename T17, 46795 typename T18, 46796 typename T19, 46797 typename T20, 46798 typename T21, 46799 typename T22, 46800 typename T23, 46801 typename T24, 46802 typename T25, 46803 typename T26, 46804 typename T27, 46805 typename T28, 46806 typename T29, 46807 typename T30, 46808 typename T31, 46809 typename T32, 46810 typename T33, 46811 typename T34, 46812 typename T35, 46813 typename T36, 46814 typename T37, 46815 typename T38, 46816 typename T39, 46817 typename T40, 46818 typename T41, 46819 typename T42, 46820 typename T43, 46821 typename T44, 46822 typename T45, 46823 typename T46, 46824 typename T47, 46825 typename T48, 46826 typename T49, 46827 typename T50, 46828 typename T51, 46829 typename T52, 46830 typename T53, 46831 typename T54, 46832 typename T55, 46833 typename T56, 46834 typename T57, 46835 typename T58, 46836 typename T59, 46837 typename T60, 46838 typename T61, 46839 typename T62, 46840 typename T63, 46841 typename T64, 46842 typename T65, 46843 typename T66, 46844 typename T67, 46845 typename T68, 46846 typename T69, 46847 typename T70, 46848 typename T71, 46849 typename T72, 46850 typename T73, 46851 typename T74, 46852 typename T75, 46853 typename T76, 46854 typename T77, 46855 typename T78, 46856 typename T79, 46857 typename T80, 46858 typename T81, 46859 typename T82, 46860 typename T83, 46861 typename T84, 46862 typename T85, 46863 typename T86, 46864 typename T87, 46865 typename T88> 46866 struct functionImplementation_< 46867 T0, 46868 T1, 46869 T2, 46870 T3, 46871 T4, 46872 T5, 46873 T6, 46874 T7, 46875 T8, 46876 T9, 46877 T10, 46878 T11, 46879 T12, 46880 T13, 46881 T14, 46882 T15, 46883 T16, 46884 T17, 46885 T18, 46886 T19, 46887 T20, 46888 T21, 46889 T22, 46890 T23, 46891 T24, 46892 T25, 46893 T26, 46894 T27, 46895 T28, 46896 T29, 46897 T30, 46898 T31, 46899 T32, 46900 T33, 46901 T34, 46902 T35, 46903 T36, 46904 T37, 46905 T38, 46906 T39, 46907 T40, 46908 T41, 46909 T42, 46910 T43, 46911 T44, 46912 T45, 46913 T46, 46914 T47, 46915 T48, 46916 T49, 46917 T50, 46918 T51, 46919 T52, 46920 T53, 46921 T54, 46922 T55, 46923 T56, 46924 T57, 46925 T58, 46926 T59, 46927 T60, 46928 T61, 46929 T62, 46930 T63, 46931 T64, 46932 T65, 46933 T66, 46934 T67, 46935 T68, 46936 T69, 46937 T70, 46938 T71, 46939 T72, 46940 T73, 46941 T74, 46942 T75, 46943 T76, 46944 T77, 46945 T78, 46946 T79, 46947 T80, 46948 T81, 46949 T82, 46950 T83, 46951 T84, 46952 T85, 46953 T86, 46954 T87, 46955 T88, 46956 NullType, 46957 NullType, 46958 NullType, 46959 NullType, 46960 NullType, 46961 NullType, 46962 NullType, 46963 NullType, 46964 NullType, 46965 NullType, 46966 NullType, 46967 NullType, 46968 NullType, 46969 NullType, 46970 NullType, 46971 NullType, 46972 NullType, 46973 NullType, 46974 NullType, 46975 NullType, 46976 NullType, 46977 NullType, 46978 NullType, 46979 NullType, 46980 NullType, 46981 NullType, 46982 NullType, 46983 NullType, 46984 NullType, 46985 NullType, 46986 NullType, 46987 NullType, 46988 NullType, 46989 NullType, 46990 NullType, 46991 NullType, 46992 NullType, 46993 NullType, 46994 NullType> 46995 { 46996 typedef detail::KernelFunctorGlobal< 46997 T0, 46998 T1, 46999 T2, 47000 T3, 47001 T4, 47002 T5, 47003 T6, 47004 T7, 47005 T8, 47006 T9, 47007 T10, 47008 T11, 47009 T12, 47010 T13, 47011 T14, 47012 T15, 47013 T16, 47014 T17, 47015 T18, 47016 T19, 47017 T20, 47018 T21, 47019 T22, 47020 T23, 47021 T24, 47022 T25, 47023 T26, 47024 T27, 47025 T28, 47026 T29, 47027 T30, 47028 T31, 47029 T32, 47030 T33, 47031 T34, 47032 T35, 47033 T36, 47034 T37, 47035 T38, 47036 T39, 47037 T40, 47038 T41, 47039 T42, 47040 T43, 47041 T44, 47042 T45, 47043 T46, 47044 T47, 47045 T48, 47046 T49, 47047 T50, 47048 T51, 47049 T52, 47050 T53, 47051 T54, 47052 T55, 47053 T56, 47054 T57, 47055 T58, 47056 T59, 47057 T60, 47058 T61, 47059 T62, 47060 T63, 47061 T64, 47062 T65, 47063 T66, 47064 T67, 47065 T68, 47066 T69, 47067 T70, 47068 T71, 47069 T72, 47070 T73, 47071 T74, 47072 T75, 47073 T76, 47074 T77, 47075 T78, 47076 T79, 47077 T80, 47078 T81, 47079 T82, 47080 T83, 47081 T84, 47082 T85, 47083 T86, 47084 T87, 47085 T88, 47086 NullType, 47087 NullType, 47088 NullType, 47089 NullType, 47090 NullType, 47091 NullType, 47092 NullType, 47093 NullType, 47094 NullType, 47095 NullType, 47096 NullType, 47097 NullType, 47098 NullType, 47099 NullType, 47100 NullType, 47101 NullType, 47102 NullType, 47103 NullType, 47104 NullType, 47105 NullType, 47106 NullType, 47107 NullType, 47108 NullType, 47109 NullType, 47110 NullType, 47111 NullType, 47112 NullType, 47113 NullType, 47114 NullType, 47115 NullType, 47116 NullType, 47117 NullType, 47118 NullType, 47119 NullType, 47120 NullType, 47121 NullType, 47122 NullType, 47123 NullType, 47124 NullType> FunctorType; 47125 47126 FunctorType functor_; 47127 47128 functionImplementation_(const FunctorType &functor) : 47129 functor_(functor) 47130 { 47131 } 47132 47133 typedef std::tr1::function<Event ( 47134 const EnqueueArgs&, 47135 T0, 47136 T1, 47137 T2, 47138 T3, 47139 T4, 47140 T5, 47141 T6, 47142 T7, 47143 T8, 47144 T9, 47145 T10, 47146 T11, 47147 T12, 47148 T13, 47149 T14, 47150 T15, 47151 T16, 47152 T17, 47153 T18, 47154 T19, 47155 T20, 47156 T21, 47157 T22, 47158 T23, 47159 T24, 47160 T25, 47161 T26, 47162 T27, 47163 T28, 47164 T29, 47165 T30, 47166 T31, 47167 T32, 47168 T33, 47169 T34, 47170 T35, 47171 T36, 47172 T37, 47173 T38, 47174 T39, 47175 T40, 47176 T41, 47177 T42, 47178 T43, 47179 T44, 47180 T45, 47181 T46, 47182 T47, 47183 T48, 47184 T49, 47185 T50, 47186 T51, 47187 T52, 47188 T53, 47189 T54, 47190 T55, 47191 T56, 47192 T57, 47193 T58, 47194 T59, 47195 T60, 47196 T61, 47197 T62, 47198 T63, 47199 T64, 47200 T65, 47201 T66, 47202 T67, 47203 T68, 47204 T69, 47205 T70, 47206 T71, 47207 T72, 47208 T73, 47209 T74, 47210 T75, 47211 T76, 47212 T77, 47213 T78, 47214 T79, 47215 T80, 47216 T81, 47217 T82, 47218 T83, 47219 T84, 47220 T85, 47221 T86, 47222 T87, 47223 T88)> type_; 47224 47225 Event operator()(const EnqueueArgs& enqueueArgs, 47226 T0 arg0, 47227 T1 arg1, 47228 T2 arg2, 47229 T3 arg3, 47230 T4 arg4, 47231 T5 arg5, 47232 T6 arg6, 47233 T7 arg7, 47234 T8 arg8, 47235 T9 arg9, 47236 T10 arg10, 47237 T11 arg11, 47238 T12 arg12, 47239 T13 arg13, 47240 T14 arg14, 47241 T15 arg15, 47242 T16 arg16, 47243 T17 arg17, 47244 T18 arg18, 47245 T19 arg19, 47246 T20 arg20, 47247 T21 arg21, 47248 T22 arg22, 47249 T23 arg23, 47250 T24 arg24, 47251 T25 arg25, 47252 T26 arg26, 47253 T27 arg27, 47254 T28 arg28, 47255 T29 arg29, 47256 T30 arg30, 47257 T31 arg31, 47258 T32 arg32, 47259 T33 arg33, 47260 T34 arg34, 47261 T35 arg35, 47262 T36 arg36, 47263 T37 arg37, 47264 T38 arg38, 47265 T39 arg39, 47266 T40 arg40, 47267 T41 arg41, 47268 T42 arg42, 47269 T43 arg43, 47270 T44 arg44, 47271 T45 arg45, 47272 T46 arg46, 47273 T47 arg47, 47274 T48 arg48, 47275 T49 arg49, 47276 T50 arg50, 47277 T51 arg51, 47278 T52 arg52, 47279 T53 arg53, 47280 T54 arg54, 47281 T55 arg55, 47282 T56 arg56, 47283 T57 arg57, 47284 T58 arg58, 47285 T59 arg59, 47286 T60 arg60, 47287 T61 arg61, 47288 T62 arg62, 47289 T63 arg63, 47290 T64 arg64, 47291 T65 arg65, 47292 T66 arg66, 47293 T67 arg67, 47294 T68 arg68, 47295 T69 arg69, 47296 T70 arg70, 47297 T71 arg71, 47298 T72 arg72, 47299 T73 arg73, 47300 T74 arg74, 47301 T75 arg75, 47302 T76 arg76, 47303 T77 arg77, 47304 T78 arg78, 47305 T79 arg79, 47306 T80 arg80, 47307 T81 arg81, 47308 T82 arg82, 47309 T83 arg83, 47310 T84 arg84, 47311 T85 arg85, 47312 T86 arg86, 47313 T87 arg87, 47314 T88 arg88) 47315 { 47316 return functor_( 47317 enqueueArgs, 47318 arg0, 47319 arg1, 47320 arg2, 47321 arg3, 47322 arg4, 47323 arg5, 47324 arg6, 47325 arg7, 47326 arg8, 47327 arg9, 47328 arg10, 47329 arg11, 47330 arg12, 47331 arg13, 47332 arg14, 47333 arg15, 47334 arg16, 47335 arg17, 47336 arg18, 47337 arg19, 47338 arg20, 47339 arg21, 47340 arg22, 47341 arg23, 47342 arg24, 47343 arg25, 47344 arg26, 47345 arg27, 47346 arg28, 47347 arg29, 47348 arg30, 47349 arg31, 47350 arg32, 47351 arg33, 47352 arg34, 47353 arg35, 47354 arg36, 47355 arg37, 47356 arg38, 47357 arg39, 47358 arg40, 47359 arg41, 47360 arg42, 47361 arg43, 47362 arg44, 47363 arg45, 47364 arg46, 47365 arg47, 47366 arg48, 47367 arg49, 47368 arg50, 47369 arg51, 47370 arg52, 47371 arg53, 47372 arg54, 47373 arg55, 47374 arg56, 47375 arg57, 47376 arg58, 47377 arg59, 47378 arg60, 47379 arg61, 47380 arg62, 47381 arg63, 47382 arg64, 47383 arg65, 47384 arg66, 47385 arg67, 47386 arg68, 47387 arg69, 47388 arg70, 47389 arg71, 47390 arg72, 47391 arg73, 47392 arg74, 47393 arg75, 47394 arg76, 47395 arg77, 47396 arg78, 47397 arg79, 47398 arg80, 47399 arg81, 47400 arg82, 47401 arg83, 47402 arg84, 47403 arg85, 47404 arg86, 47405 arg87, 47406 arg88); 47407 } 47408 47409 operator type_ () 47410 { 47411 return type_(*this); 47412 } 47413 47414 }; 47415 47416 template< 47417 typename T0, 47418 typename T1, 47419 typename T2, 47420 typename T3, 47421 typename T4, 47422 typename T5, 47423 typename T6, 47424 typename T7, 47425 typename T8, 47426 typename T9, 47427 typename T10, 47428 typename T11, 47429 typename T12, 47430 typename T13, 47431 typename T14, 47432 typename T15, 47433 typename T16, 47434 typename T17, 47435 typename T18, 47436 typename T19, 47437 typename T20, 47438 typename T21, 47439 typename T22, 47440 typename T23, 47441 typename T24, 47442 typename T25, 47443 typename T26, 47444 typename T27, 47445 typename T28, 47446 typename T29, 47447 typename T30, 47448 typename T31, 47449 typename T32, 47450 typename T33, 47451 typename T34, 47452 typename T35, 47453 typename T36, 47454 typename T37, 47455 typename T38, 47456 typename T39, 47457 typename T40, 47458 typename T41, 47459 typename T42, 47460 typename T43, 47461 typename T44, 47462 typename T45, 47463 typename T46, 47464 typename T47, 47465 typename T48, 47466 typename T49, 47467 typename T50, 47468 typename T51, 47469 typename T52, 47470 typename T53, 47471 typename T54, 47472 typename T55, 47473 typename T56, 47474 typename T57, 47475 typename T58, 47476 typename T59, 47477 typename T60, 47478 typename T61, 47479 typename T62, 47480 typename T63, 47481 typename T64, 47482 typename T65, 47483 typename T66, 47484 typename T67, 47485 typename T68, 47486 typename T69, 47487 typename T70, 47488 typename T71, 47489 typename T72, 47490 typename T73, 47491 typename T74, 47492 typename T75, 47493 typename T76, 47494 typename T77, 47495 typename T78, 47496 typename T79, 47497 typename T80, 47498 typename T81, 47499 typename T82, 47500 typename T83, 47501 typename T84, 47502 typename T85, 47503 typename T86, 47504 typename T87, 47505 typename T88, 47506 typename T89> 47507 struct functionImplementation_< 47508 T0, 47509 T1, 47510 T2, 47511 T3, 47512 T4, 47513 T5, 47514 T6, 47515 T7, 47516 T8, 47517 T9, 47518 T10, 47519 T11, 47520 T12, 47521 T13, 47522 T14, 47523 T15, 47524 T16, 47525 T17, 47526 T18, 47527 T19, 47528 T20, 47529 T21, 47530 T22, 47531 T23, 47532 T24, 47533 T25, 47534 T26, 47535 T27, 47536 T28, 47537 T29, 47538 T30, 47539 T31, 47540 T32, 47541 T33, 47542 T34, 47543 T35, 47544 T36, 47545 T37, 47546 T38, 47547 T39, 47548 T40, 47549 T41, 47550 T42, 47551 T43, 47552 T44, 47553 T45, 47554 T46, 47555 T47, 47556 T48, 47557 T49, 47558 T50, 47559 T51, 47560 T52, 47561 T53, 47562 T54, 47563 T55, 47564 T56, 47565 T57, 47566 T58, 47567 T59, 47568 T60, 47569 T61, 47570 T62, 47571 T63, 47572 T64, 47573 T65, 47574 T66, 47575 T67, 47576 T68, 47577 T69, 47578 T70, 47579 T71, 47580 T72, 47581 T73, 47582 T74, 47583 T75, 47584 T76, 47585 T77, 47586 T78, 47587 T79, 47588 T80, 47589 T81, 47590 T82, 47591 T83, 47592 T84, 47593 T85, 47594 T86, 47595 T87, 47596 T88, 47597 T89, 47598 NullType, 47599 NullType, 47600 NullType, 47601 NullType, 47602 NullType, 47603 NullType, 47604 NullType, 47605 NullType, 47606 NullType, 47607 NullType, 47608 NullType, 47609 NullType, 47610 NullType, 47611 NullType, 47612 NullType, 47613 NullType, 47614 NullType, 47615 NullType, 47616 NullType, 47617 NullType, 47618 NullType, 47619 NullType, 47620 NullType, 47621 NullType, 47622 NullType, 47623 NullType, 47624 NullType, 47625 NullType, 47626 NullType, 47627 NullType, 47628 NullType, 47629 NullType, 47630 NullType, 47631 NullType, 47632 NullType, 47633 NullType, 47634 NullType, 47635 NullType> 47636 { 47637 typedef detail::KernelFunctorGlobal< 47638 T0, 47639 T1, 47640 T2, 47641 T3, 47642 T4, 47643 T5, 47644 T6, 47645 T7, 47646 T8, 47647 T9, 47648 T10, 47649 T11, 47650 T12, 47651 T13, 47652 T14, 47653 T15, 47654 T16, 47655 T17, 47656 T18, 47657 T19, 47658 T20, 47659 T21, 47660 T22, 47661 T23, 47662 T24, 47663 T25, 47664 T26, 47665 T27, 47666 T28, 47667 T29, 47668 T30, 47669 T31, 47670 T32, 47671 T33, 47672 T34, 47673 T35, 47674 T36, 47675 T37, 47676 T38, 47677 T39, 47678 T40, 47679 T41, 47680 T42, 47681 T43, 47682 T44, 47683 T45, 47684 T46, 47685 T47, 47686 T48, 47687 T49, 47688 T50, 47689 T51, 47690 T52, 47691 T53, 47692 T54, 47693 T55, 47694 T56, 47695 T57, 47696 T58, 47697 T59, 47698 T60, 47699 T61, 47700 T62, 47701 T63, 47702 T64, 47703 T65, 47704 T66, 47705 T67, 47706 T68, 47707 T69, 47708 T70, 47709 T71, 47710 T72, 47711 T73, 47712 T74, 47713 T75, 47714 T76, 47715 T77, 47716 T78, 47717 T79, 47718 T80, 47719 T81, 47720 T82, 47721 T83, 47722 T84, 47723 T85, 47724 T86, 47725 T87, 47726 T88, 47727 T89, 47728 NullType, 47729 NullType, 47730 NullType, 47731 NullType, 47732 NullType, 47733 NullType, 47734 NullType, 47735 NullType, 47736 NullType, 47737 NullType, 47738 NullType, 47739 NullType, 47740 NullType, 47741 NullType, 47742 NullType, 47743 NullType, 47744 NullType, 47745 NullType, 47746 NullType, 47747 NullType, 47748 NullType, 47749 NullType, 47750 NullType, 47751 NullType, 47752 NullType, 47753 NullType, 47754 NullType, 47755 NullType, 47756 NullType, 47757 NullType, 47758 NullType, 47759 NullType, 47760 NullType, 47761 NullType, 47762 NullType, 47763 NullType, 47764 NullType, 47765 NullType> FunctorType; 47766 47767 FunctorType functor_; 47768 47769 functionImplementation_(const FunctorType &functor) : 47770 functor_(functor) 47771 { 47772 } 47773 47774 typedef std::tr1::function<Event ( 47775 const EnqueueArgs&, 47776 T0, 47777 T1, 47778 T2, 47779 T3, 47780 T4, 47781 T5, 47782 T6, 47783 T7, 47784 T8, 47785 T9, 47786 T10, 47787 T11, 47788 T12, 47789 T13, 47790 T14, 47791 T15, 47792 T16, 47793 T17, 47794 T18, 47795 T19, 47796 T20, 47797 T21, 47798 T22, 47799 T23, 47800 T24, 47801 T25, 47802 T26, 47803 T27, 47804 T28, 47805 T29, 47806 T30, 47807 T31, 47808 T32, 47809 T33, 47810 T34, 47811 T35, 47812 T36, 47813 T37, 47814 T38, 47815 T39, 47816 T40, 47817 T41, 47818 T42, 47819 T43, 47820 T44, 47821 T45, 47822 T46, 47823 T47, 47824 T48, 47825 T49, 47826 T50, 47827 T51, 47828 T52, 47829 T53, 47830 T54, 47831 T55, 47832 T56, 47833 T57, 47834 T58, 47835 T59, 47836 T60, 47837 T61, 47838 T62, 47839 T63, 47840 T64, 47841 T65, 47842 T66, 47843 T67, 47844 T68, 47845 T69, 47846 T70, 47847 T71, 47848 T72, 47849 T73, 47850 T74, 47851 T75, 47852 T76, 47853 T77, 47854 T78, 47855 T79, 47856 T80, 47857 T81, 47858 T82, 47859 T83, 47860 T84, 47861 T85, 47862 T86, 47863 T87, 47864 T88, 47865 T89)> type_; 47866 47867 Event operator()(const EnqueueArgs& enqueueArgs, 47868 T0 arg0, 47869 T1 arg1, 47870 T2 arg2, 47871 T3 arg3, 47872 T4 arg4, 47873 T5 arg5, 47874 T6 arg6, 47875 T7 arg7, 47876 T8 arg8, 47877 T9 arg9, 47878 T10 arg10, 47879 T11 arg11, 47880 T12 arg12, 47881 T13 arg13, 47882 T14 arg14, 47883 T15 arg15, 47884 T16 arg16, 47885 T17 arg17, 47886 T18 arg18, 47887 T19 arg19, 47888 T20 arg20, 47889 T21 arg21, 47890 T22 arg22, 47891 T23 arg23, 47892 T24 arg24, 47893 T25 arg25, 47894 T26 arg26, 47895 T27 arg27, 47896 T28 arg28, 47897 T29 arg29, 47898 T30 arg30, 47899 T31 arg31, 47900 T32 arg32, 47901 T33 arg33, 47902 T34 arg34, 47903 T35 arg35, 47904 T36 arg36, 47905 T37 arg37, 47906 T38 arg38, 47907 T39 arg39, 47908 T40 arg40, 47909 T41 arg41, 47910 T42 arg42, 47911 T43 arg43, 47912 T44 arg44, 47913 T45 arg45, 47914 T46 arg46, 47915 T47 arg47, 47916 T48 arg48, 47917 T49 arg49, 47918 T50 arg50, 47919 T51 arg51, 47920 T52 arg52, 47921 T53 arg53, 47922 T54 arg54, 47923 T55 arg55, 47924 T56 arg56, 47925 T57 arg57, 47926 T58 arg58, 47927 T59 arg59, 47928 T60 arg60, 47929 T61 arg61, 47930 T62 arg62, 47931 T63 arg63, 47932 T64 arg64, 47933 T65 arg65, 47934 T66 arg66, 47935 T67 arg67, 47936 T68 arg68, 47937 T69 arg69, 47938 T70 arg70, 47939 T71 arg71, 47940 T72 arg72, 47941 T73 arg73, 47942 T74 arg74, 47943 T75 arg75, 47944 T76 arg76, 47945 T77 arg77, 47946 T78 arg78, 47947 T79 arg79, 47948 T80 arg80, 47949 T81 arg81, 47950 T82 arg82, 47951 T83 arg83, 47952 T84 arg84, 47953 T85 arg85, 47954 T86 arg86, 47955 T87 arg87, 47956 T88 arg88, 47957 T89 arg89) 47958 { 47959 return functor_( 47960 enqueueArgs, 47961 arg0, 47962 arg1, 47963 arg2, 47964 arg3, 47965 arg4, 47966 arg5, 47967 arg6, 47968 arg7, 47969 arg8, 47970 arg9, 47971 arg10, 47972 arg11, 47973 arg12, 47974 arg13, 47975 arg14, 47976 arg15, 47977 arg16, 47978 arg17, 47979 arg18, 47980 arg19, 47981 arg20, 47982 arg21, 47983 arg22, 47984 arg23, 47985 arg24, 47986 arg25, 47987 arg26, 47988 arg27, 47989 arg28, 47990 arg29, 47991 arg30, 47992 arg31, 47993 arg32, 47994 arg33, 47995 arg34, 47996 arg35, 47997 arg36, 47998 arg37, 47999 arg38, 48000 arg39, 48001 arg40, 48002 arg41, 48003 arg42, 48004 arg43, 48005 arg44, 48006 arg45, 48007 arg46, 48008 arg47, 48009 arg48, 48010 arg49, 48011 arg50, 48012 arg51, 48013 arg52, 48014 arg53, 48015 arg54, 48016 arg55, 48017 arg56, 48018 arg57, 48019 arg58, 48020 arg59, 48021 arg60, 48022 arg61, 48023 arg62, 48024 arg63, 48025 arg64, 48026 arg65, 48027 arg66, 48028 arg67, 48029 arg68, 48030 arg69, 48031 arg70, 48032 arg71, 48033 arg72, 48034 arg73, 48035 arg74, 48036 arg75, 48037 arg76, 48038 arg77, 48039 arg78, 48040 arg79, 48041 arg80, 48042 arg81, 48043 arg82, 48044 arg83, 48045 arg84, 48046 arg85, 48047 arg86, 48048 arg87, 48049 arg88, 48050 arg89); 48051 } 48052 48053 operator type_ () 48054 { 48055 return type_(*this); 48056 } 48057 48058 }; 48059 48060 template< 48061 typename T0, 48062 typename T1, 48063 typename T2, 48064 typename T3, 48065 typename T4, 48066 typename T5, 48067 typename T6, 48068 typename T7, 48069 typename T8, 48070 typename T9, 48071 typename T10, 48072 typename T11, 48073 typename T12, 48074 typename T13, 48075 typename T14, 48076 typename T15, 48077 typename T16, 48078 typename T17, 48079 typename T18, 48080 typename T19, 48081 typename T20, 48082 typename T21, 48083 typename T22, 48084 typename T23, 48085 typename T24, 48086 typename T25, 48087 typename T26, 48088 typename T27, 48089 typename T28, 48090 typename T29, 48091 typename T30, 48092 typename T31, 48093 typename T32, 48094 typename T33, 48095 typename T34, 48096 typename T35, 48097 typename T36, 48098 typename T37, 48099 typename T38, 48100 typename T39, 48101 typename T40, 48102 typename T41, 48103 typename T42, 48104 typename T43, 48105 typename T44, 48106 typename T45, 48107 typename T46, 48108 typename T47, 48109 typename T48, 48110 typename T49, 48111 typename T50, 48112 typename T51, 48113 typename T52, 48114 typename T53, 48115 typename T54, 48116 typename T55, 48117 typename T56, 48118 typename T57, 48119 typename T58, 48120 typename T59, 48121 typename T60, 48122 typename T61, 48123 typename T62, 48124 typename T63, 48125 typename T64, 48126 typename T65, 48127 typename T66, 48128 typename T67, 48129 typename T68, 48130 typename T69, 48131 typename T70, 48132 typename T71, 48133 typename T72, 48134 typename T73, 48135 typename T74, 48136 typename T75, 48137 typename T76, 48138 typename T77, 48139 typename T78, 48140 typename T79, 48141 typename T80, 48142 typename T81, 48143 typename T82, 48144 typename T83, 48145 typename T84, 48146 typename T85, 48147 typename T86, 48148 typename T87, 48149 typename T88, 48150 typename T89, 48151 typename T90> 48152 struct functionImplementation_< 48153 T0, 48154 T1, 48155 T2, 48156 T3, 48157 T4, 48158 T5, 48159 T6, 48160 T7, 48161 T8, 48162 T9, 48163 T10, 48164 T11, 48165 T12, 48166 T13, 48167 T14, 48168 T15, 48169 T16, 48170 T17, 48171 T18, 48172 T19, 48173 T20, 48174 T21, 48175 T22, 48176 T23, 48177 T24, 48178 T25, 48179 T26, 48180 T27, 48181 T28, 48182 T29, 48183 T30, 48184 T31, 48185 T32, 48186 T33, 48187 T34, 48188 T35, 48189 T36, 48190 T37, 48191 T38, 48192 T39, 48193 T40, 48194 T41, 48195 T42, 48196 T43, 48197 T44, 48198 T45, 48199 T46, 48200 T47, 48201 T48, 48202 T49, 48203 T50, 48204 T51, 48205 T52, 48206 T53, 48207 T54, 48208 T55, 48209 T56, 48210 T57, 48211 T58, 48212 T59, 48213 T60, 48214 T61, 48215 T62, 48216 T63, 48217 T64, 48218 T65, 48219 T66, 48220 T67, 48221 T68, 48222 T69, 48223 T70, 48224 T71, 48225 T72, 48226 T73, 48227 T74, 48228 T75, 48229 T76, 48230 T77, 48231 T78, 48232 T79, 48233 T80, 48234 T81, 48235 T82, 48236 T83, 48237 T84, 48238 T85, 48239 T86, 48240 T87, 48241 T88, 48242 T89, 48243 T90, 48244 NullType, 48245 NullType, 48246 NullType, 48247 NullType, 48248 NullType, 48249 NullType, 48250 NullType, 48251 NullType, 48252 NullType, 48253 NullType, 48254 NullType, 48255 NullType, 48256 NullType, 48257 NullType, 48258 NullType, 48259 NullType, 48260 NullType, 48261 NullType, 48262 NullType, 48263 NullType, 48264 NullType, 48265 NullType, 48266 NullType, 48267 NullType, 48268 NullType, 48269 NullType, 48270 NullType, 48271 NullType, 48272 NullType, 48273 NullType, 48274 NullType, 48275 NullType, 48276 NullType, 48277 NullType, 48278 NullType, 48279 NullType, 48280 NullType> 48281 { 48282 typedef detail::KernelFunctorGlobal< 48283 T0, 48284 T1, 48285 T2, 48286 T3, 48287 T4, 48288 T5, 48289 T6, 48290 T7, 48291 T8, 48292 T9, 48293 T10, 48294 T11, 48295 T12, 48296 T13, 48297 T14, 48298 T15, 48299 T16, 48300 T17, 48301 T18, 48302 T19, 48303 T20, 48304 T21, 48305 T22, 48306 T23, 48307 T24, 48308 T25, 48309 T26, 48310 T27, 48311 T28, 48312 T29, 48313 T30, 48314 T31, 48315 T32, 48316 T33, 48317 T34, 48318 T35, 48319 T36, 48320 T37, 48321 T38, 48322 T39, 48323 T40, 48324 T41, 48325 T42, 48326 T43, 48327 T44, 48328 T45, 48329 T46, 48330 T47, 48331 T48, 48332 T49, 48333 T50, 48334 T51, 48335 T52, 48336 T53, 48337 T54, 48338 T55, 48339 T56, 48340 T57, 48341 T58, 48342 T59, 48343 T60, 48344 T61, 48345 T62, 48346 T63, 48347 T64, 48348 T65, 48349 T66, 48350 T67, 48351 T68, 48352 T69, 48353 T70, 48354 T71, 48355 T72, 48356 T73, 48357 T74, 48358 T75, 48359 T76, 48360 T77, 48361 T78, 48362 T79, 48363 T80, 48364 T81, 48365 T82, 48366 T83, 48367 T84, 48368 T85, 48369 T86, 48370 T87, 48371 T88, 48372 T89, 48373 T90, 48374 NullType, 48375 NullType, 48376 NullType, 48377 NullType, 48378 NullType, 48379 NullType, 48380 NullType, 48381 NullType, 48382 NullType, 48383 NullType, 48384 NullType, 48385 NullType, 48386 NullType, 48387 NullType, 48388 NullType, 48389 NullType, 48390 NullType, 48391 NullType, 48392 NullType, 48393 NullType, 48394 NullType, 48395 NullType, 48396 NullType, 48397 NullType, 48398 NullType, 48399 NullType, 48400 NullType, 48401 NullType, 48402 NullType, 48403 NullType, 48404 NullType, 48405 NullType, 48406 NullType, 48407 NullType, 48408 NullType, 48409 NullType, 48410 NullType> FunctorType; 48411 48412 FunctorType functor_; 48413 48414 functionImplementation_(const FunctorType &functor) : 48415 functor_(functor) 48416 { 48417 } 48418 48419 typedef std::tr1::function<Event ( 48420 const EnqueueArgs&, 48421 T0, 48422 T1, 48423 T2, 48424 T3, 48425 T4, 48426 T5, 48427 T6, 48428 T7, 48429 T8, 48430 T9, 48431 T10, 48432 T11, 48433 T12, 48434 T13, 48435 T14, 48436 T15, 48437 T16, 48438 T17, 48439 T18, 48440 T19, 48441 T20, 48442 T21, 48443 T22, 48444 T23, 48445 T24, 48446 T25, 48447 T26, 48448 T27, 48449 T28, 48450 T29, 48451 T30, 48452 T31, 48453 T32, 48454 T33, 48455 T34, 48456 T35, 48457 T36, 48458 T37, 48459 T38, 48460 T39, 48461 T40, 48462 T41, 48463 T42, 48464 T43, 48465 T44, 48466 T45, 48467 T46, 48468 T47, 48469 T48, 48470 T49, 48471 T50, 48472 T51, 48473 T52, 48474 T53, 48475 T54, 48476 T55, 48477 T56, 48478 T57, 48479 T58, 48480 T59, 48481 T60, 48482 T61, 48483 T62, 48484 T63, 48485 T64, 48486 T65, 48487 T66, 48488 T67, 48489 T68, 48490 T69, 48491 T70, 48492 T71, 48493 T72, 48494 T73, 48495 T74, 48496 T75, 48497 T76, 48498 T77, 48499 T78, 48500 T79, 48501 T80, 48502 T81, 48503 T82, 48504 T83, 48505 T84, 48506 T85, 48507 T86, 48508 T87, 48509 T88, 48510 T89, 48511 T90)> type_; 48512 48513 Event operator()(const EnqueueArgs& enqueueArgs, 48514 T0 arg0, 48515 T1 arg1, 48516 T2 arg2, 48517 T3 arg3, 48518 T4 arg4, 48519 T5 arg5, 48520 T6 arg6, 48521 T7 arg7, 48522 T8 arg8, 48523 T9 arg9, 48524 T10 arg10, 48525 T11 arg11, 48526 T12 arg12, 48527 T13 arg13, 48528 T14 arg14, 48529 T15 arg15, 48530 T16 arg16, 48531 T17 arg17, 48532 T18 arg18, 48533 T19 arg19, 48534 T20 arg20, 48535 T21 arg21, 48536 T22 arg22, 48537 T23 arg23, 48538 T24 arg24, 48539 T25 arg25, 48540 T26 arg26, 48541 T27 arg27, 48542 T28 arg28, 48543 T29 arg29, 48544 T30 arg30, 48545 T31 arg31, 48546 T32 arg32, 48547 T33 arg33, 48548 T34 arg34, 48549 T35 arg35, 48550 T36 arg36, 48551 T37 arg37, 48552 T38 arg38, 48553 T39 arg39, 48554 T40 arg40, 48555 T41 arg41, 48556 T42 arg42, 48557 T43 arg43, 48558 T44 arg44, 48559 T45 arg45, 48560 T46 arg46, 48561 T47 arg47, 48562 T48 arg48, 48563 T49 arg49, 48564 T50 arg50, 48565 T51 arg51, 48566 T52 arg52, 48567 T53 arg53, 48568 T54 arg54, 48569 T55 arg55, 48570 T56 arg56, 48571 T57 arg57, 48572 T58 arg58, 48573 T59 arg59, 48574 T60 arg60, 48575 T61 arg61, 48576 T62 arg62, 48577 T63 arg63, 48578 T64 arg64, 48579 T65 arg65, 48580 T66 arg66, 48581 T67 arg67, 48582 T68 arg68, 48583 T69 arg69, 48584 T70 arg70, 48585 T71 arg71, 48586 T72 arg72, 48587 T73 arg73, 48588 T74 arg74, 48589 T75 arg75, 48590 T76 arg76, 48591 T77 arg77, 48592 T78 arg78, 48593 T79 arg79, 48594 T80 arg80, 48595 T81 arg81, 48596 T82 arg82, 48597 T83 arg83, 48598 T84 arg84, 48599 T85 arg85, 48600 T86 arg86, 48601 T87 arg87, 48602 T88 arg88, 48603 T89 arg89, 48604 T90 arg90) 48605 { 48606 return functor_( 48607 enqueueArgs, 48608 arg0, 48609 arg1, 48610 arg2, 48611 arg3, 48612 arg4, 48613 arg5, 48614 arg6, 48615 arg7, 48616 arg8, 48617 arg9, 48618 arg10, 48619 arg11, 48620 arg12, 48621 arg13, 48622 arg14, 48623 arg15, 48624 arg16, 48625 arg17, 48626 arg18, 48627 arg19, 48628 arg20, 48629 arg21, 48630 arg22, 48631 arg23, 48632 arg24, 48633 arg25, 48634 arg26, 48635 arg27, 48636 arg28, 48637 arg29, 48638 arg30, 48639 arg31, 48640 arg32, 48641 arg33, 48642 arg34, 48643 arg35, 48644 arg36, 48645 arg37, 48646 arg38, 48647 arg39, 48648 arg40, 48649 arg41, 48650 arg42, 48651 arg43, 48652 arg44, 48653 arg45, 48654 arg46, 48655 arg47, 48656 arg48, 48657 arg49, 48658 arg50, 48659 arg51, 48660 arg52, 48661 arg53, 48662 arg54, 48663 arg55, 48664 arg56, 48665 arg57, 48666 arg58, 48667 arg59, 48668 arg60, 48669 arg61, 48670 arg62, 48671 arg63, 48672 arg64, 48673 arg65, 48674 arg66, 48675 arg67, 48676 arg68, 48677 arg69, 48678 arg70, 48679 arg71, 48680 arg72, 48681 arg73, 48682 arg74, 48683 arg75, 48684 arg76, 48685 arg77, 48686 arg78, 48687 arg79, 48688 arg80, 48689 arg81, 48690 arg82, 48691 arg83, 48692 arg84, 48693 arg85, 48694 arg86, 48695 arg87, 48696 arg88, 48697 arg89, 48698 arg90); 48699 } 48700 48701 operator type_ () 48702 { 48703 return type_(*this); 48704 } 48705 48706 }; 48707 48708 template< 48709 typename T0, 48710 typename T1, 48711 typename T2, 48712 typename T3, 48713 typename T4, 48714 typename T5, 48715 typename T6, 48716 typename T7, 48717 typename T8, 48718 typename T9, 48719 typename T10, 48720 typename T11, 48721 typename T12, 48722 typename T13, 48723 typename T14, 48724 typename T15, 48725 typename T16, 48726 typename T17, 48727 typename T18, 48728 typename T19, 48729 typename T20, 48730 typename T21, 48731 typename T22, 48732 typename T23, 48733 typename T24, 48734 typename T25, 48735 typename T26, 48736 typename T27, 48737 typename T28, 48738 typename T29, 48739 typename T30, 48740 typename T31, 48741 typename T32, 48742 typename T33, 48743 typename T34, 48744 typename T35, 48745 typename T36, 48746 typename T37, 48747 typename T38, 48748 typename T39, 48749 typename T40, 48750 typename T41, 48751 typename T42, 48752 typename T43, 48753 typename T44, 48754 typename T45, 48755 typename T46, 48756 typename T47, 48757 typename T48, 48758 typename T49, 48759 typename T50, 48760 typename T51, 48761 typename T52, 48762 typename T53, 48763 typename T54, 48764 typename T55, 48765 typename T56, 48766 typename T57, 48767 typename T58, 48768 typename T59, 48769 typename T60, 48770 typename T61, 48771 typename T62, 48772 typename T63, 48773 typename T64, 48774 typename T65, 48775 typename T66, 48776 typename T67, 48777 typename T68, 48778 typename T69, 48779 typename T70, 48780 typename T71, 48781 typename T72, 48782 typename T73, 48783 typename T74, 48784 typename T75, 48785 typename T76, 48786 typename T77, 48787 typename T78, 48788 typename T79, 48789 typename T80, 48790 typename T81, 48791 typename T82, 48792 typename T83, 48793 typename T84, 48794 typename T85, 48795 typename T86, 48796 typename T87, 48797 typename T88, 48798 typename T89, 48799 typename T90, 48800 typename T91> 48801 struct functionImplementation_< 48802 T0, 48803 T1, 48804 T2, 48805 T3, 48806 T4, 48807 T5, 48808 T6, 48809 T7, 48810 T8, 48811 T9, 48812 T10, 48813 T11, 48814 T12, 48815 T13, 48816 T14, 48817 T15, 48818 T16, 48819 T17, 48820 T18, 48821 T19, 48822 T20, 48823 T21, 48824 T22, 48825 T23, 48826 T24, 48827 T25, 48828 T26, 48829 T27, 48830 T28, 48831 T29, 48832 T30, 48833 T31, 48834 T32, 48835 T33, 48836 T34, 48837 T35, 48838 T36, 48839 T37, 48840 T38, 48841 T39, 48842 T40, 48843 T41, 48844 T42, 48845 T43, 48846 T44, 48847 T45, 48848 T46, 48849 T47, 48850 T48, 48851 T49, 48852 T50, 48853 T51, 48854 T52, 48855 T53, 48856 T54, 48857 T55, 48858 T56, 48859 T57, 48860 T58, 48861 T59, 48862 T60, 48863 T61, 48864 T62, 48865 T63, 48866 T64, 48867 T65, 48868 T66, 48869 T67, 48870 T68, 48871 T69, 48872 T70, 48873 T71, 48874 T72, 48875 T73, 48876 T74, 48877 T75, 48878 T76, 48879 T77, 48880 T78, 48881 T79, 48882 T80, 48883 T81, 48884 T82, 48885 T83, 48886 T84, 48887 T85, 48888 T86, 48889 T87, 48890 T88, 48891 T89, 48892 T90, 48893 T91, 48894 NullType, 48895 NullType, 48896 NullType, 48897 NullType, 48898 NullType, 48899 NullType, 48900 NullType, 48901 NullType, 48902 NullType, 48903 NullType, 48904 NullType, 48905 NullType, 48906 NullType, 48907 NullType, 48908 NullType, 48909 NullType, 48910 NullType, 48911 NullType, 48912 NullType, 48913 NullType, 48914 NullType, 48915 NullType, 48916 NullType, 48917 NullType, 48918 NullType, 48919 NullType, 48920 NullType, 48921 NullType, 48922 NullType, 48923 NullType, 48924 NullType, 48925 NullType, 48926 NullType, 48927 NullType, 48928 NullType, 48929 NullType> 48930 { 48931 typedef detail::KernelFunctorGlobal< 48932 T0, 48933 T1, 48934 T2, 48935 T3, 48936 T4, 48937 T5, 48938 T6, 48939 T7, 48940 T8, 48941 T9, 48942 T10, 48943 T11, 48944 T12, 48945 T13, 48946 T14, 48947 T15, 48948 T16, 48949 T17, 48950 T18, 48951 T19, 48952 T20, 48953 T21, 48954 T22, 48955 T23, 48956 T24, 48957 T25, 48958 T26, 48959 T27, 48960 T28, 48961 T29, 48962 T30, 48963 T31, 48964 T32, 48965 T33, 48966 T34, 48967 T35, 48968 T36, 48969 T37, 48970 T38, 48971 T39, 48972 T40, 48973 T41, 48974 T42, 48975 T43, 48976 T44, 48977 T45, 48978 T46, 48979 T47, 48980 T48, 48981 T49, 48982 T50, 48983 T51, 48984 T52, 48985 T53, 48986 T54, 48987 T55, 48988 T56, 48989 T57, 48990 T58, 48991 T59, 48992 T60, 48993 T61, 48994 T62, 48995 T63, 48996 T64, 48997 T65, 48998 T66, 48999 T67, 49000 T68, 49001 T69, 49002 T70, 49003 T71, 49004 T72, 49005 T73, 49006 T74, 49007 T75, 49008 T76, 49009 T77, 49010 T78, 49011 T79, 49012 T80, 49013 T81, 49014 T82, 49015 T83, 49016 T84, 49017 T85, 49018 T86, 49019 T87, 49020 T88, 49021 T89, 49022 T90, 49023 T91, 49024 NullType, 49025 NullType, 49026 NullType, 49027 NullType, 49028 NullType, 49029 NullType, 49030 NullType, 49031 NullType, 49032 NullType, 49033 NullType, 49034 NullType, 49035 NullType, 49036 NullType, 49037 NullType, 49038 NullType, 49039 NullType, 49040 NullType, 49041 NullType, 49042 NullType, 49043 NullType, 49044 NullType, 49045 NullType, 49046 NullType, 49047 NullType, 49048 NullType, 49049 NullType, 49050 NullType, 49051 NullType, 49052 NullType, 49053 NullType, 49054 NullType, 49055 NullType, 49056 NullType, 49057 NullType, 49058 NullType, 49059 NullType> FunctorType; 49060 49061 FunctorType functor_; 49062 49063 functionImplementation_(const FunctorType &functor) : 49064 functor_(functor) 49065 { 49066 } 49067 49068 typedef std::tr1::function<Event ( 49069 const EnqueueArgs&, 49070 T0, 49071 T1, 49072 T2, 49073 T3, 49074 T4, 49075 T5, 49076 T6, 49077 T7, 49078 T8, 49079 T9, 49080 T10, 49081 T11, 49082 T12, 49083 T13, 49084 T14, 49085 T15, 49086 T16, 49087 T17, 49088 T18, 49089 T19, 49090 T20, 49091 T21, 49092 T22, 49093 T23, 49094 T24, 49095 T25, 49096 T26, 49097 T27, 49098 T28, 49099 T29, 49100 T30, 49101 T31, 49102 T32, 49103 T33, 49104 T34, 49105 T35, 49106 T36, 49107 T37, 49108 T38, 49109 T39, 49110 T40, 49111 T41, 49112 T42, 49113 T43, 49114 T44, 49115 T45, 49116 T46, 49117 T47, 49118 T48, 49119 T49, 49120 T50, 49121 T51, 49122 T52, 49123 T53, 49124 T54, 49125 T55, 49126 T56, 49127 T57, 49128 T58, 49129 T59, 49130 T60, 49131 T61, 49132 T62, 49133 T63, 49134 T64, 49135 T65, 49136 T66, 49137 T67, 49138 T68, 49139 T69, 49140 T70, 49141 T71, 49142 T72, 49143 T73, 49144 T74, 49145 T75, 49146 T76, 49147 T77, 49148 T78, 49149 T79, 49150 T80, 49151 T81, 49152 T82, 49153 T83, 49154 T84, 49155 T85, 49156 T86, 49157 T87, 49158 T88, 49159 T89, 49160 T90, 49161 T91)> type_; 49162 49163 Event operator()(const EnqueueArgs& enqueueArgs, 49164 T0 arg0, 49165 T1 arg1, 49166 T2 arg2, 49167 T3 arg3, 49168 T4 arg4, 49169 T5 arg5, 49170 T6 arg6, 49171 T7 arg7, 49172 T8 arg8, 49173 T9 arg9, 49174 T10 arg10, 49175 T11 arg11, 49176 T12 arg12, 49177 T13 arg13, 49178 T14 arg14, 49179 T15 arg15, 49180 T16 arg16, 49181 T17 arg17, 49182 T18 arg18, 49183 T19 arg19, 49184 T20 arg20, 49185 T21 arg21, 49186 T22 arg22, 49187 T23 arg23, 49188 T24 arg24, 49189 T25 arg25, 49190 T26 arg26, 49191 T27 arg27, 49192 T28 arg28, 49193 T29 arg29, 49194 T30 arg30, 49195 T31 arg31, 49196 T32 arg32, 49197 T33 arg33, 49198 T34 arg34, 49199 T35 arg35, 49200 T36 arg36, 49201 T37 arg37, 49202 T38 arg38, 49203 T39 arg39, 49204 T40 arg40, 49205 T41 arg41, 49206 T42 arg42, 49207 T43 arg43, 49208 T44 arg44, 49209 T45 arg45, 49210 T46 arg46, 49211 T47 arg47, 49212 T48 arg48, 49213 T49 arg49, 49214 T50 arg50, 49215 T51 arg51, 49216 T52 arg52, 49217 T53 arg53, 49218 T54 arg54, 49219 T55 arg55, 49220 T56 arg56, 49221 T57 arg57, 49222 T58 arg58, 49223 T59 arg59, 49224 T60 arg60, 49225 T61 arg61, 49226 T62 arg62, 49227 T63 arg63, 49228 T64 arg64, 49229 T65 arg65, 49230 T66 arg66, 49231 T67 arg67, 49232 T68 arg68, 49233 T69 arg69, 49234 T70 arg70, 49235 T71 arg71, 49236 T72 arg72, 49237 T73 arg73, 49238 T74 arg74, 49239 T75 arg75, 49240 T76 arg76, 49241 T77 arg77, 49242 T78 arg78, 49243 T79 arg79, 49244 T80 arg80, 49245 T81 arg81, 49246 T82 arg82, 49247 T83 arg83, 49248 T84 arg84, 49249 T85 arg85, 49250 T86 arg86, 49251 T87 arg87, 49252 T88 arg88, 49253 T89 arg89, 49254 T90 arg90, 49255 T91 arg91) 49256 { 49257 return functor_( 49258 enqueueArgs, 49259 arg0, 49260 arg1, 49261 arg2, 49262 arg3, 49263 arg4, 49264 arg5, 49265 arg6, 49266 arg7, 49267 arg8, 49268 arg9, 49269 arg10, 49270 arg11, 49271 arg12, 49272 arg13, 49273 arg14, 49274 arg15, 49275 arg16, 49276 arg17, 49277 arg18, 49278 arg19, 49279 arg20, 49280 arg21, 49281 arg22, 49282 arg23, 49283 arg24, 49284 arg25, 49285 arg26, 49286 arg27, 49287 arg28, 49288 arg29, 49289 arg30, 49290 arg31, 49291 arg32, 49292 arg33, 49293 arg34, 49294 arg35, 49295 arg36, 49296 arg37, 49297 arg38, 49298 arg39, 49299 arg40, 49300 arg41, 49301 arg42, 49302 arg43, 49303 arg44, 49304 arg45, 49305 arg46, 49306 arg47, 49307 arg48, 49308 arg49, 49309 arg50, 49310 arg51, 49311 arg52, 49312 arg53, 49313 arg54, 49314 arg55, 49315 arg56, 49316 arg57, 49317 arg58, 49318 arg59, 49319 arg60, 49320 arg61, 49321 arg62, 49322 arg63, 49323 arg64, 49324 arg65, 49325 arg66, 49326 arg67, 49327 arg68, 49328 arg69, 49329 arg70, 49330 arg71, 49331 arg72, 49332 arg73, 49333 arg74, 49334 arg75, 49335 arg76, 49336 arg77, 49337 arg78, 49338 arg79, 49339 arg80, 49340 arg81, 49341 arg82, 49342 arg83, 49343 arg84, 49344 arg85, 49345 arg86, 49346 arg87, 49347 arg88, 49348 arg89, 49349 arg90, 49350 arg91); 49351 } 49352 49353 operator type_ () 49354 { 49355 return type_(*this); 49356 } 49357 49358 }; 49359 49360 template< 49361 typename T0, 49362 typename T1, 49363 typename T2, 49364 typename T3, 49365 typename T4, 49366 typename T5, 49367 typename T6, 49368 typename T7, 49369 typename T8, 49370 typename T9, 49371 typename T10, 49372 typename T11, 49373 typename T12, 49374 typename T13, 49375 typename T14, 49376 typename T15, 49377 typename T16, 49378 typename T17, 49379 typename T18, 49380 typename T19, 49381 typename T20, 49382 typename T21, 49383 typename T22, 49384 typename T23, 49385 typename T24, 49386 typename T25, 49387 typename T26, 49388 typename T27, 49389 typename T28, 49390 typename T29, 49391 typename T30, 49392 typename T31, 49393 typename T32, 49394 typename T33, 49395 typename T34, 49396 typename T35, 49397 typename T36, 49398 typename T37, 49399 typename T38, 49400 typename T39, 49401 typename T40, 49402 typename T41, 49403 typename T42, 49404 typename T43, 49405 typename T44, 49406 typename T45, 49407 typename T46, 49408 typename T47, 49409 typename T48, 49410 typename T49, 49411 typename T50, 49412 typename T51, 49413 typename T52, 49414 typename T53, 49415 typename T54, 49416 typename T55, 49417 typename T56, 49418 typename T57, 49419 typename T58, 49420 typename T59, 49421 typename T60, 49422 typename T61, 49423 typename T62, 49424 typename T63, 49425 typename T64, 49426 typename T65, 49427 typename T66, 49428 typename T67, 49429 typename T68, 49430 typename T69, 49431 typename T70, 49432 typename T71, 49433 typename T72, 49434 typename T73, 49435 typename T74, 49436 typename T75, 49437 typename T76, 49438 typename T77, 49439 typename T78, 49440 typename T79, 49441 typename T80, 49442 typename T81, 49443 typename T82, 49444 typename T83, 49445 typename T84, 49446 typename T85, 49447 typename T86, 49448 typename T87, 49449 typename T88, 49450 typename T89, 49451 typename T90, 49452 typename T91, 49453 typename T92> 49454 struct functionImplementation_< 49455 T0, 49456 T1, 49457 T2, 49458 T3, 49459 T4, 49460 T5, 49461 T6, 49462 T7, 49463 T8, 49464 T9, 49465 T10, 49466 T11, 49467 T12, 49468 T13, 49469 T14, 49470 T15, 49471 T16, 49472 T17, 49473 T18, 49474 T19, 49475 T20, 49476 T21, 49477 T22, 49478 T23, 49479 T24, 49480 T25, 49481 T26, 49482 T27, 49483 T28, 49484 T29, 49485 T30, 49486 T31, 49487 T32, 49488 T33, 49489 T34, 49490 T35, 49491 T36, 49492 T37, 49493 T38, 49494 T39, 49495 T40, 49496 T41, 49497 T42, 49498 T43, 49499 T44, 49500 T45, 49501 T46, 49502 T47, 49503 T48, 49504 T49, 49505 T50, 49506 T51, 49507 T52, 49508 T53, 49509 T54, 49510 T55, 49511 T56, 49512 T57, 49513 T58, 49514 T59, 49515 T60, 49516 T61, 49517 T62, 49518 T63, 49519 T64, 49520 T65, 49521 T66, 49522 T67, 49523 T68, 49524 T69, 49525 T70, 49526 T71, 49527 T72, 49528 T73, 49529 T74, 49530 T75, 49531 T76, 49532 T77, 49533 T78, 49534 T79, 49535 T80, 49536 T81, 49537 T82, 49538 T83, 49539 T84, 49540 T85, 49541 T86, 49542 T87, 49543 T88, 49544 T89, 49545 T90, 49546 T91, 49547 T92, 49548 NullType, 49549 NullType, 49550 NullType, 49551 NullType, 49552 NullType, 49553 NullType, 49554 NullType, 49555 NullType, 49556 NullType, 49557 NullType, 49558 NullType, 49559 NullType, 49560 NullType, 49561 NullType, 49562 NullType, 49563 NullType, 49564 NullType, 49565 NullType, 49566 NullType, 49567 NullType, 49568 NullType, 49569 NullType, 49570 NullType, 49571 NullType, 49572 NullType, 49573 NullType, 49574 NullType, 49575 NullType, 49576 NullType, 49577 NullType, 49578 NullType, 49579 NullType, 49580 NullType, 49581 NullType, 49582 NullType> 49583 { 49584 typedef detail::KernelFunctorGlobal< 49585 T0, 49586 T1, 49587 T2, 49588 T3, 49589 T4, 49590 T5, 49591 T6, 49592 T7, 49593 T8, 49594 T9, 49595 T10, 49596 T11, 49597 T12, 49598 T13, 49599 T14, 49600 T15, 49601 T16, 49602 T17, 49603 T18, 49604 T19, 49605 T20, 49606 T21, 49607 T22, 49608 T23, 49609 T24, 49610 T25, 49611 T26, 49612 T27, 49613 T28, 49614 T29, 49615 T30, 49616 T31, 49617 T32, 49618 T33, 49619 T34, 49620 T35, 49621 T36, 49622 T37, 49623 T38, 49624 T39, 49625 T40, 49626 T41, 49627 T42, 49628 T43, 49629 T44, 49630 T45, 49631 T46, 49632 T47, 49633 T48, 49634 T49, 49635 T50, 49636 T51, 49637 T52, 49638 T53, 49639 T54, 49640 T55, 49641 T56, 49642 T57, 49643 T58, 49644 T59, 49645 T60, 49646 T61, 49647 T62, 49648 T63, 49649 T64, 49650 T65, 49651 T66, 49652 T67, 49653 T68, 49654 T69, 49655 T70, 49656 T71, 49657 T72, 49658 T73, 49659 T74, 49660 T75, 49661 T76, 49662 T77, 49663 T78, 49664 T79, 49665 T80, 49666 T81, 49667 T82, 49668 T83, 49669 T84, 49670 T85, 49671 T86, 49672 T87, 49673 T88, 49674 T89, 49675 T90, 49676 T91, 49677 T92, 49678 NullType, 49679 NullType, 49680 NullType, 49681 NullType, 49682 NullType, 49683 NullType, 49684 NullType, 49685 NullType, 49686 NullType, 49687 NullType, 49688 NullType, 49689 NullType, 49690 NullType, 49691 NullType, 49692 NullType, 49693 NullType, 49694 NullType, 49695 NullType, 49696 NullType, 49697 NullType, 49698 NullType, 49699 NullType, 49700 NullType, 49701 NullType, 49702 NullType, 49703 NullType, 49704 NullType, 49705 NullType, 49706 NullType, 49707 NullType, 49708 NullType, 49709 NullType, 49710 NullType, 49711 NullType, 49712 NullType> FunctorType; 49713 49714 FunctorType functor_; 49715 49716 functionImplementation_(const FunctorType &functor) : 49717 functor_(functor) 49718 { 49719 } 49720 49721 typedef std::tr1::function<Event ( 49722 const EnqueueArgs&, 49723 T0, 49724 T1, 49725 T2, 49726 T3, 49727 T4, 49728 T5, 49729 T6, 49730 T7, 49731 T8, 49732 T9, 49733 T10, 49734 T11, 49735 T12, 49736 T13, 49737 T14, 49738 T15, 49739 T16, 49740 T17, 49741 T18, 49742 T19, 49743 T20, 49744 T21, 49745 T22, 49746 T23, 49747 T24, 49748 T25, 49749 T26, 49750 T27, 49751 T28, 49752 T29, 49753 T30, 49754 T31, 49755 T32, 49756 T33, 49757 T34, 49758 T35, 49759 T36, 49760 T37, 49761 T38, 49762 T39, 49763 T40, 49764 T41, 49765 T42, 49766 T43, 49767 T44, 49768 T45, 49769 T46, 49770 T47, 49771 T48, 49772 T49, 49773 T50, 49774 T51, 49775 T52, 49776 T53, 49777 T54, 49778 T55, 49779 T56, 49780 T57, 49781 T58, 49782 T59, 49783 T60, 49784 T61, 49785 T62, 49786 T63, 49787 T64, 49788 T65, 49789 T66, 49790 T67, 49791 T68, 49792 T69, 49793 T70, 49794 T71, 49795 T72, 49796 T73, 49797 T74, 49798 T75, 49799 T76, 49800 T77, 49801 T78, 49802 T79, 49803 T80, 49804 T81, 49805 T82, 49806 T83, 49807 T84, 49808 T85, 49809 T86, 49810 T87, 49811 T88, 49812 T89, 49813 T90, 49814 T91, 49815 T92)> type_; 49816 49817 Event operator()(const EnqueueArgs& enqueueArgs, 49818 T0 arg0, 49819 T1 arg1, 49820 T2 arg2, 49821 T3 arg3, 49822 T4 arg4, 49823 T5 arg5, 49824 T6 arg6, 49825 T7 arg7, 49826 T8 arg8, 49827 T9 arg9, 49828 T10 arg10, 49829 T11 arg11, 49830 T12 arg12, 49831 T13 arg13, 49832 T14 arg14, 49833 T15 arg15, 49834 T16 arg16, 49835 T17 arg17, 49836 T18 arg18, 49837 T19 arg19, 49838 T20 arg20, 49839 T21 arg21, 49840 T22 arg22, 49841 T23 arg23, 49842 T24 arg24, 49843 T25 arg25, 49844 T26 arg26, 49845 T27 arg27, 49846 T28 arg28, 49847 T29 arg29, 49848 T30 arg30, 49849 T31 arg31, 49850 T32 arg32, 49851 T33 arg33, 49852 T34 arg34, 49853 T35 arg35, 49854 T36 arg36, 49855 T37 arg37, 49856 T38 arg38, 49857 T39 arg39, 49858 T40 arg40, 49859 T41 arg41, 49860 T42 arg42, 49861 T43 arg43, 49862 T44 arg44, 49863 T45 arg45, 49864 T46 arg46, 49865 T47 arg47, 49866 T48 arg48, 49867 T49 arg49, 49868 T50 arg50, 49869 T51 arg51, 49870 T52 arg52, 49871 T53 arg53, 49872 T54 arg54, 49873 T55 arg55, 49874 T56 arg56, 49875 T57 arg57, 49876 T58 arg58, 49877 T59 arg59, 49878 T60 arg60, 49879 T61 arg61, 49880 T62 arg62, 49881 T63 arg63, 49882 T64 arg64, 49883 T65 arg65, 49884 T66 arg66, 49885 T67 arg67, 49886 T68 arg68, 49887 T69 arg69, 49888 T70 arg70, 49889 T71 arg71, 49890 T72 arg72, 49891 T73 arg73, 49892 T74 arg74, 49893 T75 arg75, 49894 T76 arg76, 49895 T77 arg77, 49896 T78 arg78, 49897 T79 arg79, 49898 T80 arg80, 49899 T81 arg81, 49900 T82 arg82, 49901 T83 arg83, 49902 T84 arg84, 49903 T85 arg85, 49904 T86 arg86, 49905 T87 arg87, 49906 T88 arg88, 49907 T89 arg89, 49908 T90 arg90, 49909 T91 arg91, 49910 T92 arg92) 49911 { 49912 return functor_( 49913 enqueueArgs, 49914 arg0, 49915 arg1, 49916 arg2, 49917 arg3, 49918 arg4, 49919 arg5, 49920 arg6, 49921 arg7, 49922 arg8, 49923 arg9, 49924 arg10, 49925 arg11, 49926 arg12, 49927 arg13, 49928 arg14, 49929 arg15, 49930 arg16, 49931 arg17, 49932 arg18, 49933 arg19, 49934 arg20, 49935 arg21, 49936 arg22, 49937 arg23, 49938 arg24, 49939 arg25, 49940 arg26, 49941 arg27, 49942 arg28, 49943 arg29, 49944 arg30, 49945 arg31, 49946 arg32, 49947 arg33, 49948 arg34, 49949 arg35, 49950 arg36, 49951 arg37, 49952 arg38, 49953 arg39, 49954 arg40, 49955 arg41, 49956 arg42, 49957 arg43, 49958 arg44, 49959 arg45, 49960 arg46, 49961 arg47, 49962 arg48, 49963 arg49, 49964 arg50, 49965 arg51, 49966 arg52, 49967 arg53, 49968 arg54, 49969 arg55, 49970 arg56, 49971 arg57, 49972 arg58, 49973 arg59, 49974 arg60, 49975 arg61, 49976 arg62, 49977 arg63, 49978 arg64, 49979 arg65, 49980 arg66, 49981 arg67, 49982 arg68, 49983 arg69, 49984 arg70, 49985 arg71, 49986 arg72, 49987 arg73, 49988 arg74, 49989 arg75, 49990 arg76, 49991 arg77, 49992 arg78, 49993 arg79, 49994 arg80, 49995 arg81, 49996 arg82, 49997 arg83, 49998 arg84, 49999 arg85, 50000 arg86, 50001 arg87, 50002 arg88, 50003 arg89, 50004 arg90, 50005 arg91, 50006 arg92); 50007 } 50008 50009 operator type_ () 50010 { 50011 return type_(*this); 50012 } 50013 50014 }; 50015 50016 template< 50017 typename T0, 50018 typename T1, 50019 typename T2, 50020 typename T3, 50021 typename T4, 50022 typename T5, 50023 typename T6, 50024 typename T7, 50025 typename T8, 50026 typename T9, 50027 typename T10, 50028 typename T11, 50029 typename T12, 50030 typename T13, 50031 typename T14, 50032 typename T15, 50033 typename T16, 50034 typename T17, 50035 typename T18, 50036 typename T19, 50037 typename T20, 50038 typename T21, 50039 typename T22, 50040 typename T23, 50041 typename T24, 50042 typename T25, 50043 typename T26, 50044 typename T27, 50045 typename T28, 50046 typename T29, 50047 typename T30, 50048 typename T31, 50049 typename T32, 50050 typename T33, 50051 typename T34, 50052 typename T35, 50053 typename T36, 50054 typename T37, 50055 typename T38, 50056 typename T39, 50057 typename T40, 50058 typename T41, 50059 typename T42, 50060 typename T43, 50061 typename T44, 50062 typename T45, 50063 typename T46, 50064 typename T47, 50065 typename T48, 50066 typename T49, 50067 typename T50, 50068 typename T51, 50069 typename T52, 50070 typename T53, 50071 typename T54, 50072 typename T55, 50073 typename T56, 50074 typename T57, 50075 typename T58, 50076 typename T59, 50077 typename T60, 50078 typename T61, 50079 typename T62, 50080 typename T63, 50081 typename T64, 50082 typename T65, 50083 typename T66, 50084 typename T67, 50085 typename T68, 50086 typename T69, 50087 typename T70, 50088 typename T71, 50089 typename T72, 50090 typename T73, 50091 typename T74, 50092 typename T75, 50093 typename T76, 50094 typename T77, 50095 typename T78, 50096 typename T79, 50097 typename T80, 50098 typename T81, 50099 typename T82, 50100 typename T83, 50101 typename T84, 50102 typename T85, 50103 typename T86, 50104 typename T87, 50105 typename T88, 50106 typename T89, 50107 typename T90, 50108 typename T91, 50109 typename T92, 50110 typename T93> 50111 struct functionImplementation_< 50112 T0, 50113 T1, 50114 T2, 50115 T3, 50116 T4, 50117 T5, 50118 T6, 50119 T7, 50120 T8, 50121 T9, 50122 T10, 50123 T11, 50124 T12, 50125 T13, 50126 T14, 50127 T15, 50128 T16, 50129 T17, 50130 T18, 50131 T19, 50132 T20, 50133 T21, 50134 T22, 50135 T23, 50136 T24, 50137 T25, 50138 T26, 50139 T27, 50140 T28, 50141 T29, 50142 T30, 50143 T31, 50144 T32, 50145 T33, 50146 T34, 50147 T35, 50148 T36, 50149 T37, 50150 T38, 50151 T39, 50152 T40, 50153 T41, 50154 T42, 50155 T43, 50156 T44, 50157 T45, 50158 T46, 50159 T47, 50160 T48, 50161 T49, 50162 T50, 50163 T51, 50164 T52, 50165 T53, 50166 T54, 50167 T55, 50168 T56, 50169 T57, 50170 T58, 50171 T59, 50172 T60, 50173 T61, 50174 T62, 50175 T63, 50176 T64, 50177 T65, 50178 T66, 50179 T67, 50180 T68, 50181 T69, 50182 T70, 50183 T71, 50184 T72, 50185 T73, 50186 T74, 50187 T75, 50188 T76, 50189 T77, 50190 T78, 50191 T79, 50192 T80, 50193 T81, 50194 T82, 50195 T83, 50196 T84, 50197 T85, 50198 T86, 50199 T87, 50200 T88, 50201 T89, 50202 T90, 50203 T91, 50204 T92, 50205 T93, 50206 NullType, 50207 NullType, 50208 NullType, 50209 NullType, 50210 NullType, 50211 NullType, 50212 NullType, 50213 NullType, 50214 NullType, 50215 NullType, 50216 NullType, 50217 NullType, 50218 NullType, 50219 NullType, 50220 NullType, 50221 NullType, 50222 NullType, 50223 NullType, 50224 NullType, 50225 NullType, 50226 NullType, 50227 NullType, 50228 NullType, 50229 NullType, 50230 NullType, 50231 NullType, 50232 NullType, 50233 NullType, 50234 NullType, 50235 NullType, 50236 NullType, 50237 NullType, 50238 NullType, 50239 NullType> 50240 { 50241 typedef detail::KernelFunctorGlobal< 50242 T0, 50243 T1, 50244 T2, 50245 T3, 50246 T4, 50247 T5, 50248 T6, 50249 T7, 50250 T8, 50251 T9, 50252 T10, 50253 T11, 50254 T12, 50255 T13, 50256 T14, 50257 T15, 50258 T16, 50259 T17, 50260 T18, 50261 T19, 50262 T20, 50263 T21, 50264 T22, 50265 T23, 50266 T24, 50267 T25, 50268 T26, 50269 T27, 50270 T28, 50271 T29, 50272 T30, 50273 T31, 50274 T32, 50275 T33, 50276 T34, 50277 T35, 50278 T36, 50279 T37, 50280 T38, 50281 T39, 50282 T40, 50283 T41, 50284 T42, 50285 T43, 50286 T44, 50287 T45, 50288 T46, 50289 T47, 50290 T48, 50291 T49, 50292 T50, 50293 T51, 50294 T52, 50295 T53, 50296 T54, 50297 T55, 50298 T56, 50299 T57, 50300 T58, 50301 T59, 50302 T60, 50303 T61, 50304 T62, 50305 T63, 50306 T64, 50307 T65, 50308 T66, 50309 T67, 50310 T68, 50311 T69, 50312 T70, 50313 T71, 50314 T72, 50315 T73, 50316 T74, 50317 T75, 50318 T76, 50319 T77, 50320 T78, 50321 T79, 50322 T80, 50323 T81, 50324 T82, 50325 T83, 50326 T84, 50327 T85, 50328 T86, 50329 T87, 50330 T88, 50331 T89, 50332 T90, 50333 T91, 50334 T92, 50335 T93, 50336 NullType, 50337 NullType, 50338 NullType, 50339 NullType, 50340 NullType, 50341 NullType, 50342 NullType, 50343 NullType, 50344 NullType, 50345 NullType, 50346 NullType, 50347 NullType, 50348 NullType, 50349 NullType, 50350 NullType, 50351 NullType, 50352 NullType, 50353 NullType, 50354 NullType, 50355 NullType, 50356 NullType, 50357 NullType, 50358 NullType, 50359 NullType, 50360 NullType, 50361 NullType, 50362 NullType, 50363 NullType, 50364 NullType, 50365 NullType, 50366 NullType, 50367 NullType, 50368 NullType, 50369 NullType> FunctorType; 50370 50371 FunctorType functor_; 50372 50373 functionImplementation_(const FunctorType &functor) : 50374 functor_(functor) 50375 { 50376 } 50377 50378 typedef std::tr1::function<Event ( 50379 const EnqueueArgs&, 50380 T0, 50381 T1, 50382 T2, 50383 T3, 50384 T4, 50385 T5, 50386 T6, 50387 T7, 50388 T8, 50389 T9, 50390 T10, 50391 T11, 50392 T12, 50393 T13, 50394 T14, 50395 T15, 50396 T16, 50397 T17, 50398 T18, 50399 T19, 50400 T20, 50401 T21, 50402 T22, 50403 T23, 50404 T24, 50405 T25, 50406 T26, 50407 T27, 50408 T28, 50409 T29, 50410 T30, 50411 T31, 50412 T32, 50413 T33, 50414 T34, 50415 T35, 50416 T36, 50417 T37, 50418 T38, 50419 T39, 50420 T40, 50421 T41, 50422 T42, 50423 T43, 50424 T44, 50425 T45, 50426 T46, 50427 T47, 50428 T48, 50429 T49, 50430 T50, 50431 T51, 50432 T52, 50433 T53, 50434 T54, 50435 T55, 50436 T56, 50437 T57, 50438 T58, 50439 T59, 50440 T60, 50441 T61, 50442 T62, 50443 T63, 50444 T64, 50445 T65, 50446 T66, 50447 T67, 50448 T68, 50449 T69, 50450 T70, 50451 T71, 50452 T72, 50453 T73, 50454 T74, 50455 T75, 50456 T76, 50457 T77, 50458 T78, 50459 T79, 50460 T80, 50461 T81, 50462 T82, 50463 T83, 50464 T84, 50465 T85, 50466 T86, 50467 T87, 50468 T88, 50469 T89, 50470 T90, 50471 T91, 50472 T92, 50473 T93)> type_; 50474 50475 Event operator()(const EnqueueArgs& enqueueArgs, 50476 T0 arg0, 50477 T1 arg1, 50478 T2 arg2, 50479 T3 arg3, 50480 T4 arg4, 50481 T5 arg5, 50482 T6 arg6, 50483 T7 arg7, 50484 T8 arg8, 50485 T9 arg9, 50486 T10 arg10, 50487 T11 arg11, 50488 T12 arg12, 50489 T13 arg13, 50490 T14 arg14, 50491 T15 arg15, 50492 T16 arg16, 50493 T17 arg17, 50494 T18 arg18, 50495 T19 arg19, 50496 T20 arg20, 50497 T21 arg21, 50498 T22 arg22, 50499 T23 arg23, 50500 T24 arg24, 50501 T25 arg25, 50502 T26 arg26, 50503 T27 arg27, 50504 T28 arg28, 50505 T29 arg29, 50506 T30 arg30, 50507 T31 arg31, 50508 T32 arg32, 50509 T33 arg33, 50510 T34 arg34, 50511 T35 arg35, 50512 T36 arg36, 50513 T37 arg37, 50514 T38 arg38, 50515 T39 arg39, 50516 T40 arg40, 50517 T41 arg41, 50518 T42 arg42, 50519 T43 arg43, 50520 T44 arg44, 50521 T45 arg45, 50522 T46 arg46, 50523 T47 arg47, 50524 T48 arg48, 50525 T49 arg49, 50526 T50 arg50, 50527 T51 arg51, 50528 T52 arg52, 50529 T53 arg53, 50530 T54 arg54, 50531 T55 arg55, 50532 T56 arg56, 50533 T57 arg57, 50534 T58 arg58, 50535 T59 arg59, 50536 T60 arg60, 50537 T61 arg61, 50538 T62 arg62, 50539 T63 arg63, 50540 T64 arg64, 50541 T65 arg65, 50542 T66 arg66, 50543 T67 arg67, 50544 T68 arg68, 50545 T69 arg69, 50546 T70 arg70, 50547 T71 arg71, 50548 T72 arg72, 50549 T73 arg73, 50550 T74 arg74, 50551 T75 arg75, 50552 T76 arg76, 50553 T77 arg77, 50554 T78 arg78, 50555 T79 arg79, 50556 T80 arg80, 50557 T81 arg81, 50558 T82 arg82, 50559 T83 arg83, 50560 T84 arg84, 50561 T85 arg85, 50562 T86 arg86, 50563 T87 arg87, 50564 T88 arg88, 50565 T89 arg89, 50566 T90 arg90, 50567 T91 arg91, 50568 T92 arg92, 50569 T93 arg93) 50570 { 50571 return functor_( 50572 enqueueArgs, 50573 arg0, 50574 arg1, 50575 arg2, 50576 arg3, 50577 arg4, 50578 arg5, 50579 arg6, 50580 arg7, 50581 arg8, 50582 arg9, 50583 arg10, 50584 arg11, 50585 arg12, 50586 arg13, 50587 arg14, 50588 arg15, 50589 arg16, 50590 arg17, 50591 arg18, 50592 arg19, 50593 arg20, 50594 arg21, 50595 arg22, 50596 arg23, 50597 arg24, 50598 arg25, 50599 arg26, 50600 arg27, 50601 arg28, 50602 arg29, 50603 arg30, 50604 arg31, 50605 arg32, 50606 arg33, 50607 arg34, 50608 arg35, 50609 arg36, 50610 arg37, 50611 arg38, 50612 arg39, 50613 arg40, 50614 arg41, 50615 arg42, 50616 arg43, 50617 arg44, 50618 arg45, 50619 arg46, 50620 arg47, 50621 arg48, 50622 arg49, 50623 arg50, 50624 arg51, 50625 arg52, 50626 arg53, 50627 arg54, 50628 arg55, 50629 arg56, 50630 arg57, 50631 arg58, 50632 arg59, 50633 arg60, 50634 arg61, 50635 arg62, 50636 arg63, 50637 arg64, 50638 arg65, 50639 arg66, 50640 arg67, 50641 arg68, 50642 arg69, 50643 arg70, 50644 arg71, 50645 arg72, 50646 arg73, 50647 arg74, 50648 arg75, 50649 arg76, 50650 arg77, 50651 arg78, 50652 arg79, 50653 arg80, 50654 arg81, 50655 arg82, 50656 arg83, 50657 arg84, 50658 arg85, 50659 arg86, 50660 arg87, 50661 arg88, 50662 arg89, 50663 arg90, 50664 arg91, 50665 arg92, 50666 arg93); 50667 } 50668 50669 operator type_ () 50670 { 50671 return type_(*this); 50672 } 50673 50674 }; 50675 50676 template< 50677 typename T0, 50678 typename T1, 50679 typename T2, 50680 typename T3, 50681 typename T4, 50682 typename T5, 50683 typename T6, 50684 typename T7, 50685 typename T8, 50686 typename T9, 50687 typename T10, 50688 typename T11, 50689 typename T12, 50690 typename T13, 50691 typename T14, 50692 typename T15, 50693 typename T16, 50694 typename T17, 50695 typename T18, 50696 typename T19, 50697 typename T20, 50698 typename T21, 50699 typename T22, 50700 typename T23, 50701 typename T24, 50702 typename T25, 50703 typename T26, 50704 typename T27, 50705 typename T28, 50706 typename T29, 50707 typename T30, 50708 typename T31, 50709 typename T32, 50710 typename T33, 50711 typename T34, 50712 typename T35, 50713 typename T36, 50714 typename T37, 50715 typename T38, 50716 typename T39, 50717 typename T40, 50718 typename T41, 50719 typename T42, 50720 typename T43, 50721 typename T44, 50722 typename T45, 50723 typename T46, 50724 typename T47, 50725 typename T48, 50726 typename T49, 50727 typename T50, 50728 typename T51, 50729 typename T52, 50730 typename T53, 50731 typename T54, 50732 typename T55, 50733 typename T56, 50734 typename T57, 50735 typename T58, 50736 typename T59, 50737 typename T60, 50738 typename T61, 50739 typename T62, 50740 typename T63, 50741 typename T64, 50742 typename T65, 50743 typename T66, 50744 typename T67, 50745 typename T68, 50746 typename T69, 50747 typename T70, 50748 typename T71, 50749 typename T72, 50750 typename T73, 50751 typename T74, 50752 typename T75, 50753 typename T76, 50754 typename T77, 50755 typename T78, 50756 typename T79, 50757 typename T80, 50758 typename T81, 50759 typename T82, 50760 typename T83, 50761 typename T84, 50762 typename T85, 50763 typename T86, 50764 typename T87, 50765 typename T88, 50766 typename T89, 50767 typename T90, 50768 typename T91, 50769 typename T92, 50770 typename T93, 50771 typename T94> 50772 struct functionImplementation_< 50773 T0, 50774 T1, 50775 T2, 50776 T3, 50777 T4, 50778 T5, 50779 T6, 50780 T7, 50781 T8, 50782 T9, 50783 T10, 50784 T11, 50785 T12, 50786 T13, 50787 T14, 50788 T15, 50789 T16, 50790 T17, 50791 T18, 50792 T19, 50793 T20, 50794 T21, 50795 T22, 50796 T23, 50797 T24, 50798 T25, 50799 T26, 50800 T27, 50801 T28, 50802 T29, 50803 T30, 50804 T31, 50805 T32, 50806 T33, 50807 T34, 50808 T35, 50809 T36, 50810 T37, 50811 T38, 50812 T39, 50813 T40, 50814 T41, 50815 T42, 50816 T43, 50817 T44, 50818 T45, 50819 T46, 50820 T47, 50821 T48, 50822 T49, 50823 T50, 50824 T51, 50825 T52, 50826 T53, 50827 T54, 50828 T55, 50829 T56, 50830 T57, 50831 T58, 50832 T59, 50833 T60, 50834 T61, 50835 T62, 50836 T63, 50837 T64, 50838 T65, 50839 T66, 50840 T67, 50841 T68, 50842 T69, 50843 T70, 50844 T71, 50845 T72, 50846 T73, 50847 T74, 50848 T75, 50849 T76, 50850 T77, 50851 T78, 50852 T79, 50853 T80, 50854 T81, 50855 T82, 50856 T83, 50857 T84, 50858 T85, 50859 T86, 50860 T87, 50861 T88, 50862 T89, 50863 T90, 50864 T91, 50865 T92, 50866 T93, 50867 T94, 50868 NullType, 50869 NullType, 50870 NullType, 50871 NullType, 50872 NullType, 50873 NullType, 50874 NullType, 50875 NullType, 50876 NullType, 50877 NullType, 50878 NullType, 50879 NullType, 50880 NullType, 50881 NullType, 50882 NullType, 50883 NullType, 50884 NullType, 50885 NullType, 50886 NullType, 50887 NullType, 50888 NullType, 50889 NullType, 50890 NullType, 50891 NullType, 50892 NullType, 50893 NullType, 50894 NullType, 50895 NullType, 50896 NullType, 50897 NullType, 50898 NullType, 50899 NullType, 50900 NullType> 50901 { 50902 typedef detail::KernelFunctorGlobal< 50903 T0, 50904 T1, 50905 T2, 50906 T3, 50907 T4, 50908 T5, 50909 T6, 50910 T7, 50911 T8, 50912 T9, 50913 T10, 50914 T11, 50915 T12, 50916 T13, 50917 T14, 50918 T15, 50919 T16, 50920 T17, 50921 T18, 50922 T19, 50923 T20, 50924 T21, 50925 T22, 50926 T23, 50927 T24, 50928 T25, 50929 T26, 50930 T27, 50931 T28, 50932 T29, 50933 T30, 50934 T31, 50935 T32, 50936 T33, 50937 T34, 50938 T35, 50939 T36, 50940 T37, 50941 T38, 50942 T39, 50943 T40, 50944 T41, 50945 T42, 50946 T43, 50947 T44, 50948 T45, 50949 T46, 50950 T47, 50951 T48, 50952 T49, 50953 T50, 50954 T51, 50955 T52, 50956 T53, 50957 T54, 50958 T55, 50959 T56, 50960 T57, 50961 T58, 50962 T59, 50963 T60, 50964 T61, 50965 T62, 50966 T63, 50967 T64, 50968 T65, 50969 T66, 50970 T67, 50971 T68, 50972 T69, 50973 T70, 50974 T71, 50975 T72, 50976 T73, 50977 T74, 50978 T75, 50979 T76, 50980 T77, 50981 T78, 50982 T79, 50983 T80, 50984 T81, 50985 T82, 50986 T83, 50987 T84, 50988 T85, 50989 T86, 50990 T87, 50991 T88, 50992 T89, 50993 T90, 50994 T91, 50995 T92, 50996 T93, 50997 T94, 50998 NullType, 50999 NullType, 51000 NullType, 51001 NullType, 51002 NullType, 51003 NullType, 51004 NullType, 51005 NullType, 51006 NullType, 51007 NullType, 51008 NullType, 51009 NullType, 51010 NullType, 51011 NullType, 51012 NullType, 51013 NullType, 51014 NullType, 51015 NullType, 51016 NullType, 51017 NullType, 51018 NullType, 51019 NullType, 51020 NullType, 51021 NullType, 51022 NullType, 51023 NullType, 51024 NullType, 51025 NullType, 51026 NullType, 51027 NullType, 51028 NullType, 51029 NullType, 51030 NullType> FunctorType; 51031 51032 FunctorType functor_; 51033 51034 functionImplementation_(const FunctorType &functor) : 51035 functor_(functor) 51036 { 51037 } 51038 51039 typedef std::tr1::function<Event ( 51040 const EnqueueArgs&, 51041 T0, 51042 T1, 51043 T2, 51044 T3, 51045 T4, 51046 T5, 51047 T6, 51048 T7, 51049 T8, 51050 T9, 51051 T10, 51052 T11, 51053 T12, 51054 T13, 51055 T14, 51056 T15, 51057 T16, 51058 T17, 51059 T18, 51060 T19, 51061 T20, 51062 T21, 51063 T22, 51064 T23, 51065 T24, 51066 T25, 51067 T26, 51068 T27, 51069 T28, 51070 T29, 51071 T30, 51072 T31, 51073 T32, 51074 T33, 51075 T34, 51076 T35, 51077 T36, 51078 T37, 51079 T38, 51080 T39, 51081 T40, 51082 T41, 51083 T42, 51084 T43, 51085 T44, 51086 T45, 51087 T46, 51088 T47, 51089 T48, 51090 T49, 51091 T50, 51092 T51, 51093 T52, 51094 T53, 51095 T54, 51096 T55, 51097 T56, 51098 T57, 51099 T58, 51100 T59, 51101 T60, 51102 T61, 51103 T62, 51104 T63, 51105 T64, 51106 T65, 51107 T66, 51108 T67, 51109 T68, 51110 T69, 51111 T70, 51112 T71, 51113 T72, 51114 T73, 51115 T74, 51116 T75, 51117 T76, 51118 T77, 51119 T78, 51120 T79, 51121 T80, 51122 T81, 51123 T82, 51124 T83, 51125 T84, 51126 T85, 51127 T86, 51128 T87, 51129 T88, 51130 T89, 51131 T90, 51132 T91, 51133 T92, 51134 T93, 51135 T94)> type_; 51136 51137 Event operator()(const EnqueueArgs& enqueueArgs, 51138 T0 arg0, 51139 T1 arg1, 51140 T2 arg2, 51141 T3 arg3, 51142 T4 arg4, 51143 T5 arg5, 51144 T6 arg6, 51145 T7 arg7, 51146 T8 arg8, 51147 T9 arg9, 51148 T10 arg10, 51149 T11 arg11, 51150 T12 arg12, 51151 T13 arg13, 51152 T14 arg14, 51153 T15 arg15, 51154 T16 arg16, 51155 T17 arg17, 51156 T18 arg18, 51157 T19 arg19, 51158 T20 arg20, 51159 T21 arg21, 51160 T22 arg22, 51161 T23 arg23, 51162 T24 arg24, 51163 T25 arg25, 51164 T26 arg26, 51165 T27 arg27, 51166 T28 arg28, 51167 T29 arg29, 51168 T30 arg30, 51169 T31 arg31, 51170 T32 arg32, 51171 T33 arg33, 51172 T34 arg34, 51173 T35 arg35, 51174 T36 arg36, 51175 T37 arg37, 51176 T38 arg38, 51177 T39 arg39, 51178 T40 arg40, 51179 T41 arg41, 51180 T42 arg42, 51181 T43 arg43, 51182 T44 arg44, 51183 T45 arg45, 51184 T46 arg46, 51185 T47 arg47, 51186 T48 arg48, 51187 T49 arg49, 51188 T50 arg50, 51189 T51 arg51, 51190 T52 arg52, 51191 T53 arg53, 51192 T54 arg54, 51193 T55 arg55, 51194 T56 arg56, 51195 T57 arg57, 51196 T58 arg58, 51197 T59 arg59, 51198 T60 arg60, 51199 T61 arg61, 51200 T62 arg62, 51201 T63 arg63, 51202 T64 arg64, 51203 T65 arg65, 51204 T66 arg66, 51205 T67 arg67, 51206 T68 arg68, 51207 T69 arg69, 51208 T70 arg70, 51209 T71 arg71, 51210 T72 arg72, 51211 T73 arg73, 51212 T74 arg74, 51213 T75 arg75, 51214 T76 arg76, 51215 T77 arg77, 51216 T78 arg78, 51217 T79 arg79, 51218 T80 arg80, 51219 T81 arg81, 51220 T82 arg82, 51221 T83 arg83, 51222 T84 arg84, 51223 T85 arg85, 51224 T86 arg86, 51225 T87 arg87, 51226 T88 arg88, 51227 T89 arg89, 51228 T90 arg90, 51229 T91 arg91, 51230 T92 arg92, 51231 T93 arg93, 51232 T94 arg94) 51233 { 51234 return functor_( 51235 enqueueArgs, 51236 arg0, 51237 arg1, 51238 arg2, 51239 arg3, 51240 arg4, 51241 arg5, 51242 arg6, 51243 arg7, 51244 arg8, 51245 arg9, 51246 arg10, 51247 arg11, 51248 arg12, 51249 arg13, 51250 arg14, 51251 arg15, 51252 arg16, 51253 arg17, 51254 arg18, 51255 arg19, 51256 arg20, 51257 arg21, 51258 arg22, 51259 arg23, 51260 arg24, 51261 arg25, 51262 arg26, 51263 arg27, 51264 arg28, 51265 arg29, 51266 arg30, 51267 arg31, 51268 arg32, 51269 arg33, 51270 arg34, 51271 arg35, 51272 arg36, 51273 arg37, 51274 arg38, 51275 arg39, 51276 arg40, 51277 arg41, 51278 arg42, 51279 arg43, 51280 arg44, 51281 arg45, 51282 arg46, 51283 arg47, 51284 arg48, 51285 arg49, 51286 arg50, 51287 arg51, 51288 arg52, 51289 arg53, 51290 arg54, 51291 arg55, 51292 arg56, 51293 arg57, 51294 arg58, 51295 arg59, 51296 arg60, 51297 arg61, 51298 arg62, 51299 arg63, 51300 arg64, 51301 arg65, 51302 arg66, 51303 arg67, 51304 arg68, 51305 arg69, 51306 arg70, 51307 arg71, 51308 arg72, 51309 arg73, 51310 arg74, 51311 arg75, 51312 arg76, 51313 arg77, 51314 arg78, 51315 arg79, 51316 arg80, 51317 arg81, 51318 arg82, 51319 arg83, 51320 arg84, 51321 arg85, 51322 arg86, 51323 arg87, 51324 arg88, 51325 arg89, 51326 arg90, 51327 arg91, 51328 arg92, 51329 arg93, 51330 arg94); 51331 } 51332 51333 operator type_ () 51334 { 51335 return type_(*this); 51336 } 51337 51338 }; 51339 51340 template< 51341 typename T0, 51342 typename T1, 51343 typename T2, 51344 typename T3, 51345 typename T4, 51346 typename T5, 51347 typename T6, 51348 typename T7, 51349 typename T8, 51350 typename T9, 51351 typename T10, 51352 typename T11, 51353 typename T12, 51354 typename T13, 51355 typename T14, 51356 typename T15, 51357 typename T16, 51358 typename T17, 51359 typename T18, 51360 typename T19, 51361 typename T20, 51362 typename T21, 51363 typename T22, 51364 typename T23, 51365 typename T24, 51366 typename T25, 51367 typename T26, 51368 typename T27, 51369 typename T28, 51370 typename T29, 51371 typename T30, 51372 typename T31, 51373 typename T32, 51374 typename T33, 51375 typename T34, 51376 typename T35, 51377 typename T36, 51378 typename T37, 51379 typename T38, 51380 typename T39, 51381 typename T40, 51382 typename T41, 51383 typename T42, 51384 typename T43, 51385 typename T44, 51386 typename T45, 51387 typename T46, 51388 typename T47, 51389 typename T48, 51390 typename T49, 51391 typename T50, 51392 typename T51, 51393 typename T52, 51394 typename T53, 51395 typename T54, 51396 typename T55, 51397 typename T56, 51398 typename T57, 51399 typename T58, 51400 typename T59, 51401 typename T60, 51402 typename T61, 51403 typename T62, 51404 typename T63, 51405 typename T64, 51406 typename T65, 51407 typename T66, 51408 typename T67, 51409 typename T68, 51410 typename T69, 51411 typename T70, 51412 typename T71, 51413 typename T72, 51414 typename T73, 51415 typename T74, 51416 typename T75, 51417 typename T76, 51418 typename T77, 51419 typename T78, 51420 typename T79, 51421 typename T80, 51422 typename T81, 51423 typename T82, 51424 typename T83, 51425 typename T84, 51426 typename T85, 51427 typename T86, 51428 typename T87, 51429 typename T88, 51430 typename T89, 51431 typename T90, 51432 typename T91, 51433 typename T92, 51434 typename T93, 51435 typename T94, 51436 typename T95> 51437 struct functionImplementation_< 51438 T0, 51439 T1, 51440 T2, 51441 T3, 51442 T4, 51443 T5, 51444 T6, 51445 T7, 51446 T8, 51447 T9, 51448 T10, 51449 T11, 51450 T12, 51451 T13, 51452 T14, 51453 T15, 51454 T16, 51455 T17, 51456 T18, 51457 T19, 51458 T20, 51459 T21, 51460 T22, 51461 T23, 51462 T24, 51463 T25, 51464 T26, 51465 T27, 51466 T28, 51467 T29, 51468 T30, 51469 T31, 51470 T32, 51471 T33, 51472 T34, 51473 T35, 51474 T36, 51475 T37, 51476 T38, 51477 T39, 51478 T40, 51479 T41, 51480 T42, 51481 T43, 51482 T44, 51483 T45, 51484 T46, 51485 T47, 51486 T48, 51487 T49, 51488 T50, 51489 T51, 51490 T52, 51491 T53, 51492 T54, 51493 T55, 51494 T56, 51495 T57, 51496 T58, 51497 T59, 51498 T60, 51499 T61, 51500 T62, 51501 T63, 51502 T64, 51503 T65, 51504 T66, 51505 T67, 51506 T68, 51507 T69, 51508 T70, 51509 T71, 51510 T72, 51511 T73, 51512 T74, 51513 T75, 51514 T76, 51515 T77, 51516 T78, 51517 T79, 51518 T80, 51519 T81, 51520 T82, 51521 T83, 51522 T84, 51523 T85, 51524 T86, 51525 T87, 51526 T88, 51527 T89, 51528 T90, 51529 T91, 51530 T92, 51531 T93, 51532 T94, 51533 T95, 51534 NullType, 51535 NullType, 51536 NullType, 51537 NullType, 51538 NullType, 51539 NullType, 51540 NullType, 51541 NullType, 51542 NullType, 51543 NullType, 51544 NullType, 51545 NullType, 51546 NullType, 51547 NullType, 51548 NullType, 51549 NullType, 51550 NullType, 51551 NullType, 51552 NullType, 51553 NullType, 51554 NullType, 51555 NullType, 51556 NullType, 51557 NullType, 51558 NullType, 51559 NullType, 51560 NullType, 51561 NullType, 51562 NullType, 51563 NullType, 51564 NullType, 51565 NullType> 51566 { 51567 typedef detail::KernelFunctorGlobal< 51568 T0, 51569 T1, 51570 T2, 51571 T3, 51572 T4, 51573 T5, 51574 T6, 51575 T7, 51576 T8, 51577 T9, 51578 T10, 51579 T11, 51580 T12, 51581 T13, 51582 T14, 51583 T15, 51584 T16, 51585 T17, 51586 T18, 51587 T19, 51588 T20, 51589 T21, 51590 T22, 51591 T23, 51592 T24, 51593 T25, 51594 T26, 51595 T27, 51596 T28, 51597 T29, 51598 T30, 51599 T31, 51600 T32, 51601 T33, 51602 T34, 51603 T35, 51604 T36, 51605 T37, 51606 T38, 51607 T39, 51608 T40, 51609 T41, 51610 T42, 51611 T43, 51612 T44, 51613 T45, 51614 T46, 51615 T47, 51616 T48, 51617 T49, 51618 T50, 51619 T51, 51620 T52, 51621 T53, 51622 T54, 51623 T55, 51624 T56, 51625 T57, 51626 T58, 51627 T59, 51628 T60, 51629 T61, 51630 T62, 51631 T63, 51632 T64, 51633 T65, 51634 T66, 51635 T67, 51636 T68, 51637 T69, 51638 T70, 51639 T71, 51640 T72, 51641 T73, 51642 T74, 51643 T75, 51644 T76, 51645 T77, 51646 T78, 51647 T79, 51648 T80, 51649 T81, 51650 T82, 51651 T83, 51652 T84, 51653 T85, 51654 T86, 51655 T87, 51656 T88, 51657 T89, 51658 T90, 51659 T91, 51660 T92, 51661 T93, 51662 T94, 51663 T95, 51664 NullType, 51665 NullType, 51666 NullType, 51667 NullType, 51668 NullType, 51669 NullType, 51670 NullType, 51671 NullType, 51672 NullType, 51673 NullType, 51674 NullType, 51675 NullType, 51676 NullType, 51677 NullType, 51678 NullType, 51679 NullType, 51680 NullType, 51681 NullType, 51682 NullType, 51683 NullType, 51684 NullType, 51685 NullType, 51686 NullType, 51687 NullType, 51688 NullType, 51689 NullType, 51690 NullType, 51691 NullType, 51692 NullType, 51693 NullType, 51694 NullType, 51695 NullType> FunctorType; 51696 51697 FunctorType functor_; 51698 51699 functionImplementation_(const FunctorType &functor) : 51700 functor_(functor) 51701 { 51702 } 51703 51704 typedef std::tr1::function<Event ( 51705 const EnqueueArgs&, 51706 T0, 51707 T1, 51708 T2, 51709 T3, 51710 T4, 51711 T5, 51712 T6, 51713 T7, 51714 T8, 51715 T9, 51716 T10, 51717 T11, 51718 T12, 51719 T13, 51720 T14, 51721 T15, 51722 T16, 51723 T17, 51724 T18, 51725 T19, 51726 T20, 51727 T21, 51728 T22, 51729 T23, 51730 T24, 51731 T25, 51732 T26, 51733 T27, 51734 T28, 51735 T29, 51736 T30, 51737 T31, 51738 T32, 51739 T33, 51740 T34, 51741 T35, 51742 T36, 51743 T37, 51744 T38, 51745 T39, 51746 T40, 51747 T41, 51748 T42, 51749 T43, 51750 T44, 51751 T45, 51752 T46, 51753 T47, 51754 T48, 51755 T49, 51756 T50, 51757 T51, 51758 T52, 51759 T53, 51760 T54, 51761 T55, 51762 T56, 51763 T57, 51764 T58, 51765 T59, 51766 T60, 51767 T61, 51768 T62, 51769 T63, 51770 T64, 51771 T65, 51772 T66, 51773 T67, 51774 T68, 51775 T69, 51776 T70, 51777 T71, 51778 T72, 51779 T73, 51780 T74, 51781 T75, 51782 T76, 51783 T77, 51784 T78, 51785 T79, 51786 T80, 51787 T81, 51788 T82, 51789 T83, 51790 T84, 51791 T85, 51792 T86, 51793 T87, 51794 T88, 51795 T89, 51796 T90, 51797 T91, 51798 T92, 51799 T93, 51800 T94, 51801 T95)> type_; 51802 51803 Event operator()(const EnqueueArgs& enqueueArgs, 51804 T0 arg0, 51805 T1 arg1, 51806 T2 arg2, 51807 T3 arg3, 51808 T4 arg4, 51809 T5 arg5, 51810 T6 arg6, 51811 T7 arg7, 51812 T8 arg8, 51813 T9 arg9, 51814 T10 arg10, 51815 T11 arg11, 51816 T12 arg12, 51817 T13 arg13, 51818 T14 arg14, 51819 T15 arg15, 51820 T16 arg16, 51821 T17 arg17, 51822 T18 arg18, 51823 T19 arg19, 51824 T20 arg20, 51825 T21 arg21, 51826 T22 arg22, 51827 T23 arg23, 51828 T24 arg24, 51829 T25 arg25, 51830 T26 arg26, 51831 T27 arg27, 51832 T28 arg28, 51833 T29 arg29, 51834 T30 arg30, 51835 T31 arg31, 51836 T32 arg32, 51837 T33 arg33, 51838 T34 arg34, 51839 T35 arg35, 51840 T36 arg36, 51841 T37 arg37, 51842 T38 arg38, 51843 T39 arg39, 51844 T40 arg40, 51845 T41 arg41, 51846 T42 arg42, 51847 T43 arg43, 51848 T44 arg44, 51849 T45 arg45, 51850 T46 arg46, 51851 T47 arg47, 51852 T48 arg48, 51853 T49 arg49, 51854 T50 arg50, 51855 T51 arg51, 51856 T52 arg52, 51857 T53 arg53, 51858 T54 arg54, 51859 T55 arg55, 51860 T56 arg56, 51861 T57 arg57, 51862 T58 arg58, 51863 T59 arg59, 51864 T60 arg60, 51865 T61 arg61, 51866 T62 arg62, 51867 T63 arg63, 51868 T64 arg64, 51869 T65 arg65, 51870 T66 arg66, 51871 T67 arg67, 51872 T68 arg68, 51873 T69 arg69, 51874 T70 arg70, 51875 T71 arg71, 51876 T72 arg72, 51877 T73 arg73, 51878 T74 arg74, 51879 T75 arg75, 51880 T76 arg76, 51881 T77 arg77, 51882 T78 arg78, 51883 T79 arg79, 51884 T80 arg80, 51885 T81 arg81, 51886 T82 arg82, 51887 T83 arg83, 51888 T84 arg84, 51889 T85 arg85, 51890 T86 arg86, 51891 T87 arg87, 51892 T88 arg88, 51893 T89 arg89, 51894 T90 arg90, 51895 T91 arg91, 51896 T92 arg92, 51897 T93 arg93, 51898 T94 arg94, 51899 T95 arg95) 51900 { 51901 return functor_( 51902 enqueueArgs, 51903 arg0, 51904 arg1, 51905 arg2, 51906 arg3, 51907 arg4, 51908 arg5, 51909 arg6, 51910 arg7, 51911 arg8, 51912 arg9, 51913 arg10, 51914 arg11, 51915 arg12, 51916 arg13, 51917 arg14, 51918 arg15, 51919 arg16, 51920 arg17, 51921 arg18, 51922 arg19, 51923 arg20, 51924 arg21, 51925 arg22, 51926 arg23, 51927 arg24, 51928 arg25, 51929 arg26, 51930 arg27, 51931 arg28, 51932 arg29, 51933 arg30, 51934 arg31, 51935 arg32, 51936 arg33, 51937 arg34, 51938 arg35, 51939 arg36, 51940 arg37, 51941 arg38, 51942 arg39, 51943 arg40, 51944 arg41, 51945 arg42, 51946 arg43, 51947 arg44, 51948 arg45, 51949 arg46, 51950 arg47, 51951 arg48, 51952 arg49, 51953 arg50, 51954 arg51, 51955 arg52, 51956 arg53, 51957 arg54, 51958 arg55, 51959 arg56, 51960 arg57, 51961 arg58, 51962 arg59, 51963 arg60, 51964 arg61, 51965 arg62, 51966 arg63, 51967 arg64, 51968 arg65, 51969 arg66, 51970 arg67, 51971 arg68, 51972 arg69, 51973 arg70, 51974 arg71, 51975 arg72, 51976 arg73, 51977 arg74, 51978 arg75, 51979 arg76, 51980 arg77, 51981 arg78, 51982 arg79, 51983 arg80, 51984 arg81, 51985 arg82, 51986 arg83, 51987 arg84, 51988 arg85, 51989 arg86, 51990 arg87, 51991 arg88, 51992 arg89, 51993 arg90, 51994 arg91, 51995 arg92, 51996 arg93, 51997 arg94, 51998 arg95); 51999 } 52000 52001 operator type_ () 52002 { 52003 return type_(*this); 52004 } 52005 52006 }; 52007 52008 template< 52009 typename T0, 52010 typename T1, 52011 typename T2, 52012 typename T3, 52013 typename T4, 52014 typename T5, 52015 typename T6, 52016 typename T7, 52017 typename T8, 52018 typename T9, 52019 typename T10, 52020 typename T11, 52021 typename T12, 52022 typename T13, 52023 typename T14, 52024 typename T15, 52025 typename T16, 52026 typename T17, 52027 typename T18, 52028 typename T19, 52029 typename T20, 52030 typename T21, 52031 typename T22, 52032 typename T23, 52033 typename T24, 52034 typename T25, 52035 typename T26, 52036 typename T27, 52037 typename T28, 52038 typename T29, 52039 typename T30, 52040 typename T31, 52041 typename T32, 52042 typename T33, 52043 typename T34, 52044 typename T35, 52045 typename T36, 52046 typename T37, 52047 typename T38, 52048 typename T39, 52049 typename T40, 52050 typename T41, 52051 typename T42, 52052 typename T43, 52053 typename T44, 52054 typename T45, 52055 typename T46, 52056 typename T47, 52057 typename T48, 52058 typename T49, 52059 typename T50, 52060 typename T51, 52061 typename T52, 52062 typename T53, 52063 typename T54, 52064 typename T55, 52065 typename T56, 52066 typename T57, 52067 typename T58, 52068 typename T59, 52069 typename T60, 52070 typename T61, 52071 typename T62, 52072 typename T63, 52073 typename T64, 52074 typename T65, 52075 typename T66, 52076 typename T67, 52077 typename T68, 52078 typename T69, 52079 typename T70, 52080 typename T71, 52081 typename T72, 52082 typename T73, 52083 typename T74, 52084 typename T75, 52085 typename T76, 52086 typename T77, 52087 typename T78, 52088 typename T79, 52089 typename T80, 52090 typename T81, 52091 typename T82, 52092 typename T83, 52093 typename T84, 52094 typename T85, 52095 typename T86, 52096 typename T87, 52097 typename T88, 52098 typename T89, 52099 typename T90, 52100 typename T91, 52101 typename T92, 52102 typename T93, 52103 typename T94, 52104 typename T95, 52105 typename T96> 52106 struct functionImplementation_< 52107 T0, 52108 T1, 52109 T2, 52110 T3, 52111 T4, 52112 T5, 52113 T6, 52114 T7, 52115 T8, 52116 T9, 52117 T10, 52118 T11, 52119 T12, 52120 T13, 52121 T14, 52122 T15, 52123 T16, 52124 T17, 52125 T18, 52126 T19, 52127 T20, 52128 T21, 52129 T22, 52130 T23, 52131 T24, 52132 T25, 52133 T26, 52134 T27, 52135 T28, 52136 T29, 52137 T30, 52138 T31, 52139 T32, 52140 T33, 52141 T34, 52142 T35, 52143 T36, 52144 T37, 52145 T38, 52146 T39, 52147 T40, 52148 T41, 52149 T42, 52150 T43, 52151 T44, 52152 T45, 52153 T46, 52154 T47, 52155 T48, 52156 T49, 52157 T50, 52158 T51, 52159 T52, 52160 T53, 52161 T54, 52162 T55, 52163 T56, 52164 T57, 52165 T58, 52166 T59, 52167 T60, 52168 T61, 52169 T62, 52170 T63, 52171 T64, 52172 T65, 52173 T66, 52174 T67, 52175 T68, 52176 T69, 52177 T70, 52178 T71, 52179 T72, 52180 T73, 52181 T74, 52182 T75, 52183 T76, 52184 T77, 52185 T78, 52186 T79, 52187 T80, 52188 T81, 52189 T82, 52190 T83, 52191 T84, 52192 T85, 52193 T86, 52194 T87, 52195 T88, 52196 T89, 52197 T90, 52198 T91, 52199 T92, 52200 T93, 52201 T94, 52202 T95, 52203 T96, 52204 NullType, 52205 NullType, 52206 NullType, 52207 NullType, 52208 NullType, 52209 NullType, 52210 NullType, 52211 NullType, 52212 NullType, 52213 NullType, 52214 NullType, 52215 NullType, 52216 NullType, 52217 NullType, 52218 NullType, 52219 NullType, 52220 NullType, 52221 NullType, 52222 NullType, 52223 NullType, 52224 NullType, 52225 NullType, 52226 NullType, 52227 NullType, 52228 NullType, 52229 NullType, 52230 NullType, 52231 NullType, 52232 NullType, 52233 NullType, 52234 NullType> 52235 { 52236 typedef detail::KernelFunctorGlobal< 52237 T0, 52238 T1, 52239 T2, 52240 T3, 52241 T4, 52242 T5, 52243 T6, 52244 T7, 52245 T8, 52246 T9, 52247 T10, 52248 T11, 52249 T12, 52250 T13, 52251 T14, 52252 T15, 52253 T16, 52254 T17, 52255 T18, 52256 T19, 52257 T20, 52258 T21, 52259 T22, 52260 T23, 52261 T24, 52262 T25, 52263 T26, 52264 T27, 52265 T28, 52266 T29, 52267 T30, 52268 T31, 52269 T32, 52270 T33, 52271 T34, 52272 T35, 52273 T36, 52274 T37, 52275 T38, 52276 T39, 52277 T40, 52278 T41, 52279 T42, 52280 T43, 52281 T44, 52282 T45, 52283 T46, 52284 T47, 52285 T48, 52286 T49, 52287 T50, 52288 T51, 52289 T52, 52290 T53, 52291 T54, 52292 T55, 52293 T56, 52294 T57, 52295 T58, 52296 T59, 52297 T60, 52298 T61, 52299 T62, 52300 T63, 52301 T64, 52302 T65, 52303 T66, 52304 T67, 52305 T68, 52306 T69, 52307 T70, 52308 T71, 52309 T72, 52310 T73, 52311 T74, 52312 T75, 52313 T76, 52314 T77, 52315 T78, 52316 T79, 52317 T80, 52318 T81, 52319 T82, 52320 T83, 52321 T84, 52322 T85, 52323 T86, 52324 T87, 52325 T88, 52326 T89, 52327 T90, 52328 T91, 52329 T92, 52330 T93, 52331 T94, 52332 T95, 52333 T96, 52334 NullType, 52335 NullType, 52336 NullType, 52337 NullType, 52338 NullType, 52339 NullType, 52340 NullType, 52341 NullType, 52342 NullType, 52343 NullType, 52344 NullType, 52345 NullType, 52346 NullType, 52347 NullType, 52348 NullType, 52349 NullType, 52350 NullType, 52351 NullType, 52352 NullType, 52353 NullType, 52354 NullType, 52355 NullType, 52356 NullType, 52357 NullType, 52358 NullType, 52359 NullType, 52360 NullType, 52361 NullType, 52362 NullType, 52363 NullType, 52364 NullType> FunctorType; 52365 52366 FunctorType functor_; 52367 52368 functionImplementation_(const FunctorType &functor) : 52369 functor_(functor) 52370 { 52371 } 52372 52373 typedef std::tr1::function<Event ( 52374 const EnqueueArgs&, 52375 T0, 52376 T1, 52377 T2, 52378 T3, 52379 T4, 52380 T5, 52381 T6, 52382 T7, 52383 T8, 52384 T9, 52385 T10, 52386 T11, 52387 T12, 52388 T13, 52389 T14, 52390 T15, 52391 T16, 52392 T17, 52393 T18, 52394 T19, 52395 T20, 52396 T21, 52397 T22, 52398 T23, 52399 T24, 52400 T25, 52401 T26, 52402 T27, 52403 T28, 52404 T29, 52405 T30, 52406 T31, 52407 T32, 52408 T33, 52409 T34, 52410 T35, 52411 T36, 52412 T37, 52413 T38, 52414 T39, 52415 T40, 52416 T41, 52417 T42, 52418 T43, 52419 T44, 52420 T45, 52421 T46, 52422 T47, 52423 T48, 52424 T49, 52425 T50, 52426 T51, 52427 T52, 52428 T53, 52429 T54, 52430 T55, 52431 T56, 52432 T57, 52433 T58, 52434 T59, 52435 T60, 52436 T61, 52437 T62, 52438 T63, 52439 T64, 52440 T65, 52441 T66, 52442 T67, 52443 T68, 52444 T69, 52445 T70, 52446 T71, 52447 T72, 52448 T73, 52449 T74, 52450 T75, 52451 T76, 52452 T77, 52453 T78, 52454 T79, 52455 T80, 52456 T81, 52457 T82, 52458 T83, 52459 T84, 52460 T85, 52461 T86, 52462 T87, 52463 T88, 52464 T89, 52465 T90, 52466 T91, 52467 T92, 52468 T93, 52469 T94, 52470 T95, 52471 T96)> type_; 52472 52473 Event operator()(const EnqueueArgs& enqueueArgs, 52474 T0 arg0, 52475 T1 arg1, 52476 T2 arg2, 52477 T3 arg3, 52478 T4 arg4, 52479 T5 arg5, 52480 T6 arg6, 52481 T7 arg7, 52482 T8 arg8, 52483 T9 arg9, 52484 T10 arg10, 52485 T11 arg11, 52486 T12 arg12, 52487 T13 arg13, 52488 T14 arg14, 52489 T15 arg15, 52490 T16 arg16, 52491 T17 arg17, 52492 T18 arg18, 52493 T19 arg19, 52494 T20 arg20, 52495 T21 arg21, 52496 T22 arg22, 52497 T23 arg23, 52498 T24 arg24, 52499 T25 arg25, 52500 T26 arg26, 52501 T27 arg27, 52502 T28 arg28, 52503 T29 arg29, 52504 T30 arg30, 52505 T31 arg31, 52506 T32 arg32, 52507 T33 arg33, 52508 T34 arg34, 52509 T35 arg35, 52510 T36 arg36, 52511 T37 arg37, 52512 T38 arg38, 52513 T39 arg39, 52514 T40 arg40, 52515 T41 arg41, 52516 T42 arg42, 52517 T43 arg43, 52518 T44 arg44, 52519 T45 arg45, 52520 T46 arg46, 52521 T47 arg47, 52522 T48 arg48, 52523 T49 arg49, 52524 T50 arg50, 52525 T51 arg51, 52526 T52 arg52, 52527 T53 arg53, 52528 T54 arg54, 52529 T55 arg55, 52530 T56 arg56, 52531 T57 arg57, 52532 T58 arg58, 52533 T59 arg59, 52534 T60 arg60, 52535 T61 arg61, 52536 T62 arg62, 52537 T63 arg63, 52538 T64 arg64, 52539 T65 arg65, 52540 T66 arg66, 52541 T67 arg67, 52542 T68 arg68, 52543 T69 arg69, 52544 T70 arg70, 52545 T71 arg71, 52546 T72 arg72, 52547 T73 arg73, 52548 T74 arg74, 52549 T75 arg75, 52550 T76 arg76, 52551 T77 arg77, 52552 T78 arg78, 52553 T79 arg79, 52554 T80 arg80, 52555 T81 arg81, 52556 T82 arg82, 52557 T83 arg83, 52558 T84 arg84, 52559 T85 arg85, 52560 T86 arg86, 52561 T87 arg87, 52562 T88 arg88, 52563 T89 arg89, 52564 T90 arg90, 52565 T91 arg91, 52566 T92 arg92, 52567 T93 arg93, 52568 T94 arg94, 52569 T95 arg95, 52570 T96 arg96) 52571 { 52572 return functor_( 52573 enqueueArgs, 52574 arg0, 52575 arg1, 52576 arg2, 52577 arg3, 52578 arg4, 52579 arg5, 52580 arg6, 52581 arg7, 52582 arg8, 52583 arg9, 52584 arg10, 52585 arg11, 52586 arg12, 52587 arg13, 52588 arg14, 52589 arg15, 52590 arg16, 52591 arg17, 52592 arg18, 52593 arg19, 52594 arg20, 52595 arg21, 52596 arg22, 52597 arg23, 52598 arg24, 52599 arg25, 52600 arg26, 52601 arg27, 52602 arg28, 52603 arg29, 52604 arg30, 52605 arg31, 52606 arg32, 52607 arg33, 52608 arg34, 52609 arg35, 52610 arg36, 52611 arg37, 52612 arg38, 52613 arg39, 52614 arg40, 52615 arg41, 52616 arg42, 52617 arg43, 52618 arg44, 52619 arg45, 52620 arg46, 52621 arg47, 52622 arg48, 52623 arg49, 52624 arg50, 52625 arg51, 52626 arg52, 52627 arg53, 52628 arg54, 52629 arg55, 52630 arg56, 52631 arg57, 52632 arg58, 52633 arg59, 52634 arg60, 52635 arg61, 52636 arg62, 52637 arg63, 52638 arg64, 52639 arg65, 52640 arg66, 52641 arg67, 52642 arg68, 52643 arg69, 52644 arg70, 52645 arg71, 52646 arg72, 52647 arg73, 52648 arg74, 52649 arg75, 52650 arg76, 52651 arg77, 52652 arg78, 52653 arg79, 52654 arg80, 52655 arg81, 52656 arg82, 52657 arg83, 52658 arg84, 52659 arg85, 52660 arg86, 52661 arg87, 52662 arg88, 52663 arg89, 52664 arg90, 52665 arg91, 52666 arg92, 52667 arg93, 52668 arg94, 52669 arg95, 52670 arg96); 52671 } 52672 52673 operator type_ () 52674 { 52675 return type_(*this); 52676 } 52677 52678 }; 52679 52680 template< 52681 typename T0, 52682 typename T1, 52683 typename T2, 52684 typename T3, 52685 typename T4, 52686 typename T5, 52687 typename T6, 52688 typename T7, 52689 typename T8, 52690 typename T9, 52691 typename T10, 52692 typename T11, 52693 typename T12, 52694 typename T13, 52695 typename T14, 52696 typename T15, 52697 typename T16, 52698 typename T17, 52699 typename T18, 52700 typename T19, 52701 typename T20, 52702 typename T21, 52703 typename T22, 52704 typename T23, 52705 typename T24, 52706 typename T25, 52707 typename T26, 52708 typename T27, 52709 typename T28, 52710 typename T29, 52711 typename T30, 52712 typename T31, 52713 typename T32, 52714 typename T33, 52715 typename T34, 52716 typename T35, 52717 typename T36, 52718 typename T37, 52719 typename T38, 52720 typename T39, 52721 typename T40, 52722 typename T41, 52723 typename T42, 52724 typename T43, 52725 typename T44, 52726 typename T45, 52727 typename T46, 52728 typename T47, 52729 typename T48, 52730 typename T49, 52731 typename T50, 52732 typename T51, 52733 typename T52, 52734 typename T53, 52735 typename T54, 52736 typename T55, 52737 typename T56, 52738 typename T57, 52739 typename T58, 52740 typename T59, 52741 typename T60, 52742 typename T61, 52743 typename T62, 52744 typename T63, 52745 typename T64, 52746 typename T65, 52747 typename T66, 52748 typename T67, 52749 typename T68, 52750 typename T69, 52751 typename T70, 52752 typename T71, 52753 typename T72, 52754 typename T73, 52755 typename T74, 52756 typename T75, 52757 typename T76, 52758 typename T77, 52759 typename T78, 52760 typename T79, 52761 typename T80, 52762 typename T81, 52763 typename T82, 52764 typename T83, 52765 typename T84, 52766 typename T85, 52767 typename T86, 52768 typename T87, 52769 typename T88, 52770 typename T89, 52771 typename T90, 52772 typename T91, 52773 typename T92, 52774 typename T93, 52775 typename T94, 52776 typename T95, 52777 typename T96, 52778 typename T97> 52779 struct functionImplementation_< 52780 T0, 52781 T1, 52782 T2, 52783 T3, 52784 T4, 52785 T5, 52786 T6, 52787 T7, 52788 T8, 52789 T9, 52790 T10, 52791 T11, 52792 T12, 52793 T13, 52794 T14, 52795 T15, 52796 T16, 52797 T17, 52798 T18, 52799 T19, 52800 T20, 52801 T21, 52802 T22, 52803 T23, 52804 T24, 52805 T25, 52806 T26, 52807 T27, 52808 T28, 52809 T29, 52810 T30, 52811 T31, 52812 T32, 52813 T33, 52814 T34, 52815 T35, 52816 T36, 52817 T37, 52818 T38, 52819 T39, 52820 T40, 52821 T41, 52822 T42, 52823 T43, 52824 T44, 52825 T45, 52826 T46, 52827 T47, 52828 T48, 52829 T49, 52830 T50, 52831 T51, 52832 T52, 52833 T53, 52834 T54, 52835 T55, 52836 T56, 52837 T57, 52838 T58, 52839 T59, 52840 T60, 52841 T61, 52842 T62, 52843 T63, 52844 T64, 52845 T65, 52846 T66, 52847 T67, 52848 T68, 52849 T69, 52850 T70, 52851 T71, 52852 T72, 52853 T73, 52854 T74, 52855 T75, 52856 T76, 52857 T77, 52858 T78, 52859 T79, 52860 T80, 52861 T81, 52862 T82, 52863 T83, 52864 T84, 52865 T85, 52866 T86, 52867 T87, 52868 T88, 52869 T89, 52870 T90, 52871 T91, 52872 T92, 52873 T93, 52874 T94, 52875 T95, 52876 T96, 52877 T97, 52878 NullType, 52879 NullType, 52880 NullType, 52881 NullType, 52882 NullType, 52883 NullType, 52884 NullType, 52885 NullType, 52886 NullType, 52887 NullType, 52888 NullType, 52889 NullType, 52890 NullType, 52891 NullType, 52892 NullType, 52893 NullType, 52894 NullType, 52895 NullType, 52896 NullType, 52897 NullType, 52898 NullType, 52899 NullType, 52900 NullType, 52901 NullType, 52902 NullType, 52903 NullType, 52904 NullType, 52905 NullType, 52906 NullType, 52907 NullType> 52908 { 52909 typedef detail::KernelFunctorGlobal< 52910 T0, 52911 T1, 52912 T2, 52913 T3, 52914 T4, 52915 T5, 52916 T6, 52917 T7, 52918 T8, 52919 T9, 52920 T10, 52921 T11, 52922 T12, 52923 T13, 52924 T14, 52925 T15, 52926 T16, 52927 T17, 52928 T18, 52929 T19, 52930 T20, 52931 T21, 52932 T22, 52933 T23, 52934 T24, 52935 T25, 52936 T26, 52937 T27, 52938 T28, 52939 T29, 52940 T30, 52941 T31, 52942 T32, 52943 T33, 52944 T34, 52945 T35, 52946 T36, 52947 T37, 52948 T38, 52949 T39, 52950 T40, 52951 T41, 52952 T42, 52953 T43, 52954 T44, 52955 T45, 52956 T46, 52957 T47, 52958 T48, 52959 T49, 52960 T50, 52961 T51, 52962 T52, 52963 T53, 52964 T54, 52965 T55, 52966 T56, 52967 T57, 52968 T58, 52969 T59, 52970 T60, 52971 T61, 52972 T62, 52973 T63, 52974 T64, 52975 T65, 52976 T66, 52977 T67, 52978 T68, 52979 T69, 52980 T70, 52981 T71, 52982 T72, 52983 T73, 52984 T74, 52985 T75, 52986 T76, 52987 T77, 52988 T78, 52989 T79, 52990 T80, 52991 T81, 52992 T82, 52993 T83, 52994 T84, 52995 T85, 52996 T86, 52997 T87, 52998 T88, 52999 T89, 53000 T90, 53001 T91, 53002 T92, 53003 T93, 53004 T94, 53005 T95, 53006 T96, 53007 T97, 53008 NullType, 53009 NullType, 53010 NullType, 53011 NullType, 53012 NullType, 53013 NullType, 53014 NullType, 53015 NullType, 53016 NullType, 53017 NullType, 53018 NullType, 53019 NullType, 53020 NullType, 53021 NullType, 53022 NullType, 53023 NullType, 53024 NullType, 53025 NullType, 53026 NullType, 53027 NullType, 53028 NullType, 53029 NullType, 53030 NullType, 53031 NullType, 53032 NullType, 53033 NullType, 53034 NullType, 53035 NullType, 53036 NullType, 53037 NullType> FunctorType; 53038 53039 FunctorType functor_; 53040 53041 functionImplementation_(const FunctorType &functor) : 53042 functor_(functor) 53043 { 53044 } 53045 53046 typedef std::tr1::function<Event ( 53047 const EnqueueArgs&, 53048 T0, 53049 T1, 53050 T2, 53051 T3, 53052 T4, 53053 T5, 53054 T6, 53055 T7, 53056 T8, 53057 T9, 53058 T10, 53059 T11, 53060 T12, 53061 T13, 53062 T14, 53063 T15, 53064 T16, 53065 T17, 53066 T18, 53067 T19, 53068 T20, 53069 T21, 53070 T22, 53071 T23, 53072 T24, 53073 T25, 53074 T26, 53075 T27, 53076 T28, 53077 T29, 53078 T30, 53079 T31, 53080 T32, 53081 T33, 53082 T34, 53083 T35, 53084 T36, 53085 T37, 53086 T38, 53087 T39, 53088 T40, 53089 T41, 53090 T42, 53091 T43, 53092 T44, 53093 T45, 53094 T46, 53095 T47, 53096 T48, 53097 T49, 53098 T50, 53099 T51, 53100 T52, 53101 T53, 53102 T54, 53103 T55, 53104 T56, 53105 T57, 53106 T58, 53107 T59, 53108 T60, 53109 T61, 53110 T62, 53111 T63, 53112 T64, 53113 T65, 53114 T66, 53115 T67, 53116 T68, 53117 T69, 53118 T70, 53119 T71, 53120 T72, 53121 T73, 53122 T74, 53123 T75, 53124 T76, 53125 T77, 53126 T78, 53127 T79, 53128 T80, 53129 T81, 53130 T82, 53131 T83, 53132 T84, 53133 T85, 53134 T86, 53135 T87, 53136 T88, 53137 T89, 53138 T90, 53139 T91, 53140 T92, 53141 T93, 53142 T94, 53143 T95, 53144 T96, 53145 T97)> type_; 53146 53147 Event operator()(const EnqueueArgs& enqueueArgs, 53148 T0 arg0, 53149 T1 arg1, 53150 T2 arg2, 53151 T3 arg3, 53152 T4 arg4, 53153 T5 arg5, 53154 T6 arg6, 53155 T7 arg7, 53156 T8 arg8, 53157 T9 arg9, 53158 T10 arg10, 53159 T11 arg11, 53160 T12 arg12, 53161 T13 arg13, 53162 T14 arg14, 53163 T15 arg15, 53164 T16 arg16, 53165 T17 arg17, 53166 T18 arg18, 53167 T19 arg19, 53168 T20 arg20, 53169 T21 arg21, 53170 T22 arg22, 53171 T23 arg23, 53172 T24 arg24, 53173 T25 arg25, 53174 T26 arg26, 53175 T27 arg27, 53176 T28 arg28, 53177 T29 arg29, 53178 T30 arg30, 53179 T31 arg31, 53180 T32 arg32, 53181 T33 arg33, 53182 T34 arg34, 53183 T35 arg35, 53184 T36 arg36, 53185 T37 arg37, 53186 T38 arg38, 53187 T39 arg39, 53188 T40 arg40, 53189 T41 arg41, 53190 T42 arg42, 53191 T43 arg43, 53192 T44 arg44, 53193 T45 arg45, 53194 T46 arg46, 53195 T47 arg47, 53196 T48 arg48, 53197 T49 arg49, 53198 T50 arg50, 53199 T51 arg51, 53200 T52 arg52, 53201 T53 arg53, 53202 T54 arg54, 53203 T55 arg55, 53204 T56 arg56, 53205 T57 arg57, 53206 T58 arg58, 53207 T59 arg59, 53208 T60 arg60, 53209 T61 arg61, 53210 T62 arg62, 53211 T63 arg63, 53212 T64 arg64, 53213 T65 arg65, 53214 T66 arg66, 53215 T67 arg67, 53216 T68 arg68, 53217 T69 arg69, 53218 T70 arg70, 53219 T71 arg71, 53220 T72 arg72, 53221 T73 arg73, 53222 T74 arg74, 53223 T75 arg75, 53224 T76 arg76, 53225 T77 arg77, 53226 T78 arg78, 53227 T79 arg79, 53228 T80 arg80, 53229 T81 arg81, 53230 T82 arg82, 53231 T83 arg83, 53232 T84 arg84, 53233 T85 arg85, 53234 T86 arg86, 53235 T87 arg87, 53236 T88 arg88, 53237 T89 arg89, 53238 T90 arg90, 53239 T91 arg91, 53240 T92 arg92, 53241 T93 arg93, 53242 T94 arg94, 53243 T95 arg95, 53244 T96 arg96, 53245 T97 arg97) 53246 { 53247 return functor_( 53248 enqueueArgs, 53249 arg0, 53250 arg1, 53251 arg2, 53252 arg3, 53253 arg4, 53254 arg5, 53255 arg6, 53256 arg7, 53257 arg8, 53258 arg9, 53259 arg10, 53260 arg11, 53261 arg12, 53262 arg13, 53263 arg14, 53264 arg15, 53265 arg16, 53266 arg17, 53267 arg18, 53268 arg19, 53269 arg20, 53270 arg21, 53271 arg22, 53272 arg23, 53273 arg24, 53274 arg25, 53275 arg26, 53276 arg27, 53277 arg28, 53278 arg29, 53279 arg30, 53280 arg31, 53281 arg32, 53282 arg33, 53283 arg34, 53284 arg35, 53285 arg36, 53286 arg37, 53287 arg38, 53288 arg39, 53289 arg40, 53290 arg41, 53291 arg42, 53292 arg43, 53293 arg44, 53294 arg45, 53295 arg46, 53296 arg47, 53297 arg48, 53298 arg49, 53299 arg50, 53300 arg51, 53301 arg52, 53302 arg53, 53303 arg54, 53304 arg55, 53305 arg56, 53306 arg57, 53307 arg58, 53308 arg59, 53309 arg60, 53310 arg61, 53311 arg62, 53312 arg63, 53313 arg64, 53314 arg65, 53315 arg66, 53316 arg67, 53317 arg68, 53318 arg69, 53319 arg70, 53320 arg71, 53321 arg72, 53322 arg73, 53323 arg74, 53324 arg75, 53325 arg76, 53326 arg77, 53327 arg78, 53328 arg79, 53329 arg80, 53330 arg81, 53331 arg82, 53332 arg83, 53333 arg84, 53334 arg85, 53335 arg86, 53336 arg87, 53337 arg88, 53338 arg89, 53339 arg90, 53340 arg91, 53341 arg92, 53342 arg93, 53343 arg94, 53344 arg95, 53345 arg96, 53346 arg97); 53347 } 53348 53349 operator type_ () 53350 { 53351 return type_(*this); 53352 } 53353 53354 }; 53355 53356 template< 53357 typename T0, 53358 typename T1, 53359 typename T2, 53360 typename T3, 53361 typename T4, 53362 typename T5, 53363 typename T6, 53364 typename T7, 53365 typename T8, 53366 typename T9, 53367 typename T10, 53368 typename T11, 53369 typename T12, 53370 typename T13, 53371 typename T14, 53372 typename T15, 53373 typename T16, 53374 typename T17, 53375 typename T18, 53376 typename T19, 53377 typename T20, 53378 typename T21, 53379 typename T22, 53380 typename T23, 53381 typename T24, 53382 typename T25, 53383 typename T26, 53384 typename T27, 53385 typename T28, 53386 typename T29, 53387 typename T30, 53388 typename T31, 53389 typename T32, 53390 typename T33, 53391 typename T34, 53392 typename T35, 53393 typename T36, 53394 typename T37, 53395 typename T38, 53396 typename T39, 53397 typename T40, 53398 typename T41, 53399 typename T42, 53400 typename T43, 53401 typename T44, 53402 typename T45, 53403 typename T46, 53404 typename T47, 53405 typename T48, 53406 typename T49, 53407 typename T50, 53408 typename T51, 53409 typename T52, 53410 typename T53, 53411 typename T54, 53412 typename T55, 53413 typename T56, 53414 typename T57, 53415 typename T58, 53416 typename T59, 53417 typename T60, 53418 typename T61, 53419 typename T62, 53420 typename T63, 53421 typename T64, 53422 typename T65, 53423 typename T66, 53424 typename T67, 53425 typename T68, 53426 typename T69, 53427 typename T70, 53428 typename T71, 53429 typename T72, 53430 typename T73, 53431 typename T74, 53432 typename T75, 53433 typename T76, 53434 typename T77, 53435 typename T78, 53436 typename T79, 53437 typename T80, 53438 typename T81, 53439 typename T82, 53440 typename T83, 53441 typename T84, 53442 typename T85, 53443 typename T86, 53444 typename T87, 53445 typename T88, 53446 typename T89, 53447 typename T90, 53448 typename T91, 53449 typename T92, 53450 typename T93, 53451 typename T94, 53452 typename T95, 53453 typename T96, 53454 typename T97, 53455 typename T98> 53456 struct functionImplementation_< 53457 T0, 53458 T1, 53459 T2, 53460 T3, 53461 T4, 53462 T5, 53463 T6, 53464 T7, 53465 T8, 53466 T9, 53467 T10, 53468 T11, 53469 T12, 53470 T13, 53471 T14, 53472 T15, 53473 T16, 53474 T17, 53475 T18, 53476 T19, 53477 T20, 53478 T21, 53479 T22, 53480 T23, 53481 T24, 53482 T25, 53483 T26, 53484 T27, 53485 T28, 53486 T29, 53487 T30, 53488 T31, 53489 T32, 53490 T33, 53491 T34, 53492 T35, 53493 T36, 53494 T37, 53495 T38, 53496 T39, 53497 T40, 53498 T41, 53499 T42, 53500 T43, 53501 T44, 53502 T45, 53503 T46, 53504 T47, 53505 T48, 53506 T49, 53507 T50, 53508 T51, 53509 T52, 53510 T53, 53511 T54, 53512 T55, 53513 T56, 53514 T57, 53515 T58, 53516 T59, 53517 T60, 53518 T61, 53519 T62, 53520 T63, 53521 T64, 53522 T65, 53523 T66, 53524 T67, 53525 T68, 53526 T69, 53527 T70, 53528 T71, 53529 T72, 53530 T73, 53531 T74, 53532 T75, 53533 T76, 53534 T77, 53535 T78, 53536 T79, 53537 T80, 53538 T81, 53539 T82, 53540 T83, 53541 T84, 53542 T85, 53543 T86, 53544 T87, 53545 T88, 53546 T89, 53547 T90, 53548 T91, 53549 T92, 53550 T93, 53551 T94, 53552 T95, 53553 T96, 53554 T97, 53555 T98, 53556 NullType, 53557 NullType, 53558 NullType, 53559 NullType, 53560 NullType, 53561 NullType, 53562 NullType, 53563 NullType, 53564 NullType, 53565 NullType, 53566 NullType, 53567 NullType, 53568 NullType, 53569 NullType, 53570 NullType, 53571 NullType, 53572 NullType, 53573 NullType, 53574 NullType, 53575 NullType, 53576 NullType, 53577 NullType, 53578 NullType, 53579 NullType, 53580 NullType, 53581 NullType, 53582 NullType, 53583 NullType, 53584 NullType> 53585 { 53586 typedef detail::KernelFunctorGlobal< 53587 T0, 53588 T1, 53589 T2, 53590 T3, 53591 T4, 53592 T5, 53593 T6, 53594 T7, 53595 T8, 53596 T9, 53597 T10, 53598 T11, 53599 T12, 53600 T13, 53601 T14, 53602 T15, 53603 T16, 53604 T17, 53605 T18, 53606 T19, 53607 T20, 53608 T21, 53609 T22, 53610 T23, 53611 T24, 53612 T25, 53613 T26, 53614 T27, 53615 T28, 53616 T29, 53617 T30, 53618 T31, 53619 T32, 53620 T33, 53621 T34, 53622 T35, 53623 T36, 53624 T37, 53625 T38, 53626 T39, 53627 T40, 53628 T41, 53629 T42, 53630 T43, 53631 T44, 53632 T45, 53633 T46, 53634 T47, 53635 T48, 53636 T49, 53637 T50, 53638 T51, 53639 T52, 53640 T53, 53641 T54, 53642 T55, 53643 T56, 53644 T57, 53645 T58, 53646 T59, 53647 T60, 53648 T61, 53649 T62, 53650 T63, 53651 T64, 53652 T65, 53653 T66, 53654 T67, 53655 T68, 53656 T69, 53657 T70, 53658 T71, 53659 T72, 53660 T73, 53661 T74, 53662 T75, 53663 T76, 53664 T77, 53665 T78, 53666 T79, 53667 T80, 53668 T81, 53669 T82, 53670 T83, 53671 T84, 53672 T85, 53673 T86, 53674 T87, 53675 T88, 53676 T89, 53677 T90, 53678 T91, 53679 T92, 53680 T93, 53681 T94, 53682 T95, 53683 T96, 53684 T97, 53685 T98, 53686 NullType, 53687 NullType, 53688 NullType, 53689 NullType, 53690 NullType, 53691 NullType, 53692 NullType, 53693 NullType, 53694 NullType, 53695 NullType, 53696 NullType, 53697 NullType, 53698 NullType, 53699 NullType, 53700 NullType, 53701 NullType, 53702 NullType, 53703 NullType, 53704 NullType, 53705 NullType, 53706 NullType, 53707 NullType, 53708 NullType, 53709 NullType, 53710 NullType, 53711 NullType, 53712 NullType, 53713 NullType, 53714 NullType> FunctorType; 53715 53716 FunctorType functor_; 53717 53718 functionImplementation_(const FunctorType &functor) : 53719 functor_(functor) 53720 { 53721 } 53722 53723 typedef std::tr1::function<Event ( 53724 const EnqueueArgs&, 53725 T0, 53726 T1, 53727 T2, 53728 T3, 53729 T4, 53730 T5, 53731 T6, 53732 T7, 53733 T8, 53734 T9, 53735 T10, 53736 T11, 53737 T12, 53738 T13, 53739 T14, 53740 T15, 53741 T16, 53742 T17, 53743 T18, 53744 T19, 53745 T20, 53746 T21, 53747 T22, 53748 T23, 53749 T24, 53750 T25, 53751 T26, 53752 T27, 53753 T28, 53754 T29, 53755 T30, 53756 T31, 53757 T32, 53758 T33, 53759 T34, 53760 T35, 53761 T36, 53762 T37, 53763 T38, 53764 T39, 53765 T40, 53766 T41, 53767 T42, 53768 T43, 53769 T44, 53770 T45, 53771 T46, 53772 T47, 53773 T48, 53774 T49, 53775 T50, 53776 T51, 53777 T52, 53778 T53, 53779 T54, 53780 T55, 53781 T56, 53782 T57, 53783 T58, 53784 T59, 53785 T60, 53786 T61, 53787 T62, 53788 T63, 53789 T64, 53790 T65, 53791 T66, 53792 T67, 53793 T68, 53794 T69, 53795 T70, 53796 T71, 53797 T72, 53798 T73, 53799 T74, 53800 T75, 53801 T76, 53802 T77, 53803 T78, 53804 T79, 53805 T80, 53806 T81, 53807 T82, 53808 T83, 53809 T84, 53810 T85, 53811 T86, 53812 T87, 53813 T88, 53814 T89, 53815 T90, 53816 T91, 53817 T92, 53818 T93, 53819 T94, 53820 T95, 53821 T96, 53822 T97, 53823 T98)> type_; 53824 53825 Event operator()(const EnqueueArgs& enqueueArgs, 53826 T0 arg0, 53827 T1 arg1, 53828 T2 arg2, 53829 T3 arg3, 53830 T4 arg4, 53831 T5 arg5, 53832 T6 arg6, 53833 T7 arg7, 53834 T8 arg8, 53835 T9 arg9, 53836 T10 arg10, 53837 T11 arg11, 53838 T12 arg12, 53839 T13 arg13, 53840 T14 arg14, 53841 T15 arg15, 53842 T16 arg16, 53843 T17 arg17, 53844 T18 arg18, 53845 T19 arg19, 53846 T20 arg20, 53847 T21 arg21, 53848 T22 arg22, 53849 T23 arg23, 53850 T24 arg24, 53851 T25 arg25, 53852 T26 arg26, 53853 T27 arg27, 53854 T28 arg28, 53855 T29 arg29, 53856 T30 arg30, 53857 T31 arg31, 53858 T32 arg32, 53859 T33 arg33, 53860 T34 arg34, 53861 T35 arg35, 53862 T36 arg36, 53863 T37 arg37, 53864 T38 arg38, 53865 T39 arg39, 53866 T40 arg40, 53867 T41 arg41, 53868 T42 arg42, 53869 T43 arg43, 53870 T44 arg44, 53871 T45 arg45, 53872 T46 arg46, 53873 T47 arg47, 53874 T48 arg48, 53875 T49 arg49, 53876 T50 arg50, 53877 T51 arg51, 53878 T52 arg52, 53879 T53 arg53, 53880 T54 arg54, 53881 T55 arg55, 53882 T56 arg56, 53883 T57 arg57, 53884 T58 arg58, 53885 T59 arg59, 53886 T60 arg60, 53887 T61 arg61, 53888 T62 arg62, 53889 T63 arg63, 53890 T64 arg64, 53891 T65 arg65, 53892 T66 arg66, 53893 T67 arg67, 53894 T68 arg68, 53895 T69 arg69, 53896 T70 arg70, 53897 T71 arg71, 53898 T72 arg72, 53899 T73 arg73, 53900 T74 arg74, 53901 T75 arg75, 53902 T76 arg76, 53903 T77 arg77, 53904 T78 arg78, 53905 T79 arg79, 53906 T80 arg80, 53907 T81 arg81, 53908 T82 arg82, 53909 T83 arg83, 53910 T84 arg84, 53911 T85 arg85, 53912 T86 arg86, 53913 T87 arg87, 53914 T88 arg88, 53915 T89 arg89, 53916 T90 arg90, 53917 T91 arg91, 53918 T92 arg92, 53919 T93 arg93, 53920 T94 arg94, 53921 T95 arg95, 53922 T96 arg96, 53923 T97 arg97, 53924 T98 arg98) 53925 { 53926 return functor_( 53927 enqueueArgs, 53928 arg0, 53929 arg1, 53930 arg2, 53931 arg3, 53932 arg4, 53933 arg5, 53934 arg6, 53935 arg7, 53936 arg8, 53937 arg9, 53938 arg10, 53939 arg11, 53940 arg12, 53941 arg13, 53942 arg14, 53943 arg15, 53944 arg16, 53945 arg17, 53946 arg18, 53947 arg19, 53948 arg20, 53949 arg21, 53950 arg22, 53951 arg23, 53952 arg24, 53953 arg25, 53954 arg26, 53955 arg27, 53956 arg28, 53957 arg29, 53958 arg30, 53959 arg31, 53960 arg32, 53961 arg33, 53962 arg34, 53963 arg35, 53964 arg36, 53965 arg37, 53966 arg38, 53967 arg39, 53968 arg40, 53969 arg41, 53970 arg42, 53971 arg43, 53972 arg44, 53973 arg45, 53974 arg46, 53975 arg47, 53976 arg48, 53977 arg49, 53978 arg50, 53979 arg51, 53980 arg52, 53981 arg53, 53982 arg54, 53983 arg55, 53984 arg56, 53985 arg57, 53986 arg58, 53987 arg59, 53988 arg60, 53989 arg61, 53990 arg62, 53991 arg63, 53992 arg64, 53993 arg65, 53994 arg66, 53995 arg67, 53996 arg68, 53997 arg69, 53998 arg70, 53999 arg71, 54000 arg72, 54001 arg73, 54002 arg74, 54003 arg75, 54004 arg76, 54005 arg77, 54006 arg78, 54007 arg79, 54008 arg80, 54009 arg81, 54010 arg82, 54011 arg83, 54012 arg84, 54013 arg85, 54014 arg86, 54015 arg87, 54016 arg88, 54017 arg89, 54018 arg90, 54019 arg91, 54020 arg92, 54021 arg93, 54022 arg94, 54023 arg95, 54024 arg96, 54025 arg97, 54026 arg98); 54027 } 54028 54029 operator type_ () 54030 { 54031 return type_(*this); 54032 } 54033 54034 }; 54035 54036 template< 54037 typename T0, 54038 typename T1, 54039 typename T2, 54040 typename T3, 54041 typename T4, 54042 typename T5, 54043 typename T6, 54044 typename T7, 54045 typename T8, 54046 typename T9, 54047 typename T10, 54048 typename T11, 54049 typename T12, 54050 typename T13, 54051 typename T14, 54052 typename T15, 54053 typename T16, 54054 typename T17, 54055 typename T18, 54056 typename T19, 54057 typename T20, 54058 typename T21, 54059 typename T22, 54060 typename T23, 54061 typename T24, 54062 typename T25, 54063 typename T26, 54064 typename T27, 54065 typename T28, 54066 typename T29, 54067 typename T30, 54068 typename T31, 54069 typename T32, 54070 typename T33, 54071 typename T34, 54072 typename T35, 54073 typename T36, 54074 typename T37, 54075 typename T38, 54076 typename T39, 54077 typename T40, 54078 typename T41, 54079 typename T42, 54080 typename T43, 54081 typename T44, 54082 typename T45, 54083 typename T46, 54084 typename T47, 54085 typename T48, 54086 typename T49, 54087 typename T50, 54088 typename T51, 54089 typename T52, 54090 typename T53, 54091 typename T54, 54092 typename T55, 54093 typename T56, 54094 typename T57, 54095 typename T58, 54096 typename T59, 54097 typename T60, 54098 typename T61, 54099 typename T62, 54100 typename T63, 54101 typename T64, 54102 typename T65, 54103 typename T66, 54104 typename T67, 54105 typename T68, 54106 typename T69, 54107 typename T70, 54108 typename T71, 54109 typename T72, 54110 typename T73, 54111 typename T74, 54112 typename T75, 54113 typename T76, 54114 typename T77, 54115 typename T78, 54116 typename T79, 54117 typename T80, 54118 typename T81, 54119 typename T82, 54120 typename T83, 54121 typename T84, 54122 typename T85, 54123 typename T86, 54124 typename T87, 54125 typename T88, 54126 typename T89, 54127 typename T90, 54128 typename T91, 54129 typename T92, 54130 typename T93, 54131 typename T94, 54132 typename T95, 54133 typename T96, 54134 typename T97, 54135 typename T98, 54136 typename T99> 54137 struct functionImplementation_< 54138 T0, 54139 T1, 54140 T2, 54141 T3, 54142 T4, 54143 T5, 54144 T6, 54145 T7, 54146 T8, 54147 T9, 54148 T10, 54149 T11, 54150 T12, 54151 T13, 54152 T14, 54153 T15, 54154 T16, 54155 T17, 54156 T18, 54157 T19, 54158 T20, 54159 T21, 54160 T22, 54161 T23, 54162 T24, 54163 T25, 54164 T26, 54165 T27, 54166 T28, 54167 T29, 54168 T30, 54169 T31, 54170 T32, 54171 T33, 54172 T34, 54173 T35, 54174 T36, 54175 T37, 54176 T38, 54177 T39, 54178 T40, 54179 T41, 54180 T42, 54181 T43, 54182 T44, 54183 T45, 54184 T46, 54185 T47, 54186 T48, 54187 T49, 54188 T50, 54189 T51, 54190 T52, 54191 T53, 54192 T54, 54193 T55, 54194 T56, 54195 T57, 54196 T58, 54197 T59, 54198 T60, 54199 T61, 54200 T62, 54201 T63, 54202 T64, 54203 T65, 54204 T66, 54205 T67, 54206 T68, 54207 T69, 54208 T70, 54209 T71, 54210 T72, 54211 T73, 54212 T74, 54213 T75, 54214 T76, 54215 T77, 54216 T78, 54217 T79, 54218 T80, 54219 T81, 54220 T82, 54221 T83, 54222 T84, 54223 T85, 54224 T86, 54225 T87, 54226 T88, 54227 T89, 54228 T90, 54229 T91, 54230 T92, 54231 T93, 54232 T94, 54233 T95, 54234 T96, 54235 T97, 54236 T98, 54237 T99, 54238 NullType, 54239 NullType, 54240 NullType, 54241 NullType, 54242 NullType, 54243 NullType, 54244 NullType, 54245 NullType, 54246 NullType, 54247 NullType, 54248 NullType, 54249 NullType, 54250 NullType, 54251 NullType, 54252 NullType, 54253 NullType, 54254 NullType, 54255 NullType, 54256 NullType, 54257 NullType, 54258 NullType, 54259 NullType, 54260 NullType, 54261 NullType, 54262 NullType, 54263 NullType, 54264 NullType, 54265 NullType> 54266 { 54267 typedef detail::KernelFunctorGlobal< 54268 T0, 54269 T1, 54270 T2, 54271 T3, 54272 T4, 54273 T5, 54274 T6, 54275 T7, 54276 T8, 54277 T9, 54278 T10, 54279 T11, 54280 T12, 54281 T13, 54282 T14, 54283 T15, 54284 T16, 54285 T17, 54286 T18, 54287 T19, 54288 T20, 54289 T21, 54290 T22, 54291 T23, 54292 T24, 54293 T25, 54294 T26, 54295 T27, 54296 T28, 54297 T29, 54298 T30, 54299 T31, 54300 T32, 54301 T33, 54302 T34, 54303 T35, 54304 T36, 54305 T37, 54306 T38, 54307 T39, 54308 T40, 54309 T41, 54310 T42, 54311 T43, 54312 T44, 54313 T45, 54314 T46, 54315 T47, 54316 T48, 54317 T49, 54318 T50, 54319 T51, 54320 T52, 54321 T53, 54322 T54, 54323 T55, 54324 T56, 54325 T57, 54326 T58, 54327 T59, 54328 T60, 54329 T61, 54330 T62, 54331 T63, 54332 T64, 54333 T65, 54334 T66, 54335 T67, 54336 T68, 54337 T69, 54338 T70, 54339 T71, 54340 T72, 54341 T73, 54342 T74, 54343 T75, 54344 T76, 54345 T77, 54346 T78, 54347 T79, 54348 T80, 54349 T81, 54350 T82, 54351 T83, 54352 T84, 54353 T85, 54354 T86, 54355 T87, 54356 T88, 54357 T89, 54358 T90, 54359 T91, 54360 T92, 54361 T93, 54362 T94, 54363 T95, 54364 T96, 54365 T97, 54366 T98, 54367 T99, 54368 NullType, 54369 NullType, 54370 NullType, 54371 NullType, 54372 NullType, 54373 NullType, 54374 NullType, 54375 NullType, 54376 NullType, 54377 NullType, 54378 NullType, 54379 NullType, 54380 NullType, 54381 NullType, 54382 NullType, 54383 NullType, 54384 NullType, 54385 NullType, 54386 NullType, 54387 NullType, 54388 NullType, 54389 NullType, 54390 NullType, 54391 NullType, 54392 NullType, 54393 NullType, 54394 NullType, 54395 NullType> FunctorType; 54396 54397 FunctorType functor_; 54398 54399 functionImplementation_(const FunctorType &functor) : 54400 functor_(functor) 54401 { 54402 } 54403 54404 typedef std::tr1::function<Event ( 54405 const EnqueueArgs&, 54406 T0, 54407 T1, 54408 T2, 54409 T3, 54410 T4, 54411 T5, 54412 T6, 54413 T7, 54414 T8, 54415 T9, 54416 T10, 54417 T11, 54418 T12, 54419 T13, 54420 T14, 54421 T15, 54422 T16, 54423 T17, 54424 T18, 54425 T19, 54426 T20, 54427 T21, 54428 T22, 54429 T23, 54430 T24, 54431 T25, 54432 T26, 54433 T27, 54434 T28, 54435 T29, 54436 T30, 54437 T31, 54438 T32, 54439 T33, 54440 T34, 54441 T35, 54442 T36, 54443 T37, 54444 T38, 54445 T39, 54446 T40, 54447 T41, 54448 T42, 54449 T43, 54450 T44, 54451 T45, 54452 T46, 54453 T47, 54454 T48, 54455 T49, 54456 T50, 54457 T51, 54458 T52, 54459 T53, 54460 T54, 54461 T55, 54462 T56, 54463 T57, 54464 T58, 54465 T59, 54466 T60, 54467 T61, 54468 T62, 54469 T63, 54470 T64, 54471 T65, 54472 T66, 54473 T67, 54474 T68, 54475 T69, 54476 T70, 54477 T71, 54478 T72, 54479 T73, 54480 T74, 54481 T75, 54482 T76, 54483 T77, 54484 T78, 54485 T79, 54486 T80, 54487 T81, 54488 T82, 54489 T83, 54490 T84, 54491 T85, 54492 T86, 54493 T87, 54494 T88, 54495 T89, 54496 T90, 54497 T91, 54498 T92, 54499 T93, 54500 T94, 54501 T95, 54502 T96, 54503 T97, 54504 T98, 54505 T99)> type_; 54506 54507 Event operator()(const EnqueueArgs& enqueueArgs, 54508 T0 arg0, 54509 T1 arg1, 54510 T2 arg2, 54511 T3 arg3, 54512 T4 arg4, 54513 T5 arg5, 54514 T6 arg6, 54515 T7 arg7, 54516 T8 arg8, 54517 T9 arg9, 54518 T10 arg10, 54519 T11 arg11, 54520 T12 arg12, 54521 T13 arg13, 54522 T14 arg14, 54523 T15 arg15, 54524 T16 arg16, 54525 T17 arg17, 54526 T18 arg18, 54527 T19 arg19, 54528 T20 arg20, 54529 T21 arg21, 54530 T22 arg22, 54531 T23 arg23, 54532 T24 arg24, 54533 T25 arg25, 54534 T26 arg26, 54535 T27 arg27, 54536 T28 arg28, 54537 T29 arg29, 54538 T30 arg30, 54539 T31 arg31, 54540 T32 arg32, 54541 T33 arg33, 54542 T34 arg34, 54543 T35 arg35, 54544 T36 arg36, 54545 T37 arg37, 54546 T38 arg38, 54547 T39 arg39, 54548 T40 arg40, 54549 T41 arg41, 54550 T42 arg42, 54551 T43 arg43, 54552 T44 arg44, 54553 T45 arg45, 54554 T46 arg46, 54555 T47 arg47, 54556 T48 arg48, 54557 T49 arg49, 54558 T50 arg50, 54559 T51 arg51, 54560 T52 arg52, 54561 T53 arg53, 54562 T54 arg54, 54563 T55 arg55, 54564 T56 arg56, 54565 T57 arg57, 54566 T58 arg58, 54567 T59 arg59, 54568 T60 arg60, 54569 T61 arg61, 54570 T62 arg62, 54571 T63 arg63, 54572 T64 arg64, 54573 T65 arg65, 54574 T66 arg66, 54575 T67 arg67, 54576 T68 arg68, 54577 T69 arg69, 54578 T70 arg70, 54579 T71 arg71, 54580 T72 arg72, 54581 T73 arg73, 54582 T74 arg74, 54583 T75 arg75, 54584 T76 arg76, 54585 T77 arg77, 54586 T78 arg78, 54587 T79 arg79, 54588 T80 arg80, 54589 T81 arg81, 54590 T82 arg82, 54591 T83 arg83, 54592 T84 arg84, 54593 T85 arg85, 54594 T86 arg86, 54595 T87 arg87, 54596 T88 arg88, 54597 T89 arg89, 54598 T90 arg90, 54599 T91 arg91, 54600 T92 arg92, 54601 T93 arg93, 54602 T94 arg94, 54603 T95 arg95, 54604 T96 arg96, 54605 T97 arg97, 54606 T98 arg98, 54607 T99 arg99) 54608 { 54609 return functor_( 54610 enqueueArgs, 54611 arg0, 54612 arg1, 54613 arg2, 54614 arg3, 54615 arg4, 54616 arg5, 54617 arg6, 54618 arg7, 54619 arg8, 54620 arg9, 54621 arg10, 54622 arg11, 54623 arg12, 54624 arg13, 54625 arg14, 54626 arg15, 54627 arg16, 54628 arg17, 54629 arg18, 54630 arg19, 54631 arg20, 54632 arg21, 54633 arg22, 54634 arg23, 54635 arg24, 54636 arg25, 54637 arg26, 54638 arg27, 54639 arg28, 54640 arg29, 54641 arg30, 54642 arg31, 54643 arg32, 54644 arg33, 54645 arg34, 54646 arg35, 54647 arg36, 54648 arg37, 54649 arg38, 54650 arg39, 54651 arg40, 54652 arg41, 54653 arg42, 54654 arg43, 54655 arg44, 54656 arg45, 54657 arg46, 54658 arg47, 54659 arg48, 54660 arg49, 54661 arg50, 54662 arg51, 54663 arg52, 54664 arg53, 54665 arg54, 54666 arg55, 54667 arg56, 54668 arg57, 54669 arg58, 54670 arg59, 54671 arg60, 54672 arg61, 54673 arg62, 54674 arg63, 54675 arg64, 54676 arg65, 54677 arg66, 54678 arg67, 54679 arg68, 54680 arg69, 54681 arg70, 54682 arg71, 54683 arg72, 54684 arg73, 54685 arg74, 54686 arg75, 54687 arg76, 54688 arg77, 54689 arg78, 54690 arg79, 54691 arg80, 54692 arg81, 54693 arg82, 54694 arg83, 54695 arg84, 54696 arg85, 54697 arg86, 54698 arg87, 54699 arg88, 54700 arg89, 54701 arg90, 54702 arg91, 54703 arg92, 54704 arg93, 54705 arg94, 54706 arg95, 54707 arg96, 54708 arg97, 54709 arg98, 54710 arg99); 54711 } 54712 54713 operator type_ () 54714 { 54715 return type_(*this); 54716 } 54717 54718 }; 54719 54720 template< 54721 typename T0, 54722 typename T1, 54723 typename T2, 54724 typename T3, 54725 typename T4, 54726 typename T5, 54727 typename T6, 54728 typename T7, 54729 typename T8, 54730 typename T9, 54731 typename T10, 54732 typename T11, 54733 typename T12, 54734 typename T13, 54735 typename T14, 54736 typename T15, 54737 typename T16, 54738 typename T17, 54739 typename T18, 54740 typename T19, 54741 typename T20, 54742 typename T21, 54743 typename T22, 54744 typename T23, 54745 typename T24, 54746 typename T25, 54747 typename T26, 54748 typename T27, 54749 typename T28, 54750 typename T29, 54751 typename T30, 54752 typename T31, 54753 typename T32, 54754 typename T33, 54755 typename T34, 54756 typename T35, 54757 typename T36, 54758 typename T37, 54759 typename T38, 54760 typename T39, 54761 typename T40, 54762 typename T41, 54763 typename T42, 54764 typename T43, 54765 typename T44, 54766 typename T45, 54767 typename T46, 54768 typename T47, 54769 typename T48, 54770 typename T49, 54771 typename T50, 54772 typename T51, 54773 typename T52, 54774 typename T53, 54775 typename T54, 54776 typename T55, 54777 typename T56, 54778 typename T57, 54779 typename T58, 54780 typename T59, 54781 typename T60, 54782 typename T61, 54783 typename T62, 54784 typename T63, 54785 typename T64, 54786 typename T65, 54787 typename T66, 54788 typename T67, 54789 typename T68, 54790 typename T69, 54791 typename T70, 54792 typename T71, 54793 typename T72, 54794 typename T73, 54795 typename T74, 54796 typename T75, 54797 typename T76, 54798 typename T77, 54799 typename T78, 54800 typename T79, 54801 typename T80, 54802 typename T81, 54803 typename T82, 54804 typename T83, 54805 typename T84, 54806 typename T85, 54807 typename T86, 54808 typename T87, 54809 typename T88, 54810 typename T89, 54811 typename T90, 54812 typename T91, 54813 typename T92, 54814 typename T93, 54815 typename T94, 54816 typename T95, 54817 typename T96, 54818 typename T97, 54819 typename T98, 54820 typename T99, 54821 typename T100> 54822 struct functionImplementation_< 54823 T0, 54824 T1, 54825 T2, 54826 T3, 54827 T4, 54828 T5, 54829 T6, 54830 T7, 54831 T8, 54832 T9, 54833 T10, 54834 T11, 54835 T12, 54836 T13, 54837 T14, 54838 T15, 54839 T16, 54840 T17, 54841 T18, 54842 T19, 54843 T20, 54844 T21, 54845 T22, 54846 T23, 54847 T24, 54848 T25, 54849 T26, 54850 T27, 54851 T28, 54852 T29, 54853 T30, 54854 T31, 54855 T32, 54856 T33, 54857 T34, 54858 T35, 54859 T36, 54860 T37, 54861 T38, 54862 T39, 54863 T40, 54864 T41, 54865 T42, 54866 T43, 54867 T44, 54868 T45, 54869 T46, 54870 T47, 54871 T48, 54872 T49, 54873 T50, 54874 T51, 54875 T52, 54876 T53, 54877 T54, 54878 T55, 54879 T56, 54880 T57, 54881 T58, 54882 T59, 54883 T60, 54884 T61, 54885 T62, 54886 T63, 54887 T64, 54888 T65, 54889 T66, 54890 T67, 54891 T68, 54892 T69, 54893 T70, 54894 T71, 54895 T72, 54896 T73, 54897 T74, 54898 T75, 54899 T76, 54900 T77, 54901 T78, 54902 T79, 54903 T80, 54904 T81, 54905 T82, 54906 T83, 54907 T84, 54908 T85, 54909 T86, 54910 T87, 54911 T88, 54912 T89, 54913 T90, 54914 T91, 54915 T92, 54916 T93, 54917 T94, 54918 T95, 54919 T96, 54920 T97, 54921 T98, 54922 T99, 54923 T100, 54924 NullType, 54925 NullType, 54926 NullType, 54927 NullType, 54928 NullType, 54929 NullType, 54930 NullType, 54931 NullType, 54932 NullType, 54933 NullType, 54934 NullType, 54935 NullType, 54936 NullType, 54937 NullType, 54938 NullType, 54939 NullType, 54940 NullType, 54941 NullType, 54942 NullType, 54943 NullType, 54944 NullType, 54945 NullType, 54946 NullType, 54947 NullType, 54948 NullType, 54949 NullType, 54950 NullType> 54951 { 54952 typedef detail::KernelFunctorGlobal< 54953 T0, 54954 T1, 54955 T2, 54956 T3, 54957 T4, 54958 T5, 54959 T6, 54960 T7, 54961 T8, 54962 T9, 54963 T10, 54964 T11, 54965 T12, 54966 T13, 54967 T14, 54968 T15, 54969 T16, 54970 T17, 54971 T18, 54972 T19, 54973 T20, 54974 T21, 54975 T22, 54976 T23, 54977 T24, 54978 T25, 54979 T26, 54980 T27, 54981 T28, 54982 T29, 54983 T30, 54984 T31, 54985 T32, 54986 T33, 54987 T34, 54988 T35, 54989 T36, 54990 T37, 54991 T38, 54992 T39, 54993 T40, 54994 T41, 54995 T42, 54996 T43, 54997 T44, 54998 T45, 54999 T46, 55000 T47, 55001 T48, 55002 T49, 55003 T50, 55004 T51, 55005 T52, 55006 T53, 55007 T54, 55008 T55, 55009 T56, 55010 T57, 55011 T58, 55012 T59, 55013 T60, 55014 T61, 55015 T62, 55016 T63, 55017 T64, 55018 T65, 55019 T66, 55020 T67, 55021 T68, 55022 T69, 55023 T70, 55024 T71, 55025 T72, 55026 T73, 55027 T74, 55028 T75, 55029 T76, 55030 T77, 55031 T78, 55032 T79, 55033 T80, 55034 T81, 55035 T82, 55036 T83, 55037 T84, 55038 T85, 55039 T86, 55040 T87, 55041 T88, 55042 T89, 55043 T90, 55044 T91, 55045 T92, 55046 T93, 55047 T94, 55048 T95, 55049 T96, 55050 T97, 55051 T98, 55052 T99, 55053 T100, 55054 NullType, 55055 NullType, 55056 NullType, 55057 NullType, 55058 NullType, 55059 NullType, 55060 NullType, 55061 NullType, 55062 NullType, 55063 NullType, 55064 NullType, 55065 NullType, 55066 NullType, 55067 NullType, 55068 NullType, 55069 NullType, 55070 NullType, 55071 NullType, 55072 NullType, 55073 NullType, 55074 NullType, 55075 NullType, 55076 NullType, 55077 NullType, 55078 NullType, 55079 NullType, 55080 NullType> FunctorType; 55081 55082 FunctorType functor_; 55083 55084 functionImplementation_(const FunctorType &functor) : 55085 functor_(functor) 55086 { 55087 } 55088 55089 typedef std::tr1::function<Event ( 55090 const EnqueueArgs&, 55091 T0, 55092 T1, 55093 T2, 55094 T3, 55095 T4, 55096 T5, 55097 T6, 55098 T7, 55099 T8, 55100 T9, 55101 T10, 55102 T11, 55103 T12, 55104 T13, 55105 T14, 55106 T15, 55107 T16, 55108 T17, 55109 T18, 55110 T19, 55111 T20, 55112 T21, 55113 T22, 55114 T23, 55115 T24, 55116 T25, 55117 T26, 55118 T27, 55119 T28, 55120 T29, 55121 T30, 55122 T31, 55123 T32, 55124 T33, 55125 T34, 55126 T35, 55127 T36, 55128 T37, 55129 T38, 55130 T39, 55131 T40, 55132 T41, 55133 T42, 55134 T43, 55135 T44, 55136 T45, 55137 T46, 55138 T47, 55139 T48, 55140 T49, 55141 T50, 55142 T51, 55143 T52, 55144 T53, 55145 T54, 55146 T55, 55147 T56, 55148 T57, 55149 T58, 55150 T59, 55151 T60, 55152 T61, 55153 T62, 55154 T63, 55155 T64, 55156 T65, 55157 T66, 55158 T67, 55159 T68, 55160 T69, 55161 T70, 55162 T71, 55163 T72, 55164 T73, 55165 T74, 55166 T75, 55167 T76, 55168 T77, 55169 T78, 55170 T79, 55171 T80, 55172 T81, 55173 T82, 55174 T83, 55175 T84, 55176 T85, 55177 T86, 55178 T87, 55179 T88, 55180 T89, 55181 T90, 55182 T91, 55183 T92, 55184 T93, 55185 T94, 55186 T95, 55187 T96, 55188 T97, 55189 T98, 55190 T99, 55191 T100)> type_; 55192 55193 Event operator()(const EnqueueArgs& enqueueArgs, 55194 T0 arg0, 55195 T1 arg1, 55196 T2 arg2, 55197 T3 arg3, 55198 T4 arg4, 55199 T5 arg5, 55200 T6 arg6, 55201 T7 arg7, 55202 T8 arg8, 55203 T9 arg9, 55204 T10 arg10, 55205 T11 arg11, 55206 T12 arg12, 55207 T13 arg13, 55208 T14 arg14, 55209 T15 arg15, 55210 T16 arg16, 55211 T17 arg17, 55212 T18 arg18, 55213 T19 arg19, 55214 T20 arg20, 55215 T21 arg21, 55216 T22 arg22, 55217 T23 arg23, 55218 T24 arg24, 55219 T25 arg25, 55220 T26 arg26, 55221 T27 arg27, 55222 T28 arg28, 55223 T29 arg29, 55224 T30 arg30, 55225 T31 arg31, 55226 T32 arg32, 55227 T33 arg33, 55228 T34 arg34, 55229 T35 arg35, 55230 T36 arg36, 55231 T37 arg37, 55232 T38 arg38, 55233 T39 arg39, 55234 T40 arg40, 55235 T41 arg41, 55236 T42 arg42, 55237 T43 arg43, 55238 T44 arg44, 55239 T45 arg45, 55240 T46 arg46, 55241 T47 arg47, 55242 T48 arg48, 55243 T49 arg49, 55244 T50 arg50, 55245 T51 arg51, 55246 T52 arg52, 55247 T53 arg53, 55248 T54 arg54, 55249 T55 arg55, 55250 T56 arg56, 55251 T57 arg57, 55252 T58 arg58, 55253 T59 arg59, 55254 T60 arg60, 55255 T61 arg61, 55256 T62 arg62, 55257 T63 arg63, 55258 T64 arg64, 55259 T65 arg65, 55260 T66 arg66, 55261 T67 arg67, 55262 T68 arg68, 55263 T69 arg69, 55264 T70 arg70, 55265 T71 arg71, 55266 T72 arg72, 55267 T73 arg73, 55268 T74 arg74, 55269 T75 arg75, 55270 T76 arg76, 55271 T77 arg77, 55272 T78 arg78, 55273 T79 arg79, 55274 T80 arg80, 55275 T81 arg81, 55276 T82 arg82, 55277 T83 arg83, 55278 T84 arg84, 55279 T85 arg85, 55280 T86 arg86, 55281 T87 arg87, 55282 T88 arg88, 55283 T89 arg89, 55284 T90 arg90, 55285 T91 arg91, 55286 T92 arg92, 55287 T93 arg93, 55288 T94 arg94, 55289 T95 arg95, 55290 T96 arg96, 55291 T97 arg97, 55292 T98 arg98, 55293 T99 arg99, 55294 T100 arg100) 55295 { 55296 return functor_( 55297 enqueueArgs, 55298 arg0, 55299 arg1, 55300 arg2, 55301 arg3, 55302 arg4, 55303 arg5, 55304 arg6, 55305 arg7, 55306 arg8, 55307 arg9, 55308 arg10, 55309 arg11, 55310 arg12, 55311 arg13, 55312 arg14, 55313 arg15, 55314 arg16, 55315 arg17, 55316 arg18, 55317 arg19, 55318 arg20, 55319 arg21, 55320 arg22, 55321 arg23, 55322 arg24, 55323 arg25, 55324 arg26, 55325 arg27, 55326 arg28, 55327 arg29, 55328 arg30, 55329 arg31, 55330 arg32, 55331 arg33, 55332 arg34, 55333 arg35, 55334 arg36, 55335 arg37, 55336 arg38, 55337 arg39, 55338 arg40, 55339 arg41, 55340 arg42, 55341 arg43, 55342 arg44, 55343 arg45, 55344 arg46, 55345 arg47, 55346 arg48, 55347 arg49, 55348 arg50, 55349 arg51, 55350 arg52, 55351 arg53, 55352 arg54, 55353 arg55, 55354 arg56, 55355 arg57, 55356 arg58, 55357 arg59, 55358 arg60, 55359 arg61, 55360 arg62, 55361 arg63, 55362 arg64, 55363 arg65, 55364 arg66, 55365 arg67, 55366 arg68, 55367 arg69, 55368 arg70, 55369 arg71, 55370 arg72, 55371 arg73, 55372 arg74, 55373 arg75, 55374 arg76, 55375 arg77, 55376 arg78, 55377 arg79, 55378 arg80, 55379 arg81, 55380 arg82, 55381 arg83, 55382 arg84, 55383 arg85, 55384 arg86, 55385 arg87, 55386 arg88, 55387 arg89, 55388 arg90, 55389 arg91, 55390 arg92, 55391 arg93, 55392 arg94, 55393 arg95, 55394 arg96, 55395 arg97, 55396 arg98, 55397 arg99, 55398 arg100); 55399 } 55400 55401 operator type_ () 55402 { 55403 return type_(*this); 55404 } 55405 55406 }; 55407 55408 template< 55409 typename T0, 55410 typename T1, 55411 typename T2, 55412 typename T3, 55413 typename T4, 55414 typename T5, 55415 typename T6, 55416 typename T7, 55417 typename T8, 55418 typename T9, 55419 typename T10, 55420 typename T11, 55421 typename T12, 55422 typename T13, 55423 typename T14, 55424 typename T15, 55425 typename T16, 55426 typename T17, 55427 typename T18, 55428 typename T19, 55429 typename T20, 55430 typename T21, 55431 typename T22, 55432 typename T23, 55433 typename T24, 55434 typename T25, 55435 typename T26, 55436 typename T27, 55437 typename T28, 55438 typename T29, 55439 typename T30, 55440 typename T31, 55441 typename T32, 55442 typename T33, 55443 typename T34, 55444 typename T35, 55445 typename T36, 55446 typename T37, 55447 typename T38, 55448 typename T39, 55449 typename T40, 55450 typename T41, 55451 typename T42, 55452 typename T43, 55453 typename T44, 55454 typename T45, 55455 typename T46, 55456 typename T47, 55457 typename T48, 55458 typename T49, 55459 typename T50, 55460 typename T51, 55461 typename T52, 55462 typename T53, 55463 typename T54, 55464 typename T55, 55465 typename T56, 55466 typename T57, 55467 typename T58, 55468 typename T59, 55469 typename T60, 55470 typename T61, 55471 typename T62, 55472 typename T63, 55473 typename T64, 55474 typename T65, 55475 typename T66, 55476 typename T67, 55477 typename T68, 55478 typename T69, 55479 typename T70, 55480 typename T71, 55481 typename T72, 55482 typename T73, 55483 typename T74, 55484 typename T75, 55485 typename T76, 55486 typename T77, 55487 typename T78, 55488 typename T79, 55489 typename T80, 55490 typename T81, 55491 typename T82, 55492 typename T83, 55493 typename T84, 55494 typename T85, 55495 typename T86, 55496 typename T87, 55497 typename T88, 55498 typename T89, 55499 typename T90, 55500 typename T91, 55501 typename T92, 55502 typename T93, 55503 typename T94, 55504 typename T95, 55505 typename T96, 55506 typename T97, 55507 typename T98, 55508 typename T99, 55509 typename T100, 55510 typename T101> 55511 struct functionImplementation_< 55512 T0, 55513 T1, 55514 T2, 55515 T3, 55516 T4, 55517 T5, 55518 T6, 55519 T7, 55520 T8, 55521 T9, 55522 T10, 55523 T11, 55524 T12, 55525 T13, 55526 T14, 55527 T15, 55528 T16, 55529 T17, 55530 T18, 55531 T19, 55532 T20, 55533 T21, 55534 T22, 55535 T23, 55536 T24, 55537 T25, 55538 T26, 55539 T27, 55540 T28, 55541 T29, 55542 T30, 55543 T31, 55544 T32, 55545 T33, 55546 T34, 55547 T35, 55548 T36, 55549 T37, 55550 T38, 55551 T39, 55552 T40, 55553 T41, 55554 T42, 55555 T43, 55556 T44, 55557 T45, 55558 T46, 55559 T47, 55560 T48, 55561 T49, 55562 T50, 55563 T51, 55564 T52, 55565 T53, 55566 T54, 55567 T55, 55568 T56, 55569 T57, 55570 T58, 55571 T59, 55572 T60, 55573 T61, 55574 T62, 55575 T63, 55576 T64, 55577 T65, 55578 T66, 55579 T67, 55580 T68, 55581 T69, 55582 T70, 55583 T71, 55584 T72, 55585 T73, 55586 T74, 55587 T75, 55588 T76, 55589 T77, 55590 T78, 55591 T79, 55592 T80, 55593 T81, 55594 T82, 55595 T83, 55596 T84, 55597 T85, 55598 T86, 55599 T87, 55600 T88, 55601 T89, 55602 T90, 55603 T91, 55604 T92, 55605 T93, 55606 T94, 55607 T95, 55608 T96, 55609 T97, 55610 T98, 55611 T99, 55612 T100, 55613 T101, 55614 NullType, 55615 NullType, 55616 NullType, 55617 NullType, 55618 NullType, 55619 NullType, 55620 NullType, 55621 NullType, 55622 NullType, 55623 NullType, 55624 NullType, 55625 NullType, 55626 NullType, 55627 NullType, 55628 NullType, 55629 NullType, 55630 NullType, 55631 NullType, 55632 NullType, 55633 NullType, 55634 NullType, 55635 NullType, 55636 NullType, 55637 NullType, 55638 NullType, 55639 NullType> 55640 { 55641 typedef detail::KernelFunctorGlobal< 55642 T0, 55643 T1, 55644 T2, 55645 T3, 55646 T4, 55647 T5, 55648 T6, 55649 T7, 55650 T8, 55651 T9, 55652 T10, 55653 T11, 55654 T12, 55655 T13, 55656 T14, 55657 T15, 55658 T16, 55659 T17, 55660 T18, 55661 T19, 55662 T20, 55663 T21, 55664 T22, 55665 T23, 55666 T24, 55667 T25, 55668 T26, 55669 T27, 55670 T28, 55671 T29, 55672 T30, 55673 T31, 55674 T32, 55675 T33, 55676 T34, 55677 T35, 55678 T36, 55679 T37, 55680 T38, 55681 T39, 55682 T40, 55683 T41, 55684 T42, 55685 T43, 55686 T44, 55687 T45, 55688 T46, 55689 T47, 55690 T48, 55691 T49, 55692 T50, 55693 T51, 55694 T52, 55695 T53, 55696 T54, 55697 T55, 55698 T56, 55699 T57, 55700 T58, 55701 T59, 55702 T60, 55703 T61, 55704 T62, 55705 T63, 55706 T64, 55707 T65, 55708 T66, 55709 T67, 55710 T68, 55711 T69, 55712 T70, 55713 T71, 55714 T72, 55715 T73, 55716 T74, 55717 T75, 55718 T76, 55719 T77, 55720 T78, 55721 T79, 55722 T80, 55723 T81, 55724 T82, 55725 T83, 55726 T84, 55727 T85, 55728 T86, 55729 T87, 55730 T88, 55731 T89, 55732 T90, 55733 T91, 55734 T92, 55735 T93, 55736 T94, 55737 T95, 55738 T96, 55739 T97, 55740 T98, 55741 T99, 55742 T100, 55743 T101, 55744 NullType, 55745 NullType, 55746 NullType, 55747 NullType, 55748 NullType, 55749 NullType, 55750 NullType, 55751 NullType, 55752 NullType, 55753 NullType, 55754 NullType, 55755 NullType, 55756 NullType, 55757 NullType, 55758 NullType, 55759 NullType, 55760 NullType, 55761 NullType, 55762 NullType, 55763 NullType, 55764 NullType, 55765 NullType, 55766 NullType, 55767 NullType, 55768 NullType, 55769 NullType> FunctorType; 55770 55771 FunctorType functor_; 55772 55773 functionImplementation_(const FunctorType &functor) : 55774 functor_(functor) 55775 { 55776 } 55777 55778 typedef std::tr1::function<Event ( 55779 const EnqueueArgs&, 55780 T0, 55781 T1, 55782 T2, 55783 T3, 55784 T4, 55785 T5, 55786 T6, 55787 T7, 55788 T8, 55789 T9, 55790 T10, 55791 T11, 55792 T12, 55793 T13, 55794 T14, 55795 T15, 55796 T16, 55797 T17, 55798 T18, 55799 T19, 55800 T20, 55801 T21, 55802 T22, 55803 T23, 55804 T24, 55805 T25, 55806 T26, 55807 T27, 55808 T28, 55809 T29, 55810 T30, 55811 T31, 55812 T32, 55813 T33, 55814 T34, 55815 T35, 55816 T36, 55817 T37, 55818 T38, 55819 T39, 55820 T40, 55821 T41, 55822 T42, 55823 T43, 55824 T44, 55825 T45, 55826 T46, 55827 T47, 55828 T48, 55829 T49, 55830 T50, 55831 T51, 55832 T52, 55833 T53, 55834 T54, 55835 T55, 55836 T56, 55837 T57, 55838 T58, 55839 T59, 55840 T60, 55841 T61, 55842 T62, 55843 T63, 55844 T64, 55845 T65, 55846 T66, 55847 T67, 55848 T68, 55849 T69, 55850 T70, 55851 T71, 55852 T72, 55853 T73, 55854 T74, 55855 T75, 55856 T76, 55857 T77, 55858 T78, 55859 T79, 55860 T80, 55861 T81, 55862 T82, 55863 T83, 55864 T84, 55865 T85, 55866 T86, 55867 T87, 55868 T88, 55869 T89, 55870 T90, 55871 T91, 55872 T92, 55873 T93, 55874 T94, 55875 T95, 55876 T96, 55877 T97, 55878 T98, 55879 T99, 55880 T100, 55881 T101)> type_; 55882 55883 Event operator()(const EnqueueArgs& enqueueArgs, 55884 T0 arg0, 55885 T1 arg1, 55886 T2 arg2, 55887 T3 arg3, 55888 T4 arg4, 55889 T5 arg5, 55890 T6 arg6, 55891 T7 arg7, 55892 T8 arg8, 55893 T9 arg9, 55894 T10 arg10, 55895 T11 arg11, 55896 T12 arg12, 55897 T13 arg13, 55898 T14 arg14, 55899 T15 arg15, 55900 T16 arg16, 55901 T17 arg17, 55902 T18 arg18, 55903 T19 arg19, 55904 T20 arg20, 55905 T21 arg21, 55906 T22 arg22, 55907 T23 arg23, 55908 T24 arg24, 55909 T25 arg25, 55910 T26 arg26, 55911 T27 arg27, 55912 T28 arg28, 55913 T29 arg29, 55914 T30 arg30, 55915 T31 arg31, 55916 T32 arg32, 55917 T33 arg33, 55918 T34 arg34, 55919 T35 arg35, 55920 T36 arg36, 55921 T37 arg37, 55922 T38 arg38, 55923 T39 arg39, 55924 T40 arg40, 55925 T41 arg41, 55926 T42 arg42, 55927 T43 arg43, 55928 T44 arg44, 55929 T45 arg45, 55930 T46 arg46, 55931 T47 arg47, 55932 T48 arg48, 55933 T49 arg49, 55934 T50 arg50, 55935 T51 arg51, 55936 T52 arg52, 55937 T53 arg53, 55938 T54 arg54, 55939 T55 arg55, 55940 T56 arg56, 55941 T57 arg57, 55942 T58 arg58, 55943 T59 arg59, 55944 T60 arg60, 55945 T61 arg61, 55946 T62 arg62, 55947 T63 arg63, 55948 T64 arg64, 55949 T65 arg65, 55950 T66 arg66, 55951 T67 arg67, 55952 T68 arg68, 55953 T69 arg69, 55954 T70 arg70, 55955 T71 arg71, 55956 T72 arg72, 55957 T73 arg73, 55958 T74 arg74, 55959 T75 arg75, 55960 T76 arg76, 55961 T77 arg77, 55962 T78 arg78, 55963 T79 arg79, 55964 T80 arg80, 55965 T81 arg81, 55966 T82 arg82, 55967 T83 arg83, 55968 T84 arg84, 55969 T85 arg85, 55970 T86 arg86, 55971 T87 arg87, 55972 T88 arg88, 55973 T89 arg89, 55974 T90 arg90, 55975 T91 arg91, 55976 T92 arg92, 55977 T93 arg93, 55978 T94 arg94, 55979 T95 arg95, 55980 T96 arg96, 55981 T97 arg97, 55982 T98 arg98, 55983 T99 arg99, 55984 T100 arg100, 55985 T101 arg101) 55986 { 55987 return functor_( 55988 enqueueArgs, 55989 arg0, 55990 arg1, 55991 arg2, 55992 arg3, 55993 arg4, 55994 arg5, 55995 arg6, 55996 arg7, 55997 arg8, 55998 arg9, 55999 arg10, 56000 arg11, 56001 arg12, 56002 arg13, 56003 arg14, 56004 arg15, 56005 arg16, 56006 arg17, 56007 arg18, 56008 arg19, 56009 arg20, 56010 arg21, 56011 arg22, 56012 arg23, 56013 arg24, 56014 arg25, 56015 arg26, 56016 arg27, 56017 arg28, 56018 arg29, 56019 arg30, 56020 arg31, 56021 arg32, 56022 arg33, 56023 arg34, 56024 arg35, 56025 arg36, 56026 arg37, 56027 arg38, 56028 arg39, 56029 arg40, 56030 arg41, 56031 arg42, 56032 arg43, 56033 arg44, 56034 arg45, 56035 arg46, 56036 arg47, 56037 arg48, 56038 arg49, 56039 arg50, 56040 arg51, 56041 arg52, 56042 arg53, 56043 arg54, 56044 arg55, 56045 arg56, 56046 arg57, 56047 arg58, 56048 arg59, 56049 arg60, 56050 arg61, 56051 arg62, 56052 arg63, 56053 arg64, 56054 arg65, 56055 arg66, 56056 arg67, 56057 arg68, 56058 arg69, 56059 arg70, 56060 arg71, 56061 arg72, 56062 arg73, 56063 arg74, 56064 arg75, 56065 arg76, 56066 arg77, 56067 arg78, 56068 arg79, 56069 arg80, 56070 arg81, 56071 arg82, 56072 arg83, 56073 arg84, 56074 arg85, 56075 arg86, 56076 arg87, 56077 arg88, 56078 arg89, 56079 arg90, 56080 arg91, 56081 arg92, 56082 arg93, 56083 arg94, 56084 arg95, 56085 arg96, 56086 arg97, 56087 arg98, 56088 arg99, 56089 arg100, 56090 arg101); 56091 } 56092 56093 operator type_ () 56094 { 56095 return type_(*this); 56096 } 56097 56098 }; 56099 56100 template< 56101 typename T0, 56102 typename T1, 56103 typename T2, 56104 typename T3, 56105 typename T4, 56106 typename T5, 56107 typename T6, 56108 typename T7, 56109 typename T8, 56110 typename T9, 56111 typename T10, 56112 typename T11, 56113 typename T12, 56114 typename T13, 56115 typename T14, 56116 typename T15, 56117 typename T16, 56118 typename T17, 56119 typename T18, 56120 typename T19, 56121 typename T20, 56122 typename T21, 56123 typename T22, 56124 typename T23, 56125 typename T24, 56126 typename T25, 56127 typename T26, 56128 typename T27, 56129 typename T28, 56130 typename T29, 56131 typename T30, 56132 typename T31, 56133 typename T32, 56134 typename T33, 56135 typename T34, 56136 typename T35, 56137 typename T36, 56138 typename T37, 56139 typename T38, 56140 typename T39, 56141 typename T40, 56142 typename T41, 56143 typename T42, 56144 typename T43, 56145 typename T44, 56146 typename T45, 56147 typename T46, 56148 typename T47, 56149 typename T48, 56150 typename T49, 56151 typename T50, 56152 typename T51, 56153 typename T52, 56154 typename T53, 56155 typename T54, 56156 typename T55, 56157 typename T56, 56158 typename T57, 56159 typename T58, 56160 typename T59, 56161 typename T60, 56162 typename T61, 56163 typename T62, 56164 typename T63, 56165 typename T64, 56166 typename T65, 56167 typename T66, 56168 typename T67, 56169 typename T68, 56170 typename T69, 56171 typename T70, 56172 typename T71, 56173 typename T72, 56174 typename T73, 56175 typename T74, 56176 typename T75, 56177 typename T76, 56178 typename T77, 56179 typename T78, 56180 typename T79, 56181 typename T80, 56182 typename T81, 56183 typename T82, 56184 typename T83, 56185 typename T84, 56186 typename T85, 56187 typename T86, 56188 typename T87, 56189 typename T88, 56190 typename T89, 56191 typename T90, 56192 typename T91, 56193 typename T92, 56194 typename T93, 56195 typename T94, 56196 typename T95, 56197 typename T96, 56198 typename T97, 56199 typename T98, 56200 typename T99, 56201 typename T100, 56202 typename T101, 56203 typename T102> 56204 struct functionImplementation_< 56205 T0, 56206 T1, 56207 T2, 56208 T3, 56209 T4, 56210 T5, 56211 T6, 56212 T7, 56213 T8, 56214 T9, 56215 T10, 56216 T11, 56217 T12, 56218 T13, 56219 T14, 56220 T15, 56221 T16, 56222 T17, 56223 T18, 56224 T19, 56225 T20, 56226 T21, 56227 T22, 56228 T23, 56229 T24, 56230 T25, 56231 T26, 56232 T27, 56233 T28, 56234 T29, 56235 T30, 56236 T31, 56237 T32, 56238 T33, 56239 T34, 56240 T35, 56241 T36, 56242 T37, 56243 T38, 56244 T39, 56245 T40, 56246 T41, 56247 T42, 56248 T43, 56249 T44, 56250 T45, 56251 T46, 56252 T47, 56253 T48, 56254 T49, 56255 T50, 56256 T51, 56257 T52, 56258 T53, 56259 T54, 56260 T55, 56261 T56, 56262 T57, 56263 T58, 56264 T59, 56265 T60, 56266 T61, 56267 T62, 56268 T63, 56269 T64, 56270 T65, 56271 T66, 56272 T67, 56273 T68, 56274 T69, 56275 T70, 56276 T71, 56277 T72, 56278 T73, 56279 T74, 56280 T75, 56281 T76, 56282 T77, 56283 T78, 56284 T79, 56285 T80, 56286 T81, 56287 T82, 56288 T83, 56289 T84, 56290 T85, 56291 T86, 56292 T87, 56293 T88, 56294 T89, 56295 T90, 56296 T91, 56297 T92, 56298 T93, 56299 T94, 56300 T95, 56301 T96, 56302 T97, 56303 T98, 56304 T99, 56305 T100, 56306 T101, 56307 T102, 56308 NullType, 56309 NullType, 56310 NullType, 56311 NullType, 56312 NullType, 56313 NullType, 56314 NullType, 56315 NullType, 56316 NullType, 56317 NullType, 56318 NullType, 56319 NullType, 56320 NullType, 56321 NullType, 56322 NullType, 56323 NullType, 56324 NullType, 56325 NullType, 56326 NullType, 56327 NullType, 56328 NullType, 56329 NullType, 56330 NullType, 56331 NullType, 56332 NullType> 56333 { 56334 typedef detail::KernelFunctorGlobal< 56335 T0, 56336 T1, 56337 T2, 56338 T3, 56339 T4, 56340 T5, 56341 T6, 56342 T7, 56343 T8, 56344 T9, 56345 T10, 56346 T11, 56347 T12, 56348 T13, 56349 T14, 56350 T15, 56351 T16, 56352 T17, 56353 T18, 56354 T19, 56355 T20, 56356 T21, 56357 T22, 56358 T23, 56359 T24, 56360 T25, 56361 T26, 56362 T27, 56363 T28, 56364 T29, 56365 T30, 56366 T31, 56367 T32, 56368 T33, 56369 T34, 56370 T35, 56371 T36, 56372 T37, 56373 T38, 56374 T39, 56375 T40, 56376 T41, 56377 T42, 56378 T43, 56379 T44, 56380 T45, 56381 T46, 56382 T47, 56383 T48, 56384 T49, 56385 T50, 56386 T51, 56387 T52, 56388 T53, 56389 T54, 56390 T55, 56391 T56, 56392 T57, 56393 T58, 56394 T59, 56395 T60, 56396 T61, 56397 T62, 56398 T63, 56399 T64, 56400 T65, 56401 T66, 56402 T67, 56403 T68, 56404 T69, 56405 T70, 56406 T71, 56407 T72, 56408 T73, 56409 T74, 56410 T75, 56411 T76, 56412 T77, 56413 T78, 56414 T79, 56415 T80, 56416 T81, 56417 T82, 56418 T83, 56419 T84, 56420 T85, 56421 T86, 56422 T87, 56423 T88, 56424 T89, 56425 T90, 56426 T91, 56427 T92, 56428 T93, 56429 T94, 56430 T95, 56431 T96, 56432 T97, 56433 T98, 56434 T99, 56435 T100, 56436 T101, 56437 T102, 56438 NullType, 56439 NullType, 56440 NullType, 56441 NullType, 56442 NullType, 56443 NullType, 56444 NullType, 56445 NullType, 56446 NullType, 56447 NullType, 56448 NullType, 56449 NullType, 56450 NullType, 56451 NullType, 56452 NullType, 56453 NullType, 56454 NullType, 56455 NullType, 56456 NullType, 56457 NullType, 56458 NullType, 56459 NullType, 56460 NullType, 56461 NullType, 56462 NullType> FunctorType; 56463 56464 FunctorType functor_; 56465 56466 functionImplementation_(const FunctorType &functor) : 56467 functor_(functor) 56468 { 56469 } 56470 56471 typedef std::tr1::function<Event ( 56472 const EnqueueArgs&, 56473 T0, 56474 T1, 56475 T2, 56476 T3, 56477 T4, 56478 T5, 56479 T6, 56480 T7, 56481 T8, 56482 T9, 56483 T10, 56484 T11, 56485 T12, 56486 T13, 56487 T14, 56488 T15, 56489 T16, 56490 T17, 56491 T18, 56492 T19, 56493 T20, 56494 T21, 56495 T22, 56496 T23, 56497 T24, 56498 T25, 56499 T26, 56500 T27, 56501 T28, 56502 T29, 56503 T30, 56504 T31, 56505 T32, 56506 T33, 56507 T34, 56508 T35, 56509 T36, 56510 T37, 56511 T38, 56512 T39, 56513 T40, 56514 T41, 56515 T42, 56516 T43, 56517 T44, 56518 T45, 56519 T46, 56520 T47, 56521 T48, 56522 T49, 56523 T50, 56524 T51, 56525 T52, 56526 T53, 56527 T54, 56528 T55, 56529 T56, 56530 T57, 56531 T58, 56532 T59, 56533 T60, 56534 T61, 56535 T62, 56536 T63, 56537 T64, 56538 T65, 56539 T66, 56540 T67, 56541 T68, 56542 T69, 56543 T70, 56544 T71, 56545 T72, 56546 T73, 56547 T74, 56548 T75, 56549 T76, 56550 T77, 56551 T78, 56552 T79, 56553 T80, 56554 T81, 56555 T82, 56556 T83, 56557 T84, 56558 T85, 56559 T86, 56560 T87, 56561 T88, 56562 T89, 56563 T90, 56564 T91, 56565 T92, 56566 T93, 56567 T94, 56568 T95, 56569 T96, 56570 T97, 56571 T98, 56572 T99, 56573 T100, 56574 T101, 56575 T102)> type_; 56576 56577 Event operator()(const EnqueueArgs& enqueueArgs, 56578 T0 arg0, 56579 T1 arg1, 56580 T2 arg2, 56581 T3 arg3, 56582 T4 arg4, 56583 T5 arg5, 56584 T6 arg6, 56585 T7 arg7, 56586 T8 arg8, 56587 T9 arg9, 56588 T10 arg10, 56589 T11 arg11, 56590 T12 arg12, 56591 T13 arg13, 56592 T14 arg14, 56593 T15 arg15, 56594 T16 arg16, 56595 T17 arg17, 56596 T18 arg18, 56597 T19 arg19, 56598 T20 arg20, 56599 T21 arg21, 56600 T22 arg22, 56601 T23 arg23, 56602 T24 arg24, 56603 T25 arg25, 56604 T26 arg26, 56605 T27 arg27, 56606 T28 arg28, 56607 T29 arg29, 56608 T30 arg30, 56609 T31 arg31, 56610 T32 arg32, 56611 T33 arg33, 56612 T34 arg34, 56613 T35 arg35, 56614 T36 arg36, 56615 T37 arg37, 56616 T38 arg38, 56617 T39 arg39, 56618 T40 arg40, 56619 T41 arg41, 56620 T42 arg42, 56621 T43 arg43, 56622 T44 arg44, 56623 T45 arg45, 56624 T46 arg46, 56625 T47 arg47, 56626 T48 arg48, 56627 T49 arg49, 56628 T50 arg50, 56629 T51 arg51, 56630 T52 arg52, 56631 T53 arg53, 56632 T54 arg54, 56633 T55 arg55, 56634 T56 arg56, 56635 T57 arg57, 56636 T58 arg58, 56637 T59 arg59, 56638 T60 arg60, 56639 T61 arg61, 56640 T62 arg62, 56641 T63 arg63, 56642 T64 arg64, 56643 T65 arg65, 56644 T66 arg66, 56645 T67 arg67, 56646 T68 arg68, 56647 T69 arg69, 56648 T70 arg70, 56649 T71 arg71, 56650 T72 arg72, 56651 T73 arg73, 56652 T74 arg74, 56653 T75 arg75, 56654 T76 arg76, 56655 T77 arg77, 56656 T78 arg78, 56657 T79 arg79, 56658 T80 arg80, 56659 T81 arg81, 56660 T82 arg82, 56661 T83 arg83, 56662 T84 arg84, 56663 T85 arg85, 56664 T86 arg86, 56665 T87 arg87, 56666 T88 arg88, 56667 T89 arg89, 56668 T90 arg90, 56669 T91 arg91, 56670 T92 arg92, 56671 T93 arg93, 56672 T94 arg94, 56673 T95 arg95, 56674 T96 arg96, 56675 T97 arg97, 56676 T98 arg98, 56677 T99 arg99, 56678 T100 arg100, 56679 T101 arg101, 56680 T102 arg102) 56681 { 56682 return functor_( 56683 enqueueArgs, 56684 arg0, 56685 arg1, 56686 arg2, 56687 arg3, 56688 arg4, 56689 arg5, 56690 arg6, 56691 arg7, 56692 arg8, 56693 arg9, 56694 arg10, 56695 arg11, 56696 arg12, 56697 arg13, 56698 arg14, 56699 arg15, 56700 arg16, 56701 arg17, 56702 arg18, 56703 arg19, 56704 arg20, 56705 arg21, 56706 arg22, 56707 arg23, 56708 arg24, 56709 arg25, 56710 arg26, 56711 arg27, 56712 arg28, 56713 arg29, 56714 arg30, 56715 arg31, 56716 arg32, 56717 arg33, 56718 arg34, 56719 arg35, 56720 arg36, 56721 arg37, 56722 arg38, 56723 arg39, 56724 arg40, 56725 arg41, 56726 arg42, 56727 arg43, 56728 arg44, 56729 arg45, 56730 arg46, 56731 arg47, 56732 arg48, 56733 arg49, 56734 arg50, 56735 arg51, 56736 arg52, 56737 arg53, 56738 arg54, 56739 arg55, 56740 arg56, 56741 arg57, 56742 arg58, 56743 arg59, 56744 arg60, 56745 arg61, 56746 arg62, 56747 arg63, 56748 arg64, 56749 arg65, 56750 arg66, 56751 arg67, 56752 arg68, 56753 arg69, 56754 arg70, 56755 arg71, 56756 arg72, 56757 arg73, 56758 arg74, 56759 arg75, 56760 arg76, 56761 arg77, 56762 arg78, 56763 arg79, 56764 arg80, 56765 arg81, 56766 arg82, 56767 arg83, 56768 arg84, 56769 arg85, 56770 arg86, 56771 arg87, 56772 arg88, 56773 arg89, 56774 arg90, 56775 arg91, 56776 arg92, 56777 arg93, 56778 arg94, 56779 arg95, 56780 arg96, 56781 arg97, 56782 arg98, 56783 arg99, 56784 arg100, 56785 arg101, 56786 arg102); 56787 } 56788 56789 operator type_ () 56790 { 56791 return type_(*this); 56792 } 56793 56794 }; 56795 56796 template< 56797 typename T0, 56798 typename T1, 56799 typename T2, 56800 typename T3, 56801 typename T4, 56802 typename T5, 56803 typename T6, 56804 typename T7, 56805 typename T8, 56806 typename T9, 56807 typename T10, 56808 typename T11, 56809 typename T12, 56810 typename T13, 56811 typename T14, 56812 typename T15, 56813 typename T16, 56814 typename T17, 56815 typename T18, 56816 typename T19, 56817 typename T20, 56818 typename T21, 56819 typename T22, 56820 typename T23, 56821 typename T24, 56822 typename T25, 56823 typename T26, 56824 typename T27, 56825 typename T28, 56826 typename T29, 56827 typename T30, 56828 typename T31, 56829 typename T32, 56830 typename T33, 56831 typename T34, 56832 typename T35, 56833 typename T36, 56834 typename T37, 56835 typename T38, 56836 typename T39, 56837 typename T40, 56838 typename T41, 56839 typename T42, 56840 typename T43, 56841 typename T44, 56842 typename T45, 56843 typename T46, 56844 typename T47, 56845 typename T48, 56846 typename T49, 56847 typename T50, 56848 typename T51, 56849 typename T52, 56850 typename T53, 56851 typename T54, 56852 typename T55, 56853 typename T56, 56854 typename T57, 56855 typename T58, 56856 typename T59, 56857 typename T60, 56858 typename T61, 56859 typename T62, 56860 typename T63, 56861 typename T64, 56862 typename T65, 56863 typename T66, 56864 typename T67, 56865 typename T68, 56866 typename T69, 56867 typename T70, 56868 typename T71, 56869 typename T72, 56870 typename T73, 56871 typename T74, 56872 typename T75, 56873 typename T76, 56874 typename T77, 56875 typename T78, 56876 typename T79, 56877 typename T80, 56878 typename T81, 56879 typename T82, 56880 typename T83, 56881 typename T84, 56882 typename T85, 56883 typename T86, 56884 typename T87, 56885 typename T88, 56886 typename T89, 56887 typename T90, 56888 typename T91, 56889 typename T92, 56890 typename T93, 56891 typename T94, 56892 typename T95, 56893 typename T96, 56894 typename T97, 56895 typename T98, 56896 typename T99, 56897 typename T100, 56898 typename T101, 56899 typename T102, 56900 typename T103> 56901 struct functionImplementation_< 56902 T0, 56903 T1, 56904 T2, 56905 T3, 56906 T4, 56907 T5, 56908 T6, 56909 T7, 56910 T8, 56911 T9, 56912 T10, 56913 T11, 56914 T12, 56915 T13, 56916 T14, 56917 T15, 56918 T16, 56919 T17, 56920 T18, 56921 T19, 56922 T20, 56923 T21, 56924 T22, 56925 T23, 56926 T24, 56927 T25, 56928 T26, 56929 T27, 56930 T28, 56931 T29, 56932 T30, 56933 T31, 56934 T32, 56935 T33, 56936 T34, 56937 T35, 56938 T36, 56939 T37, 56940 T38, 56941 T39, 56942 T40, 56943 T41, 56944 T42, 56945 T43, 56946 T44, 56947 T45, 56948 T46, 56949 T47, 56950 T48, 56951 T49, 56952 T50, 56953 T51, 56954 T52, 56955 T53, 56956 T54, 56957 T55, 56958 T56, 56959 T57, 56960 T58, 56961 T59, 56962 T60, 56963 T61, 56964 T62, 56965 T63, 56966 T64, 56967 T65, 56968 T66, 56969 T67, 56970 T68, 56971 T69, 56972 T70, 56973 T71, 56974 T72, 56975 T73, 56976 T74, 56977 T75, 56978 T76, 56979 T77, 56980 T78, 56981 T79, 56982 T80, 56983 T81, 56984 T82, 56985 T83, 56986 T84, 56987 T85, 56988 T86, 56989 T87, 56990 T88, 56991 T89, 56992 T90, 56993 T91, 56994 T92, 56995 T93, 56996 T94, 56997 T95, 56998 T96, 56999 T97, 57000 T98, 57001 T99, 57002 T100, 57003 T101, 57004 T102, 57005 T103, 57006 NullType, 57007 NullType, 57008 NullType, 57009 NullType, 57010 NullType, 57011 NullType, 57012 NullType, 57013 NullType, 57014 NullType, 57015 NullType, 57016 NullType, 57017 NullType, 57018 NullType, 57019 NullType, 57020 NullType, 57021 NullType, 57022 NullType, 57023 NullType, 57024 NullType, 57025 NullType, 57026 NullType, 57027 NullType, 57028 NullType, 57029 NullType> 57030 { 57031 typedef detail::KernelFunctorGlobal< 57032 T0, 57033 T1, 57034 T2, 57035 T3, 57036 T4, 57037 T5, 57038 T6, 57039 T7, 57040 T8, 57041 T9, 57042 T10, 57043 T11, 57044 T12, 57045 T13, 57046 T14, 57047 T15, 57048 T16, 57049 T17, 57050 T18, 57051 T19, 57052 T20, 57053 T21, 57054 T22, 57055 T23, 57056 T24, 57057 T25, 57058 T26, 57059 T27, 57060 T28, 57061 T29, 57062 T30, 57063 T31, 57064 T32, 57065 T33, 57066 T34, 57067 T35, 57068 T36, 57069 T37, 57070 T38, 57071 T39, 57072 T40, 57073 T41, 57074 T42, 57075 T43, 57076 T44, 57077 T45, 57078 T46, 57079 T47, 57080 T48, 57081 T49, 57082 T50, 57083 T51, 57084 T52, 57085 T53, 57086 T54, 57087 T55, 57088 T56, 57089 T57, 57090 T58, 57091 T59, 57092 T60, 57093 T61, 57094 T62, 57095 T63, 57096 T64, 57097 T65, 57098 T66, 57099 T67, 57100 T68, 57101 T69, 57102 T70, 57103 T71, 57104 T72, 57105 T73, 57106 T74, 57107 T75, 57108 T76, 57109 T77, 57110 T78, 57111 T79, 57112 T80, 57113 T81, 57114 T82, 57115 T83, 57116 T84, 57117 T85, 57118 T86, 57119 T87, 57120 T88, 57121 T89, 57122 T90, 57123 T91, 57124 T92, 57125 T93, 57126 T94, 57127 T95, 57128 T96, 57129 T97, 57130 T98, 57131 T99, 57132 T100, 57133 T101, 57134 T102, 57135 T103, 57136 NullType, 57137 NullType, 57138 NullType, 57139 NullType, 57140 NullType, 57141 NullType, 57142 NullType, 57143 NullType, 57144 NullType, 57145 NullType, 57146 NullType, 57147 NullType, 57148 NullType, 57149 NullType, 57150 NullType, 57151 NullType, 57152 NullType, 57153 NullType, 57154 NullType, 57155 NullType, 57156 NullType, 57157 NullType, 57158 NullType, 57159 NullType> FunctorType; 57160 57161 FunctorType functor_; 57162 57163 functionImplementation_(const FunctorType &functor) : 57164 functor_(functor) 57165 { 57166 } 57167 57168 typedef std::tr1::function<Event ( 57169 const EnqueueArgs&, 57170 T0, 57171 T1, 57172 T2, 57173 T3, 57174 T4, 57175 T5, 57176 T6, 57177 T7, 57178 T8, 57179 T9, 57180 T10, 57181 T11, 57182 T12, 57183 T13, 57184 T14, 57185 T15, 57186 T16, 57187 T17, 57188 T18, 57189 T19, 57190 T20, 57191 T21, 57192 T22, 57193 T23, 57194 T24, 57195 T25, 57196 T26, 57197 T27, 57198 T28, 57199 T29, 57200 T30, 57201 T31, 57202 T32, 57203 T33, 57204 T34, 57205 T35, 57206 T36, 57207 T37, 57208 T38, 57209 T39, 57210 T40, 57211 T41, 57212 T42, 57213 T43, 57214 T44, 57215 T45, 57216 T46, 57217 T47, 57218 T48, 57219 T49, 57220 T50, 57221 T51, 57222 T52, 57223 T53, 57224 T54, 57225 T55, 57226 T56, 57227 T57, 57228 T58, 57229 T59, 57230 T60, 57231 T61, 57232 T62, 57233 T63, 57234 T64, 57235 T65, 57236 T66, 57237 T67, 57238 T68, 57239 T69, 57240 T70, 57241 T71, 57242 T72, 57243 T73, 57244 T74, 57245 T75, 57246 T76, 57247 T77, 57248 T78, 57249 T79, 57250 T80, 57251 T81, 57252 T82, 57253 T83, 57254 T84, 57255 T85, 57256 T86, 57257 T87, 57258 T88, 57259 T89, 57260 T90, 57261 T91, 57262 T92, 57263 T93, 57264 T94, 57265 T95, 57266 T96, 57267 T97, 57268 T98, 57269 T99, 57270 T100, 57271 T101, 57272 T102, 57273 T103)> type_; 57274 57275 Event operator()(const EnqueueArgs& enqueueArgs, 57276 T0 arg0, 57277 T1 arg1, 57278 T2 arg2, 57279 T3 arg3, 57280 T4 arg4, 57281 T5 arg5, 57282 T6 arg6, 57283 T7 arg7, 57284 T8 arg8, 57285 T9 arg9, 57286 T10 arg10, 57287 T11 arg11, 57288 T12 arg12, 57289 T13 arg13, 57290 T14 arg14, 57291 T15 arg15, 57292 T16 arg16, 57293 T17 arg17, 57294 T18 arg18, 57295 T19 arg19, 57296 T20 arg20, 57297 T21 arg21, 57298 T22 arg22, 57299 T23 arg23, 57300 T24 arg24, 57301 T25 arg25, 57302 T26 arg26, 57303 T27 arg27, 57304 T28 arg28, 57305 T29 arg29, 57306 T30 arg30, 57307 T31 arg31, 57308 T32 arg32, 57309 T33 arg33, 57310 T34 arg34, 57311 T35 arg35, 57312 T36 arg36, 57313 T37 arg37, 57314 T38 arg38, 57315 T39 arg39, 57316 T40 arg40, 57317 T41 arg41, 57318 T42 arg42, 57319 T43 arg43, 57320 T44 arg44, 57321 T45 arg45, 57322 T46 arg46, 57323 T47 arg47, 57324 T48 arg48, 57325 T49 arg49, 57326 T50 arg50, 57327 T51 arg51, 57328 T52 arg52, 57329 T53 arg53, 57330 T54 arg54, 57331 T55 arg55, 57332 T56 arg56, 57333 T57 arg57, 57334 T58 arg58, 57335 T59 arg59, 57336 T60 arg60, 57337 T61 arg61, 57338 T62 arg62, 57339 T63 arg63, 57340 T64 arg64, 57341 T65 arg65, 57342 T66 arg66, 57343 T67 arg67, 57344 T68 arg68, 57345 T69 arg69, 57346 T70 arg70, 57347 T71 arg71, 57348 T72 arg72, 57349 T73 arg73, 57350 T74 arg74, 57351 T75 arg75, 57352 T76 arg76, 57353 T77 arg77, 57354 T78 arg78, 57355 T79 arg79, 57356 T80 arg80, 57357 T81 arg81, 57358 T82 arg82, 57359 T83 arg83, 57360 T84 arg84, 57361 T85 arg85, 57362 T86 arg86, 57363 T87 arg87, 57364 T88 arg88, 57365 T89 arg89, 57366 T90 arg90, 57367 T91 arg91, 57368 T92 arg92, 57369 T93 arg93, 57370 T94 arg94, 57371 T95 arg95, 57372 T96 arg96, 57373 T97 arg97, 57374 T98 arg98, 57375 T99 arg99, 57376 T100 arg100, 57377 T101 arg101, 57378 T102 arg102, 57379 T103 arg103) 57380 { 57381 return functor_( 57382 enqueueArgs, 57383 arg0, 57384 arg1, 57385 arg2, 57386 arg3, 57387 arg4, 57388 arg5, 57389 arg6, 57390 arg7, 57391 arg8, 57392 arg9, 57393 arg10, 57394 arg11, 57395 arg12, 57396 arg13, 57397 arg14, 57398 arg15, 57399 arg16, 57400 arg17, 57401 arg18, 57402 arg19, 57403 arg20, 57404 arg21, 57405 arg22, 57406 arg23, 57407 arg24, 57408 arg25, 57409 arg26, 57410 arg27, 57411 arg28, 57412 arg29, 57413 arg30, 57414 arg31, 57415 arg32, 57416 arg33, 57417 arg34, 57418 arg35, 57419 arg36, 57420 arg37, 57421 arg38, 57422 arg39, 57423 arg40, 57424 arg41, 57425 arg42, 57426 arg43, 57427 arg44, 57428 arg45, 57429 arg46, 57430 arg47, 57431 arg48, 57432 arg49, 57433 arg50, 57434 arg51, 57435 arg52, 57436 arg53, 57437 arg54, 57438 arg55, 57439 arg56, 57440 arg57, 57441 arg58, 57442 arg59, 57443 arg60, 57444 arg61, 57445 arg62, 57446 arg63, 57447 arg64, 57448 arg65, 57449 arg66, 57450 arg67, 57451 arg68, 57452 arg69, 57453 arg70, 57454 arg71, 57455 arg72, 57456 arg73, 57457 arg74, 57458 arg75, 57459 arg76, 57460 arg77, 57461 arg78, 57462 arg79, 57463 arg80, 57464 arg81, 57465 arg82, 57466 arg83, 57467 arg84, 57468 arg85, 57469 arg86, 57470 arg87, 57471 arg88, 57472 arg89, 57473 arg90, 57474 arg91, 57475 arg92, 57476 arg93, 57477 arg94, 57478 arg95, 57479 arg96, 57480 arg97, 57481 arg98, 57482 arg99, 57483 arg100, 57484 arg101, 57485 arg102, 57486 arg103); 57487 } 57488 57489 operator type_ () 57490 { 57491 return type_(*this); 57492 } 57493 57494 }; 57495 57496 template< 57497 typename T0, 57498 typename T1, 57499 typename T2, 57500 typename T3, 57501 typename T4, 57502 typename T5, 57503 typename T6, 57504 typename T7, 57505 typename T8, 57506 typename T9, 57507 typename T10, 57508 typename T11, 57509 typename T12, 57510 typename T13, 57511 typename T14, 57512 typename T15, 57513 typename T16, 57514 typename T17, 57515 typename T18, 57516 typename T19, 57517 typename T20, 57518 typename T21, 57519 typename T22, 57520 typename T23, 57521 typename T24, 57522 typename T25, 57523 typename T26, 57524 typename T27, 57525 typename T28, 57526 typename T29, 57527 typename T30, 57528 typename T31, 57529 typename T32, 57530 typename T33, 57531 typename T34, 57532 typename T35, 57533 typename T36, 57534 typename T37, 57535 typename T38, 57536 typename T39, 57537 typename T40, 57538 typename T41, 57539 typename T42, 57540 typename T43, 57541 typename T44, 57542 typename T45, 57543 typename T46, 57544 typename T47, 57545 typename T48, 57546 typename T49, 57547 typename T50, 57548 typename T51, 57549 typename T52, 57550 typename T53, 57551 typename T54, 57552 typename T55, 57553 typename T56, 57554 typename T57, 57555 typename T58, 57556 typename T59, 57557 typename T60, 57558 typename T61, 57559 typename T62, 57560 typename T63, 57561 typename T64, 57562 typename T65, 57563 typename T66, 57564 typename T67, 57565 typename T68, 57566 typename T69, 57567 typename T70, 57568 typename T71, 57569 typename T72, 57570 typename T73, 57571 typename T74, 57572 typename T75, 57573 typename T76, 57574 typename T77, 57575 typename T78, 57576 typename T79, 57577 typename T80, 57578 typename T81, 57579 typename T82, 57580 typename T83, 57581 typename T84, 57582 typename T85, 57583 typename T86, 57584 typename T87, 57585 typename T88, 57586 typename T89, 57587 typename T90, 57588 typename T91, 57589 typename T92, 57590 typename T93, 57591 typename T94, 57592 typename T95, 57593 typename T96, 57594 typename T97, 57595 typename T98, 57596 typename T99, 57597 typename T100, 57598 typename T101, 57599 typename T102, 57600 typename T103, 57601 typename T104> 57602 struct functionImplementation_< 57603 T0, 57604 T1, 57605 T2, 57606 T3, 57607 T4, 57608 T5, 57609 T6, 57610 T7, 57611 T8, 57612 T9, 57613 T10, 57614 T11, 57615 T12, 57616 T13, 57617 T14, 57618 T15, 57619 T16, 57620 T17, 57621 T18, 57622 T19, 57623 T20, 57624 T21, 57625 T22, 57626 T23, 57627 T24, 57628 T25, 57629 T26, 57630 T27, 57631 T28, 57632 T29, 57633 T30, 57634 T31, 57635 T32, 57636 T33, 57637 T34, 57638 T35, 57639 T36, 57640 T37, 57641 T38, 57642 T39, 57643 T40, 57644 T41, 57645 T42, 57646 T43, 57647 T44, 57648 T45, 57649 T46, 57650 T47, 57651 T48, 57652 T49, 57653 T50, 57654 T51, 57655 T52, 57656 T53, 57657 T54, 57658 T55, 57659 T56, 57660 T57, 57661 T58, 57662 T59, 57663 T60, 57664 T61, 57665 T62, 57666 T63, 57667 T64, 57668 T65, 57669 T66, 57670 T67, 57671 T68, 57672 T69, 57673 T70, 57674 T71, 57675 T72, 57676 T73, 57677 T74, 57678 T75, 57679 T76, 57680 T77, 57681 T78, 57682 T79, 57683 T80, 57684 T81, 57685 T82, 57686 T83, 57687 T84, 57688 T85, 57689 T86, 57690 T87, 57691 T88, 57692 T89, 57693 T90, 57694 T91, 57695 T92, 57696 T93, 57697 T94, 57698 T95, 57699 T96, 57700 T97, 57701 T98, 57702 T99, 57703 T100, 57704 T101, 57705 T102, 57706 T103, 57707 T104, 57708 NullType, 57709 NullType, 57710 NullType, 57711 NullType, 57712 NullType, 57713 NullType, 57714 NullType, 57715 NullType, 57716 NullType, 57717 NullType, 57718 NullType, 57719 NullType, 57720 NullType, 57721 NullType, 57722 NullType, 57723 NullType, 57724 NullType, 57725 NullType, 57726 NullType, 57727 NullType, 57728 NullType, 57729 NullType, 57730 NullType> 57731 { 57732 typedef detail::KernelFunctorGlobal< 57733 T0, 57734 T1, 57735 T2, 57736 T3, 57737 T4, 57738 T5, 57739 T6, 57740 T7, 57741 T8, 57742 T9, 57743 T10, 57744 T11, 57745 T12, 57746 T13, 57747 T14, 57748 T15, 57749 T16, 57750 T17, 57751 T18, 57752 T19, 57753 T20, 57754 T21, 57755 T22, 57756 T23, 57757 T24, 57758 T25, 57759 T26, 57760 T27, 57761 T28, 57762 T29, 57763 T30, 57764 T31, 57765 T32, 57766 T33, 57767 T34, 57768 T35, 57769 T36, 57770 T37, 57771 T38, 57772 T39, 57773 T40, 57774 T41, 57775 T42, 57776 T43, 57777 T44, 57778 T45, 57779 T46, 57780 T47, 57781 T48, 57782 T49, 57783 T50, 57784 T51, 57785 T52, 57786 T53, 57787 T54, 57788 T55, 57789 T56, 57790 T57, 57791 T58, 57792 T59, 57793 T60, 57794 T61, 57795 T62, 57796 T63, 57797 T64, 57798 T65, 57799 T66, 57800 T67, 57801 T68, 57802 T69, 57803 T70, 57804 T71, 57805 T72, 57806 T73, 57807 T74, 57808 T75, 57809 T76, 57810 T77, 57811 T78, 57812 T79, 57813 T80, 57814 T81, 57815 T82, 57816 T83, 57817 T84, 57818 T85, 57819 T86, 57820 T87, 57821 T88, 57822 T89, 57823 T90, 57824 T91, 57825 T92, 57826 T93, 57827 T94, 57828 T95, 57829 T96, 57830 T97, 57831 T98, 57832 T99, 57833 T100, 57834 T101, 57835 T102, 57836 T103, 57837 T104, 57838 NullType, 57839 NullType, 57840 NullType, 57841 NullType, 57842 NullType, 57843 NullType, 57844 NullType, 57845 NullType, 57846 NullType, 57847 NullType, 57848 NullType, 57849 NullType, 57850 NullType, 57851 NullType, 57852 NullType, 57853 NullType, 57854 NullType, 57855 NullType, 57856 NullType, 57857 NullType, 57858 NullType, 57859 NullType, 57860 NullType> FunctorType; 57861 57862 FunctorType functor_; 57863 57864 functionImplementation_(const FunctorType &functor) : 57865 functor_(functor) 57866 { 57867 } 57868 57869 typedef std::tr1::function<Event ( 57870 const EnqueueArgs&, 57871 T0, 57872 T1, 57873 T2, 57874 T3, 57875 T4, 57876 T5, 57877 T6, 57878 T7, 57879 T8, 57880 T9, 57881 T10, 57882 T11, 57883 T12, 57884 T13, 57885 T14, 57886 T15, 57887 T16, 57888 T17, 57889 T18, 57890 T19, 57891 T20, 57892 T21, 57893 T22, 57894 T23, 57895 T24, 57896 T25, 57897 T26, 57898 T27, 57899 T28, 57900 T29, 57901 T30, 57902 T31, 57903 T32, 57904 T33, 57905 T34, 57906 T35, 57907 T36, 57908 T37, 57909 T38, 57910 T39, 57911 T40, 57912 T41, 57913 T42, 57914 T43, 57915 T44, 57916 T45, 57917 T46, 57918 T47, 57919 T48, 57920 T49, 57921 T50, 57922 T51, 57923 T52, 57924 T53, 57925 T54, 57926 T55, 57927 T56, 57928 T57, 57929 T58, 57930 T59, 57931 T60, 57932 T61, 57933 T62, 57934 T63, 57935 T64, 57936 T65, 57937 T66, 57938 T67, 57939 T68, 57940 T69, 57941 T70, 57942 T71, 57943 T72, 57944 T73, 57945 T74, 57946 T75, 57947 T76, 57948 T77, 57949 T78, 57950 T79, 57951 T80, 57952 T81, 57953 T82, 57954 T83, 57955 T84, 57956 T85, 57957 T86, 57958 T87, 57959 T88, 57960 T89, 57961 T90, 57962 T91, 57963 T92, 57964 T93, 57965 T94, 57966 T95, 57967 T96, 57968 T97, 57969 T98, 57970 T99, 57971 T100, 57972 T101, 57973 T102, 57974 T103, 57975 T104)> type_; 57976 57977 Event operator()(const EnqueueArgs& enqueueArgs, 57978 T0 arg0, 57979 T1 arg1, 57980 T2 arg2, 57981 T3 arg3, 57982 T4 arg4, 57983 T5 arg5, 57984 T6 arg6, 57985 T7 arg7, 57986 T8 arg8, 57987 T9 arg9, 57988 T10 arg10, 57989 T11 arg11, 57990 T12 arg12, 57991 T13 arg13, 57992 T14 arg14, 57993 T15 arg15, 57994 T16 arg16, 57995 T17 arg17, 57996 T18 arg18, 57997 T19 arg19, 57998 T20 arg20, 57999 T21 arg21, 58000 T22 arg22, 58001 T23 arg23, 58002 T24 arg24, 58003 T25 arg25, 58004 T26 arg26, 58005 T27 arg27, 58006 T28 arg28, 58007 T29 arg29, 58008 T30 arg30, 58009 T31 arg31, 58010 T32 arg32, 58011 T33 arg33, 58012 T34 arg34, 58013 T35 arg35, 58014 T36 arg36, 58015 T37 arg37, 58016 T38 arg38, 58017 T39 arg39, 58018 T40 arg40, 58019 T41 arg41, 58020 T42 arg42, 58021 T43 arg43, 58022 T44 arg44, 58023 T45 arg45, 58024 T46 arg46, 58025 T47 arg47, 58026 T48 arg48, 58027 T49 arg49, 58028 T50 arg50, 58029 T51 arg51, 58030 T52 arg52, 58031 T53 arg53, 58032 T54 arg54, 58033 T55 arg55, 58034 T56 arg56, 58035 T57 arg57, 58036 T58 arg58, 58037 T59 arg59, 58038 T60 arg60, 58039 T61 arg61, 58040 T62 arg62, 58041 T63 arg63, 58042 T64 arg64, 58043 T65 arg65, 58044 T66 arg66, 58045 T67 arg67, 58046 T68 arg68, 58047 T69 arg69, 58048 T70 arg70, 58049 T71 arg71, 58050 T72 arg72, 58051 T73 arg73, 58052 T74 arg74, 58053 T75 arg75, 58054 T76 arg76, 58055 T77 arg77, 58056 T78 arg78, 58057 T79 arg79, 58058 T80 arg80, 58059 T81 arg81, 58060 T82 arg82, 58061 T83 arg83, 58062 T84 arg84, 58063 T85 arg85, 58064 T86 arg86, 58065 T87 arg87, 58066 T88 arg88, 58067 T89 arg89, 58068 T90 arg90, 58069 T91 arg91, 58070 T92 arg92, 58071 T93 arg93, 58072 T94 arg94, 58073 T95 arg95, 58074 T96 arg96, 58075 T97 arg97, 58076 T98 arg98, 58077 T99 arg99, 58078 T100 arg100, 58079 T101 arg101, 58080 T102 arg102, 58081 T103 arg103, 58082 T104 arg104) 58083 { 58084 return functor_( 58085 enqueueArgs, 58086 arg0, 58087 arg1, 58088 arg2, 58089 arg3, 58090 arg4, 58091 arg5, 58092 arg6, 58093 arg7, 58094 arg8, 58095 arg9, 58096 arg10, 58097 arg11, 58098 arg12, 58099 arg13, 58100 arg14, 58101 arg15, 58102 arg16, 58103 arg17, 58104 arg18, 58105 arg19, 58106 arg20, 58107 arg21, 58108 arg22, 58109 arg23, 58110 arg24, 58111 arg25, 58112 arg26, 58113 arg27, 58114 arg28, 58115 arg29, 58116 arg30, 58117 arg31, 58118 arg32, 58119 arg33, 58120 arg34, 58121 arg35, 58122 arg36, 58123 arg37, 58124 arg38, 58125 arg39, 58126 arg40, 58127 arg41, 58128 arg42, 58129 arg43, 58130 arg44, 58131 arg45, 58132 arg46, 58133 arg47, 58134 arg48, 58135 arg49, 58136 arg50, 58137 arg51, 58138 arg52, 58139 arg53, 58140 arg54, 58141 arg55, 58142 arg56, 58143 arg57, 58144 arg58, 58145 arg59, 58146 arg60, 58147 arg61, 58148 arg62, 58149 arg63, 58150 arg64, 58151 arg65, 58152 arg66, 58153 arg67, 58154 arg68, 58155 arg69, 58156 arg70, 58157 arg71, 58158 arg72, 58159 arg73, 58160 arg74, 58161 arg75, 58162 arg76, 58163 arg77, 58164 arg78, 58165 arg79, 58166 arg80, 58167 arg81, 58168 arg82, 58169 arg83, 58170 arg84, 58171 arg85, 58172 arg86, 58173 arg87, 58174 arg88, 58175 arg89, 58176 arg90, 58177 arg91, 58178 arg92, 58179 arg93, 58180 arg94, 58181 arg95, 58182 arg96, 58183 arg97, 58184 arg98, 58185 arg99, 58186 arg100, 58187 arg101, 58188 arg102, 58189 arg103, 58190 arg104); 58191 } 58192 58193 operator type_ () 58194 { 58195 return type_(*this); 58196 } 58197 58198 }; 58199 58200 template< 58201 typename T0, 58202 typename T1, 58203 typename T2, 58204 typename T3, 58205 typename T4, 58206 typename T5, 58207 typename T6, 58208 typename T7, 58209 typename T8, 58210 typename T9, 58211 typename T10, 58212 typename T11, 58213 typename T12, 58214 typename T13, 58215 typename T14, 58216 typename T15, 58217 typename T16, 58218 typename T17, 58219 typename T18, 58220 typename T19, 58221 typename T20, 58222 typename T21, 58223 typename T22, 58224 typename T23, 58225 typename T24, 58226 typename T25, 58227 typename T26, 58228 typename T27, 58229 typename T28, 58230 typename T29, 58231 typename T30, 58232 typename T31, 58233 typename T32, 58234 typename T33, 58235 typename T34, 58236 typename T35, 58237 typename T36, 58238 typename T37, 58239 typename T38, 58240 typename T39, 58241 typename T40, 58242 typename T41, 58243 typename T42, 58244 typename T43, 58245 typename T44, 58246 typename T45, 58247 typename T46, 58248 typename T47, 58249 typename T48, 58250 typename T49, 58251 typename T50, 58252 typename T51, 58253 typename T52, 58254 typename T53, 58255 typename T54, 58256 typename T55, 58257 typename T56, 58258 typename T57, 58259 typename T58, 58260 typename T59, 58261 typename T60, 58262 typename T61, 58263 typename T62, 58264 typename T63, 58265 typename T64, 58266 typename T65, 58267 typename T66, 58268 typename T67, 58269 typename T68, 58270 typename T69, 58271 typename T70, 58272 typename T71, 58273 typename T72, 58274 typename T73, 58275 typename T74, 58276 typename T75, 58277 typename T76, 58278 typename T77, 58279 typename T78, 58280 typename T79, 58281 typename T80, 58282 typename T81, 58283 typename T82, 58284 typename T83, 58285 typename T84, 58286 typename T85, 58287 typename T86, 58288 typename T87, 58289 typename T88, 58290 typename T89, 58291 typename T90, 58292 typename T91, 58293 typename T92, 58294 typename T93, 58295 typename T94, 58296 typename T95, 58297 typename T96, 58298 typename T97, 58299 typename T98, 58300 typename T99, 58301 typename T100, 58302 typename T101, 58303 typename T102, 58304 typename T103, 58305 typename T104, 58306 typename T105> 58307 struct functionImplementation_< 58308 T0, 58309 T1, 58310 T2, 58311 T3, 58312 T4, 58313 T5, 58314 T6, 58315 T7, 58316 T8, 58317 T9, 58318 T10, 58319 T11, 58320 T12, 58321 T13, 58322 T14, 58323 T15, 58324 T16, 58325 T17, 58326 T18, 58327 T19, 58328 T20, 58329 T21, 58330 T22, 58331 T23, 58332 T24, 58333 T25, 58334 T26, 58335 T27, 58336 T28, 58337 T29, 58338 T30, 58339 T31, 58340 T32, 58341 T33, 58342 T34, 58343 T35, 58344 T36, 58345 T37, 58346 T38, 58347 T39, 58348 T40, 58349 T41, 58350 T42, 58351 T43, 58352 T44, 58353 T45, 58354 T46, 58355 T47, 58356 T48, 58357 T49, 58358 T50, 58359 T51, 58360 T52, 58361 T53, 58362 T54, 58363 T55, 58364 T56, 58365 T57, 58366 T58, 58367 T59, 58368 T60, 58369 T61, 58370 T62, 58371 T63, 58372 T64, 58373 T65, 58374 T66, 58375 T67, 58376 T68, 58377 T69, 58378 T70, 58379 T71, 58380 T72, 58381 T73, 58382 T74, 58383 T75, 58384 T76, 58385 T77, 58386 T78, 58387 T79, 58388 T80, 58389 T81, 58390 T82, 58391 T83, 58392 T84, 58393 T85, 58394 T86, 58395 T87, 58396 T88, 58397 T89, 58398 T90, 58399 T91, 58400 T92, 58401 T93, 58402 T94, 58403 T95, 58404 T96, 58405 T97, 58406 T98, 58407 T99, 58408 T100, 58409 T101, 58410 T102, 58411 T103, 58412 T104, 58413 T105, 58414 NullType, 58415 NullType, 58416 NullType, 58417 NullType, 58418 NullType, 58419 NullType, 58420 NullType, 58421 NullType, 58422 NullType, 58423 NullType, 58424 NullType, 58425 NullType, 58426 NullType, 58427 NullType, 58428 NullType, 58429 NullType, 58430 NullType, 58431 NullType, 58432 NullType, 58433 NullType, 58434 NullType, 58435 NullType> 58436 { 58437 typedef detail::KernelFunctorGlobal< 58438 T0, 58439 T1, 58440 T2, 58441 T3, 58442 T4, 58443 T5, 58444 T6, 58445 T7, 58446 T8, 58447 T9, 58448 T10, 58449 T11, 58450 T12, 58451 T13, 58452 T14, 58453 T15, 58454 T16, 58455 T17, 58456 T18, 58457 T19, 58458 T20, 58459 T21, 58460 T22, 58461 T23, 58462 T24, 58463 T25, 58464 T26, 58465 T27, 58466 T28, 58467 T29, 58468 T30, 58469 T31, 58470 T32, 58471 T33, 58472 T34, 58473 T35, 58474 T36, 58475 T37, 58476 T38, 58477 T39, 58478 T40, 58479 T41, 58480 T42, 58481 T43, 58482 T44, 58483 T45, 58484 T46, 58485 T47, 58486 T48, 58487 T49, 58488 T50, 58489 T51, 58490 T52, 58491 T53, 58492 T54, 58493 T55, 58494 T56, 58495 T57, 58496 T58, 58497 T59, 58498 T60, 58499 T61, 58500 T62, 58501 T63, 58502 T64, 58503 T65, 58504 T66, 58505 T67, 58506 T68, 58507 T69, 58508 T70, 58509 T71, 58510 T72, 58511 T73, 58512 T74, 58513 T75, 58514 T76, 58515 T77, 58516 T78, 58517 T79, 58518 T80, 58519 T81, 58520 T82, 58521 T83, 58522 T84, 58523 T85, 58524 T86, 58525 T87, 58526 T88, 58527 T89, 58528 T90, 58529 T91, 58530 T92, 58531 T93, 58532 T94, 58533 T95, 58534 T96, 58535 T97, 58536 T98, 58537 T99, 58538 T100, 58539 T101, 58540 T102, 58541 T103, 58542 T104, 58543 T105, 58544 NullType, 58545 NullType, 58546 NullType, 58547 NullType, 58548 NullType, 58549 NullType, 58550 NullType, 58551 NullType, 58552 NullType, 58553 NullType, 58554 NullType, 58555 NullType, 58556 NullType, 58557 NullType, 58558 NullType, 58559 NullType, 58560 NullType, 58561 NullType, 58562 NullType, 58563 NullType, 58564 NullType, 58565 NullType> FunctorType; 58566 58567 FunctorType functor_; 58568 58569 functionImplementation_(const FunctorType &functor) : 58570 functor_(functor) 58571 { 58572 } 58573 58574 typedef std::tr1::function<Event ( 58575 const EnqueueArgs&, 58576 T0, 58577 T1, 58578 T2, 58579 T3, 58580 T4, 58581 T5, 58582 T6, 58583 T7, 58584 T8, 58585 T9, 58586 T10, 58587 T11, 58588 T12, 58589 T13, 58590 T14, 58591 T15, 58592 T16, 58593 T17, 58594 T18, 58595 T19, 58596 T20, 58597 T21, 58598 T22, 58599 T23, 58600 T24, 58601 T25, 58602 T26, 58603 T27, 58604 T28, 58605 T29, 58606 T30, 58607 T31, 58608 T32, 58609 T33, 58610 T34, 58611 T35, 58612 T36, 58613 T37, 58614 T38, 58615 T39, 58616 T40, 58617 T41, 58618 T42, 58619 T43, 58620 T44, 58621 T45, 58622 T46, 58623 T47, 58624 T48, 58625 T49, 58626 T50, 58627 T51, 58628 T52, 58629 T53, 58630 T54, 58631 T55, 58632 T56, 58633 T57, 58634 T58, 58635 T59, 58636 T60, 58637 T61, 58638 T62, 58639 T63, 58640 T64, 58641 T65, 58642 T66, 58643 T67, 58644 T68, 58645 T69, 58646 T70, 58647 T71, 58648 T72, 58649 T73, 58650 T74, 58651 T75, 58652 T76, 58653 T77, 58654 T78, 58655 T79, 58656 T80, 58657 T81, 58658 T82, 58659 T83, 58660 T84, 58661 T85, 58662 T86, 58663 T87, 58664 T88, 58665 T89, 58666 T90, 58667 T91, 58668 T92, 58669 T93, 58670 T94, 58671 T95, 58672 T96, 58673 T97, 58674 T98, 58675 T99, 58676 T100, 58677 T101, 58678 T102, 58679 T103, 58680 T104, 58681 T105)> type_; 58682 58683 Event operator()(const EnqueueArgs& enqueueArgs, 58684 T0 arg0, 58685 T1 arg1, 58686 T2 arg2, 58687 T3 arg3, 58688 T4 arg4, 58689 T5 arg5, 58690 T6 arg6, 58691 T7 arg7, 58692 T8 arg8, 58693 T9 arg9, 58694 T10 arg10, 58695 T11 arg11, 58696 T12 arg12, 58697 T13 arg13, 58698 T14 arg14, 58699 T15 arg15, 58700 T16 arg16, 58701 T17 arg17, 58702 T18 arg18, 58703 T19 arg19, 58704 T20 arg20, 58705 T21 arg21, 58706 T22 arg22, 58707 T23 arg23, 58708 T24 arg24, 58709 T25 arg25, 58710 T26 arg26, 58711 T27 arg27, 58712 T28 arg28, 58713 T29 arg29, 58714 T30 arg30, 58715 T31 arg31, 58716 T32 arg32, 58717 T33 arg33, 58718 T34 arg34, 58719 T35 arg35, 58720 T36 arg36, 58721 T37 arg37, 58722 T38 arg38, 58723 T39 arg39, 58724 T40 arg40, 58725 T41 arg41, 58726 T42 arg42, 58727 T43 arg43, 58728 T44 arg44, 58729 T45 arg45, 58730 T46 arg46, 58731 T47 arg47, 58732 T48 arg48, 58733 T49 arg49, 58734 T50 arg50, 58735 T51 arg51, 58736 T52 arg52, 58737 T53 arg53, 58738 T54 arg54, 58739 T55 arg55, 58740 T56 arg56, 58741 T57 arg57, 58742 T58 arg58, 58743 T59 arg59, 58744 T60 arg60, 58745 T61 arg61, 58746 T62 arg62, 58747 T63 arg63, 58748 T64 arg64, 58749 T65 arg65, 58750 T66 arg66, 58751 T67 arg67, 58752 T68 arg68, 58753 T69 arg69, 58754 T70 arg70, 58755 T71 arg71, 58756 T72 arg72, 58757 T73 arg73, 58758 T74 arg74, 58759 T75 arg75, 58760 T76 arg76, 58761 T77 arg77, 58762 T78 arg78, 58763 T79 arg79, 58764 T80 arg80, 58765 T81 arg81, 58766 T82 arg82, 58767 T83 arg83, 58768 T84 arg84, 58769 T85 arg85, 58770 T86 arg86, 58771 T87 arg87, 58772 T88 arg88, 58773 T89 arg89, 58774 T90 arg90, 58775 T91 arg91, 58776 T92 arg92, 58777 T93 arg93, 58778 T94 arg94, 58779 T95 arg95, 58780 T96 arg96, 58781 T97 arg97, 58782 T98 arg98, 58783 T99 arg99, 58784 T100 arg100, 58785 T101 arg101, 58786 T102 arg102, 58787 T103 arg103, 58788 T104 arg104, 58789 T105 arg105) 58790 { 58791 return functor_( 58792 enqueueArgs, 58793 arg0, 58794 arg1, 58795 arg2, 58796 arg3, 58797 arg4, 58798 arg5, 58799 arg6, 58800 arg7, 58801 arg8, 58802 arg9, 58803 arg10, 58804 arg11, 58805 arg12, 58806 arg13, 58807 arg14, 58808 arg15, 58809 arg16, 58810 arg17, 58811 arg18, 58812 arg19, 58813 arg20, 58814 arg21, 58815 arg22, 58816 arg23, 58817 arg24, 58818 arg25, 58819 arg26, 58820 arg27, 58821 arg28, 58822 arg29, 58823 arg30, 58824 arg31, 58825 arg32, 58826 arg33, 58827 arg34, 58828 arg35, 58829 arg36, 58830 arg37, 58831 arg38, 58832 arg39, 58833 arg40, 58834 arg41, 58835 arg42, 58836 arg43, 58837 arg44, 58838 arg45, 58839 arg46, 58840 arg47, 58841 arg48, 58842 arg49, 58843 arg50, 58844 arg51, 58845 arg52, 58846 arg53, 58847 arg54, 58848 arg55, 58849 arg56, 58850 arg57, 58851 arg58, 58852 arg59, 58853 arg60, 58854 arg61, 58855 arg62, 58856 arg63, 58857 arg64, 58858 arg65, 58859 arg66, 58860 arg67, 58861 arg68, 58862 arg69, 58863 arg70, 58864 arg71, 58865 arg72, 58866 arg73, 58867 arg74, 58868 arg75, 58869 arg76, 58870 arg77, 58871 arg78, 58872 arg79, 58873 arg80, 58874 arg81, 58875 arg82, 58876 arg83, 58877 arg84, 58878 arg85, 58879 arg86, 58880 arg87, 58881 arg88, 58882 arg89, 58883 arg90, 58884 arg91, 58885 arg92, 58886 arg93, 58887 arg94, 58888 arg95, 58889 arg96, 58890 arg97, 58891 arg98, 58892 arg99, 58893 arg100, 58894 arg101, 58895 arg102, 58896 arg103, 58897 arg104, 58898 arg105); 58899 } 58900 58901 operator type_ () 58902 { 58903 return type_(*this); 58904 } 58905 58906 }; 58907 58908 template< 58909 typename T0, 58910 typename T1, 58911 typename T2, 58912 typename T3, 58913 typename T4, 58914 typename T5, 58915 typename T6, 58916 typename T7, 58917 typename T8, 58918 typename T9, 58919 typename T10, 58920 typename T11, 58921 typename T12, 58922 typename T13, 58923 typename T14, 58924 typename T15, 58925 typename T16, 58926 typename T17, 58927 typename T18, 58928 typename T19, 58929 typename T20, 58930 typename T21, 58931 typename T22, 58932 typename T23, 58933 typename T24, 58934 typename T25, 58935 typename T26, 58936 typename T27, 58937 typename T28, 58938 typename T29, 58939 typename T30, 58940 typename T31, 58941 typename T32, 58942 typename T33, 58943 typename T34, 58944 typename T35, 58945 typename T36, 58946 typename T37, 58947 typename T38, 58948 typename T39, 58949 typename T40, 58950 typename T41, 58951 typename T42, 58952 typename T43, 58953 typename T44, 58954 typename T45, 58955 typename T46, 58956 typename T47, 58957 typename T48, 58958 typename T49, 58959 typename T50, 58960 typename T51, 58961 typename T52, 58962 typename T53, 58963 typename T54, 58964 typename T55, 58965 typename T56, 58966 typename T57, 58967 typename T58, 58968 typename T59, 58969 typename T60, 58970 typename T61, 58971 typename T62, 58972 typename T63, 58973 typename T64, 58974 typename T65, 58975 typename T66, 58976 typename T67, 58977 typename T68, 58978 typename T69, 58979 typename T70, 58980 typename T71, 58981 typename T72, 58982 typename T73, 58983 typename T74, 58984 typename T75, 58985 typename T76, 58986 typename T77, 58987 typename T78, 58988 typename T79, 58989 typename T80, 58990 typename T81, 58991 typename T82, 58992 typename T83, 58993 typename T84, 58994 typename T85, 58995 typename T86, 58996 typename T87, 58997 typename T88, 58998 typename T89, 58999 typename T90, 59000 typename T91, 59001 typename T92, 59002 typename T93, 59003 typename T94, 59004 typename T95, 59005 typename T96, 59006 typename T97, 59007 typename T98, 59008 typename T99, 59009 typename T100, 59010 typename T101, 59011 typename T102, 59012 typename T103, 59013 typename T104, 59014 typename T105, 59015 typename T106> 59016 struct functionImplementation_< 59017 T0, 59018 T1, 59019 T2, 59020 T3, 59021 T4, 59022 T5, 59023 T6, 59024 T7, 59025 T8, 59026 T9, 59027 T10, 59028 T11, 59029 T12, 59030 T13, 59031 T14, 59032 T15, 59033 T16, 59034 T17, 59035 T18, 59036 T19, 59037 T20, 59038 T21, 59039 T22, 59040 T23, 59041 T24, 59042 T25, 59043 T26, 59044 T27, 59045 T28, 59046 T29, 59047 T30, 59048 T31, 59049 T32, 59050 T33, 59051 T34, 59052 T35, 59053 T36, 59054 T37, 59055 T38, 59056 T39, 59057 T40, 59058 T41, 59059 T42, 59060 T43, 59061 T44, 59062 T45, 59063 T46, 59064 T47, 59065 T48, 59066 T49, 59067 T50, 59068 T51, 59069 T52, 59070 T53, 59071 T54, 59072 T55, 59073 T56, 59074 T57, 59075 T58, 59076 T59, 59077 T60, 59078 T61, 59079 T62, 59080 T63, 59081 T64, 59082 T65, 59083 T66, 59084 T67, 59085 T68, 59086 T69, 59087 T70, 59088 T71, 59089 T72, 59090 T73, 59091 T74, 59092 T75, 59093 T76, 59094 T77, 59095 T78, 59096 T79, 59097 T80, 59098 T81, 59099 T82, 59100 T83, 59101 T84, 59102 T85, 59103 T86, 59104 T87, 59105 T88, 59106 T89, 59107 T90, 59108 T91, 59109 T92, 59110 T93, 59111 T94, 59112 T95, 59113 T96, 59114 T97, 59115 T98, 59116 T99, 59117 T100, 59118 T101, 59119 T102, 59120 T103, 59121 T104, 59122 T105, 59123 T106, 59124 NullType, 59125 NullType, 59126 NullType, 59127 NullType, 59128 NullType, 59129 NullType, 59130 NullType, 59131 NullType, 59132 NullType, 59133 NullType, 59134 NullType, 59135 NullType, 59136 NullType, 59137 NullType, 59138 NullType, 59139 NullType, 59140 NullType, 59141 NullType, 59142 NullType, 59143 NullType, 59144 NullType> 59145 { 59146 typedef detail::KernelFunctorGlobal< 59147 T0, 59148 T1, 59149 T2, 59150 T3, 59151 T4, 59152 T5, 59153 T6, 59154 T7, 59155 T8, 59156 T9, 59157 T10, 59158 T11, 59159 T12, 59160 T13, 59161 T14, 59162 T15, 59163 T16, 59164 T17, 59165 T18, 59166 T19, 59167 T20, 59168 T21, 59169 T22, 59170 T23, 59171 T24, 59172 T25, 59173 T26, 59174 T27, 59175 T28, 59176 T29, 59177 T30, 59178 T31, 59179 T32, 59180 T33, 59181 T34, 59182 T35, 59183 T36, 59184 T37, 59185 T38, 59186 T39, 59187 T40, 59188 T41, 59189 T42, 59190 T43, 59191 T44, 59192 T45, 59193 T46, 59194 T47, 59195 T48, 59196 T49, 59197 T50, 59198 T51, 59199 T52, 59200 T53, 59201 T54, 59202 T55, 59203 T56, 59204 T57, 59205 T58, 59206 T59, 59207 T60, 59208 T61, 59209 T62, 59210 T63, 59211 T64, 59212 T65, 59213 T66, 59214 T67, 59215 T68, 59216 T69, 59217 T70, 59218 T71, 59219 T72, 59220 T73, 59221 T74, 59222 T75, 59223 T76, 59224 T77, 59225 T78, 59226 T79, 59227 T80, 59228 T81, 59229 T82, 59230 T83, 59231 T84, 59232 T85, 59233 T86, 59234 T87, 59235 T88, 59236 T89, 59237 T90, 59238 T91, 59239 T92, 59240 T93, 59241 T94, 59242 T95, 59243 T96, 59244 T97, 59245 T98, 59246 T99, 59247 T100, 59248 T101, 59249 T102, 59250 T103, 59251 T104, 59252 T105, 59253 T106, 59254 NullType, 59255 NullType, 59256 NullType, 59257 NullType, 59258 NullType, 59259 NullType, 59260 NullType, 59261 NullType, 59262 NullType, 59263 NullType, 59264 NullType, 59265 NullType, 59266 NullType, 59267 NullType, 59268 NullType, 59269 NullType, 59270 NullType, 59271 NullType, 59272 NullType, 59273 NullType, 59274 NullType> FunctorType; 59275 59276 FunctorType functor_; 59277 59278 functionImplementation_(const FunctorType &functor) : 59279 functor_(functor) 59280 { 59281 } 59282 59283 typedef std::tr1::function<Event ( 59284 const EnqueueArgs&, 59285 T0, 59286 T1, 59287 T2, 59288 T3, 59289 T4, 59290 T5, 59291 T6, 59292 T7, 59293 T8, 59294 T9, 59295 T10, 59296 T11, 59297 T12, 59298 T13, 59299 T14, 59300 T15, 59301 T16, 59302 T17, 59303 T18, 59304 T19, 59305 T20, 59306 T21, 59307 T22, 59308 T23, 59309 T24, 59310 T25, 59311 T26, 59312 T27, 59313 T28, 59314 T29, 59315 T30, 59316 T31, 59317 T32, 59318 T33, 59319 T34, 59320 T35, 59321 T36, 59322 T37, 59323 T38, 59324 T39, 59325 T40, 59326 T41, 59327 T42, 59328 T43, 59329 T44, 59330 T45, 59331 T46, 59332 T47, 59333 T48, 59334 T49, 59335 T50, 59336 T51, 59337 T52, 59338 T53, 59339 T54, 59340 T55, 59341 T56, 59342 T57, 59343 T58, 59344 T59, 59345 T60, 59346 T61, 59347 T62, 59348 T63, 59349 T64, 59350 T65, 59351 T66, 59352 T67, 59353 T68, 59354 T69, 59355 T70, 59356 T71, 59357 T72, 59358 T73, 59359 T74, 59360 T75, 59361 T76, 59362 T77, 59363 T78, 59364 T79, 59365 T80, 59366 T81, 59367 T82, 59368 T83, 59369 T84, 59370 T85, 59371 T86, 59372 T87, 59373 T88, 59374 T89, 59375 T90, 59376 T91, 59377 T92, 59378 T93, 59379 T94, 59380 T95, 59381 T96, 59382 T97, 59383 T98, 59384 T99, 59385 T100, 59386 T101, 59387 T102, 59388 T103, 59389 T104, 59390 T105, 59391 T106)> type_; 59392 59393 Event operator()(const EnqueueArgs& enqueueArgs, 59394 T0 arg0, 59395 T1 arg1, 59396 T2 arg2, 59397 T3 arg3, 59398 T4 arg4, 59399 T5 arg5, 59400 T6 arg6, 59401 T7 arg7, 59402 T8 arg8, 59403 T9 arg9, 59404 T10 arg10, 59405 T11 arg11, 59406 T12 arg12, 59407 T13 arg13, 59408 T14 arg14, 59409 T15 arg15, 59410 T16 arg16, 59411 T17 arg17, 59412 T18 arg18, 59413 T19 arg19, 59414 T20 arg20, 59415 T21 arg21, 59416 T22 arg22, 59417 T23 arg23, 59418 T24 arg24, 59419 T25 arg25, 59420 T26 arg26, 59421 T27 arg27, 59422 T28 arg28, 59423 T29 arg29, 59424 T30 arg30, 59425 T31 arg31, 59426 T32 arg32, 59427 T33 arg33, 59428 T34 arg34, 59429 T35 arg35, 59430 T36 arg36, 59431 T37 arg37, 59432 T38 arg38, 59433 T39 arg39, 59434 T40 arg40, 59435 T41 arg41, 59436 T42 arg42, 59437 T43 arg43, 59438 T44 arg44, 59439 T45 arg45, 59440 T46 arg46, 59441 T47 arg47, 59442 T48 arg48, 59443 T49 arg49, 59444 T50 arg50, 59445 T51 arg51, 59446 T52 arg52, 59447 T53 arg53, 59448 T54 arg54, 59449 T55 arg55, 59450 T56 arg56, 59451 T57 arg57, 59452 T58 arg58, 59453 T59 arg59, 59454 T60 arg60, 59455 T61 arg61, 59456 T62 arg62, 59457 T63 arg63, 59458 T64 arg64, 59459 T65 arg65, 59460 T66 arg66, 59461 T67 arg67, 59462 T68 arg68, 59463 T69 arg69, 59464 T70 arg70, 59465 T71 arg71, 59466 T72 arg72, 59467 T73 arg73, 59468 T74 arg74, 59469 T75 arg75, 59470 T76 arg76, 59471 T77 arg77, 59472 T78 arg78, 59473 T79 arg79, 59474 T80 arg80, 59475 T81 arg81, 59476 T82 arg82, 59477 T83 arg83, 59478 T84 arg84, 59479 T85 arg85, 59480 T86 arg86, 59481 T87 arg87, 59482 T88 arg88, 59483 T89 arg89, 59484 T90 arg90, 59485 T91 arg91, 59486 T92 arg92, 59487 T93 arg93, 59488 T94 arg94, 59489 T95 arg95, 59490 T96 arg96, 59491 T97 arg97, 59492 T98 arg98, 59493 T99 arg99, 59494 T100 arg100, 59495 T101 arg101, 59496 T102 arg102, 59497 T103 arg103, 59498 T104 arg104, 59499 T105 arg105, 59500 T106 arg106) 59501 { 59502 return functor_( 59503 enqueueArgs, 59504 arg0, 59505 arg1, 59506 arg2, 59507 arg3, 59508 arg4, 59509 arg5, 59510 arg6, 59511 arg7, 59512 arg8, 59513 arg9, 59514 arg10, 59515 arg11, 59516 arg12, 59517 arg13, 59518 arg14, 59519 arg15, 59520 arg16, 59521 arg17, 59522 arg18, 59523 arg19, 59524 arg20, 59525 arg21, 59526 arg22, 59527 arg23, 59528 arg24, 59529 arg25, 59530 arg26, 59531 arg27, 59532 arg28, 59533 arg29, 59534 arg30, 59535 arg31, 59536 arg32, 59537 arg33, 59538 arg34, 59539 arg35, 59540 arg36, 59541 arg37, 59542 arg38, 59543 arg39, 59544 arg40, 59545 arg41, 59546 arg42, 59547 arg43, 59548 arg44, 59549 arg45, 59550 arg46, 59551 arg47, 59552 arg48, 59553 arg49, 59554 arg50, 59555 arg51, 59556 arg52, 59557 arg53, 59558 arg54, 59559 arg55, 59560 arg56, 59561 arg57, 59562 arg58, 59563 arg59, 59564 arg60, 59565 arg61, 59566 arg62, 59567 arg63, 59568 arg64, 59569 arg65, 59570 arg66, 59571 arg67, 59572 arg68, 59573 arg69, 59574 arg70, 59575 arg71, 59576 arg72, 59577 arg73, 59578 arg74, 59579 arg75, 59580 arg76, 59581 arg77, 59582 arg78, 59583 arg79, 59584 arg80, 59585 arg81, 59586 arg82, 59587 arg83, 59588 arg84, 59589 arg85, 59590 arg86, 59591 arg87, 59592 arg88, 59593 arg89, 59594 arg90, 59595 arg91, 59596 arg92, 59597 arg93, 59598 arg94, 59599 arg95, 59600 arg96, 59601 arg97, 59602 arg98, 59603 arg99, 59604 arg100, 59605 arg101, 59606 arg102, 59607 arg103, 59608 arg104, 59609 arg105, 59610 arg106); 59611 } 59612 59613 operator type_ () 59614 { 59615 return type_(*this); 59616 } 59617 59618 }; 59619 59620 template< 59621 typename T0, 59622 typename T1, 59623 typename T2, 59624 typename T3, 59625 typename T4, 59626 typename T5, 59627 typename T6, 59628 typename T7, 59629 typename T8, 59630 typename T9, 59631 typename T10, 59632 typename T11, 59633 typename T12, 59634 typename T13, 59635 typename T14, 59636 typename T15, 59637 typename T16, 59638 typename T17, 59639 typename T18, 59640 typename T19, 59641 typename T20, 59642 typename T21, 59643 typename T22, 59644 typename T23, 59645 typename T24, 59646 typename T25, 59647 typename T26, 59648 typename T27, 59649 typename T28, 59650 typename T29, 59651 typename T30, 59652 typename T31, 59653 typename T32, 59654 typename T33, 59655 typename T34, 59656 typename T35, 59657 typename T36, 59658 typename T37, 59659 typename T38, 59660 typename T39, 59661 typename T40, 59662 typename T41, 59663 typename T42, 59664 typename T43, 59665 typename T44, 59666 typename T45, 59667 typename T46, 59668 typename T47, 59669 typename T48, 59670 typename T49, 59671 typename T50, 59672 typename T51, 59673 typename T52, 59674 typename T53, 59675 typename T54, 59676 typename T55, 59677 typename T56, 59678 typename T57, 59679 typename T58, 59680 typename T59, 59681 typename T60, 59682 typename T61, 59683 typename T62, 59684 typename T63, 59685 typename T64, 59686 typename T65, 59687 typename T66, 59688 typename T67, 59689 typename T68, 59690 typename T69, 59691 typename T70, 59692 typename T71, 59693 typename T72, 59694 typename T73, 59695 typename T74, 59696 typename T75, 59697 typename T76, 59698 typename T77, 59699 typename T78, 59700 typename T79, 59701 typename T80, 59702 typename T81, 59703 typename T82, 59704 typename T83, 59705 typename T84, 59706 typename T85, 59707 typename T86, 59708 typename T87, 59709 typename T88, 59710 typename T89, 59711 typename T90, 59712 typename T91, 59713 typename T92, 59714 typename T93, 59715 typename T94, 59716 typename T95, 59717 typename T96, 59718 typename T97, 59719 typename T98, 59720 typename T99, 59721 typename T100, 59722 typename T101, 59723 typename T102, 59724 typename T103, 59725 typename T104, 59726 typename T105, 59727 typename T106, 59728 typename T107> 59729 struct functionImplementation_< 59730 T0, 59731 T1, 59732 T2, 59733 T3, 59734 T4, 59735 T5, 59736 T6, 59737 T7, 59738 T8, 59739 T9, 59740 T10, 59741 T11, 59742 T12, 59743 T13, 59744 T14, 59745 T15, 59746 T16, 59747 T17, 59748 T18, 59749 T19, 59750 T20, 59751 T21, 59752 T22, 59753 T23, 59754 T24, 59755 T25, 59756 T26, 59757 T27, 59758 T28, 59759 T29, 59760 T30, 59761 T31, 59762 T32, 59763 T33, 59764 T34, 59765 T35, 59766 T36, 59767 T37, 59768 T38, 59769 T39, 59770 T40, 59771 T41, 59772 T42, 59773 T43, 59774 T44, 59775 T45, 59776 T46, 59777 T47, 59778 T48, 59779 T49, 59780 T50, 59781 T51, 59782 T52, 59783 T53, 59784 T54, 59785 T55, 59786 T56, 59787 T57, 59788 T58, 59789 T59, 59790 T60, 59791 T61, 59792 T62, 59793 T63, 59794 T64, 59795 T65, 59796 T66, 59797 T67, 59798 T68, 59799 T69, 59800 T70, 59801 T71, 59802 T72, 59803 T73, 59804 T74, 59805 T75, 59806 T76, 59807 T77, 59808 T78, 59809 T79, 59810 T80, 59811 T81, 59812 T82, 59813 T83, 59814 T84, 59815 T85, 59816 T86, 59817 T87, 59818 T88, 59819 T89, 59820 T90, 59821 T91, 59822 T92, 59823 T93, 59824 T94, 59825 T95, 59826 T96, 59827 T97, 59828 T98, 59829 T99, 59830 T100, 59831 T101, 59832 T102, 59833 T103, 59834 T104, 59835 T105, 59836 T106, 59837 T107, 59838 NullType, 59839 NullType, 59840 NullType, 59841 NullType, 59842 NullType, 59843 NullType, 59844 NullType, 59845 NullType, 59846 NullType, 59847 NullType, 59848 NullType, 59849 NullType, 59850 NullType, 59851 NullType, 59852 NullType, 59853 NullType, 59854 NullType, 59855 NullType, 59856 NullType, 59857 NullType> 59858 { 59859 typedef detail::KernelFunctorGlobal< 59860 T0, 59861 T1, 59862 T2, 59863 T3, 59864 T4, 59865 T5, 59866 T6, 59867 T7, 59868 T8, 59869 T9, 59870 T10, 59871 T11, 59872 T12, 59873 T13, 59874 T14, 59875 T15, 59876 T16, 59877 T17, 59878 T18, 59879 T19, 59880 T20, 59881 T21, 59882 T22, 59883 T23, 59884 T24, 59885 T25, 59886 T26, 59887 T27, 59888 T28, 59889 T29, 59890 T30, 59891 T31, 59892 T32, 59893 T33, 59894 T34, 59895 T35, 59896 T36, 59897 T37, 59898 T38, 59899 T39, 59900 T40, 59901 T41, 59902 T42, 59903 T43, 59904 T44, 59905 T45, 59906 T46, 59907 T47, 59908 T48, 59909 T49, 59910 T50, 59911 T51, 59912 T52, 59913 T53, 59914 T54, 59915 T55, 59916 T56, 59917 T57, 59918 T58, 59919 T59, 59920 T60, 59921 T61, 59922 T62, 59923 T63, 59924 T64, 59925 T65, 59926 T66, 59927 T67, 59928 T68, 59929 T69, 59930 T70, 59931 T71, 59932 T72, 59933 T73, 59934 T74, 59935 T75, 59936 T76, 59937 T77, 59938 T78, 59939 T79, 59940 T80, 59941 T81, 59942 T82, 59943 T83, 59944 T84, 59945 T85, 59946 T86, 59947 T87, 59948 T88, 59949 T89, 59950 T90, 59951 T91, 59952 T92, 59953 T93, 59954 T94, 59955 T95, 59956 T96, 59957 T97, 59958 T98, 59959 T99, 59960 T100, 59961 T101, 59962 T102, 59963 T103, 59964 T104, 59965 T105, 59966 T106, 59967 T107, 59968 NullType, 59969 NullType, 59970 NullType, 59971 NullType, 59972 NullType, 59973 NullType, 59974 NullType, 59975 NullType, 59976 NullType, 59977 NullType, 59978 NullType, 59979 NullType, 59980 NullType, 59981 NullType, 59982 NullType, 59983 NullType, 59984 NullType, 59985 NullType, 59986 NullType, 59987 NullType> FunctorType; 59988 59989 FunctorType functor_; 59990 59991 functionImplementation_(const FunctorType &functor) : 59992 functor_(functor) 59993 { 59994 } 59995 59996 typedef std::tr1::function<Event ( 59997 const EnqueueArgs&, 59998 T0, 59999 T1, 60000 T2, 60001 T3, 60002 T4, 60003 T5, 60004 T6, 60005 T7, 60006 T8, 60007 T9, 60008 T10, 60009 T11, 60010 T12, 60011 T13, 60012 T14, 60013 T15, 60014 T16, 60015 T17, 60016 T18, 60017 T19, 60018 T20, 60019 T21, 60020 T22, 60021 T23, 60022 T24, 60023 T25, 60024 T26, 60025 T27, 60026 T28, 60027 T29, 60028 T30, 60029 T31, 60030 T32, 60031 T33, 60032 T34, 60033 T35, 60034 T36, 60035 T37, 60036 T38, 60037 T39, 60038 T40, 60039 T41, 60040 T42, 60041 T43, 60042 T44, 60043 T45, 60044 T46, 60045 T47, 60046 T48, 60047 T49, 60048 T50, 60049 T51, 60050 T52, 60051 T53, 60052 T54, 60053 T55, 60054 T56, 60055 T57, 60056 T58, 60057 T59, 60058 T60, 60059 T61, 60060 T62, 60061 T63, 60062 T64, 60063 T65, 60064 T66, 60065 T67, 60066 T68, 60067 T69, 60068 T70, 60069 T71, 60070 T72, 60071 T73, 60072 T74, 60073 T75, 60074 T76, 60075 T77, 60076 T78, 60077 T79, 60078 T80, 60079 T81, 60080 T82, 60081 T83, 60082 T84, 60083 T85, 60084 T86, 60085 T87, 60086 T88, 60087 T89, 60088 T90, 60089 T91, 60090 T92, 60091 T93, 60092 T94, 60093 T95, 60094 T96, 60095 T97, 60096 T98, 60097 T99, 60098 T100, 60099 T101, 60100 T102, 60101 T103, 60102 T104, 60103 T105, 60104 T106, 60105 T107)> type_; 60106 60107 Event operator()(const EnqueueArgs& enqueueArgs, 60108 T0 arg0, 60109 T1 arg1, 60110 T2 arg2, 60111 T3 arg3, 60112 T4 arg4, 60113 T5 arg5, 60114 T6 arg6, 60115 T7 arg7, 60116 T8 arg8, 60117 T9 arg9, 60118 T10 arg10, 60119 T11 arg11, 60120 T12 arg12, 60121 T13 arg13, 60122 T14 arg14, 60123 T15 arg15, 60124 T16 arg16, 60125 T17 arg17, 60126 T18 arg18, 60127 T19 arg19, 60128 T20 arg20, 60129 T21 arg21, 60130 T22 arg22, 60131 T23 arg23, 60132 T24 arg24, 60133 T25 arg25, 60134 T26 arg26, 60135 T27 arg27, 60136 T28 arg28, 60137 T29 arg29, 60138 T30 arg30, 60139 T31 arg31, 60140 T32 arg32, 60141 T33 arg33, 60142 T34 arg34, 60143 T35 arg35, 60144 T36 arg36, 60145 T37 arg37, 60146 T38 arg38, 60147 T39 arg39, 60148 T40 arg40, 60149 T41 arg41, 60150 T42 arg42, 60151 T43 arg43, 60152 T44 arg44, 60153 T45 arg45, 60154 T46 arg46, 60155 T47 arg47, 60156 T48 arg48, 60157 T49 arg49, 60158 T50 arg50, 60159 T51 arg51, 60160 T52 arg52, 60161 T53 arg53, 60162 T54 arg54, 60163 T55 arg55, 60164 T56 arg56, 60165 T57 arg57, 60166 T58 arg58, 60167 T59 arg59, 60168 T60 arg60, 60169 T61 arg61, 60170 T62 arg62, 60171 T63 arg63, 60172 T64 arg64, 60173 T65 arg65, 60174 T66 arg66, 60175 T67 arg67, 60176 T68 arg68, 60177 T69 arg69, 60178 T70 arg70, 60179 T71 arg71, 60180 T72 arg72, 60181 T73 arg73, 60182 T74 arg74, 60183 T75 arg75, 60184 T76 arg76, 60185 T77 arg77, 60186 T78 arg78, 60187 T79 arg79, 60188 T80 arg80, 60189 T81 arg81, 60190 T82 arg82, 60191 T83 arg83, 60192 T84 arg84, 60193 T85 arg85, 60194 T86 arg86, 60195 T87 arg87, 60196 T88 arg88, 60197 T89 arg89, 60198 T90 arg90, 60199 T91 arg91, 60200 T92 arg92, 60201 T93 arg93, 60202 T94 arg94, 60203 T95 arg95, 60204 T96 arg96, 60205 T97 arg97, 60206 T98 arg98, 60207 T99 arg99, 60208 T100 arg100, 60209 T101 arg101, 60210 T102 arg102, 60211 T103 arg103, 60212 T104 arg104, 60213 T105 arg105, 60214 T106 arg106, 60215 T107 arg107) 60216 { 60217 return functor_( 60218 enqueueArgs, 60219 arg0, 60220 arg1, 60221 arg2, 60222 arg3, 60223 arg4, 60224 arg5, 60225 arg6, 60226 arg7, 60227 arg8, 60228 arg9, 60229 arg10, 60230 arg11, 60231 arg12, 60232 arg13, 60233 arg14, 60234 arg15, 60235 arg16, 60236 arg17, 60237 arg18, 60238 arg19, 60239 arg20, 60240 arg21, 60241 arg22, 60242 arg23, 60243 arg24, 60244 arg25, 60245 arg26, 60246 arg27, 60247 arg28, 60248 arg29, 60249 arg30, 60250 arg31, 60251 arg32, 60252 arg33, 60253 arg34, 60254 arg35, 60255 arg36, 60256 arg37, 60257 arg38, 60258 arg39, 60259 arg40, 60260 arg41, 60261 arg42, 60262 arg43, 60263 arg44, 60264 arg45, 60265 arg46, 60266 arg47, 60267 arg48, 60268 arg49, 60269 arg50, 60270 arg51, 60271 arg52, 60272 arg53, 60273 arg54, 60274 arg55, 60275 arg56, 60276 arg57, 60277 arg58, 60278 arg59, 60279 arg60, 60280 arg61, 60281 arg62, 60282 arg63, 60283 arg64, 60284 arg65, 60285 arg66, 60286 arg67, 60287 arg68, 60288 arg69, 60289 arg70, 60290 arg71, 60291 arg72, 60292 arg73, 60293 arg74, 60294 arg75, 60295 arg76, 60296 arg77, 60297 arg78, 60298 arg79, 60299 arg80, 60300 arg81, 60301 arg82, 60302 arg83, 60303 arg84, 60304 arg85, 60305 arg86, 60306 arg87, 60307 arg88, 60308 arg89, 60309 arg90, 60310 arg91, 60311 arg92, 60312 arg93, 60313 arg94, 60314 arg95, 60315 arg96, 60316 arg97, 60317 arg98, 60318 arg99, 60319 arg100, 60320 arg101, 60321 arg102, 60322 arg103, 60323 arg104, 60324 arg105, 60325 arg106, 60326 arg107); 60327 } 60328 60329 operator type_ () 60330 { 60331 return type_(*this); 60332 } 60333 60334 }; 60335 60336 template< 60337 typename T0, 60338 typename T1, 60339 typename T2, 60340 typename T3, 60341 typename T4, 60342 typename T5, 60343 typename T6, 60344 typename T7, 60345 typename T8, 60346 typename T9, 60347 typename T10, 60348 typename T11, 60349 typename T12, 60350 typename T13, 60351 typename T14, 60352 typename T15, 60353 typename T16, 60354 typename T17, 60355 typename T18, 60356 typename T19, 60357 typename T20, 60358 typename T21, 60359 typename T22, 60360 typename T23, 60361 typename T24, 60362 typename T25, 60363 typename T26, 60364 typename T27, 60365 typename T28, 60366 typename T29, 60367 typename T30, 60368 typename T31, 60369 typename T32, 60370 typename T33, 60371 typename T34, 60372 typename T35, 60373 typename T36, 60374 typename T37, 60375 typename T38, 60376 typename T39, 60377 typename T40, 60378 typename T41, 60379 typename T42, 60380 typename T43, 60381 typename T44, 60382 typename T45, 60383 typename T46, 60384 typename T47, 60385 typename T48, 60386 typename T49, 60387 typename T50, 60388 typename T51, 60389 typename T52, 60390 typename T53, 60391 typename T54, 60392 typename T55, 60393 typename T56, 60394 typename T57, 60395 typename T58, 60396 typename T59, 60397 typename T60, 60398 typename T61, 60399 typename T62, 60400 typename T63, 60401 typename T64, 60402 typename T65, 60403 typename T66, 60404 typename T67, 60405 typename T68, 60406 typename T69, 60407 typename T70, 60408 typename T71, 60409 typename T72, 60410 typename T73, 60411 typename T74, 60412 typename T75, 60413 typename T76, 60414 typename T77, 60415 typename T78, 60416 typename T79, 60417 typename T80, 60418 typename T81, 60419 typename T82, 60420 typename T83, 60421 typename T84, 60422 typename T85, 60423 typename T86, 60424 typename T87, 60425 typename T88, 60426 typename T89, 60427 typename T90, 60428 typename T91, 60429 typename T92, 60430 typename T93, 60431 typename T94, 60432 typename T95, 60433 typename T96, 60434 typename T97, 60435 typename T98, 60436 typename T99, 60437 typename T100, 60438 typename T101, 60439 typename T102, 60440 typename T103, 60441 typename T104, 60442 typename T105, 60443 typename T106, 60444 typename T107, 60445 typename T108> 60446 struct functionImplementation_< 60447 T0, 60448 T1, 60449 T2, 60450 T3, 60451 T4, 60452 T5, 60453 T6, 60454 T7, 60455 T8, 60456 T9, 60457 T10, 60458 T11, 60459 T12, 60460 T13, 60461 T14, 60462 T15, 60463 T16, 60464 T17, 60465 T18, 60466 T19, 60467 T20, 60468 T21, 60469 T22, 60470 T23, 60471 T24, 60472 T25, 60473 T26, 60474 T27, 60475 T28, 60476 T29, 60477 T30, 60478 T31, 60479 T32, 60480 T33, 60481 T34, 60482 T35, 60483 T36, 60484 T37, 60485 T38, 60486 T39, 60487 T40, 60488 T41, 60489 T42, 60490 T43, 60491 T44, 60492 T45, 60493 T46, 60494 T47, 60495 T48, 60496 T49, 60497 T50, 60498 T51, 60499 T52, 60500 T53, 60501 T54, 60502 T55, 60503 T56, 60504 T57, 60505 T58, 60506 T59, 60507 T60, 60508 T61, 60509 T62, 60510 T63, 60511 T64, 60512 T65, 60513 T66, 60514 T67, 60515 T68, 60516 T69, 60517 T70, 60518 T71, 60519 T72, 60520 T73, 60521 T74, 60522 T75, 60523 T76, 60524 T77, 60525 T78, 60526 T79, 60527 T80, 60528 T81, 60529 T82, 60530 T83, 60531 T84, 60532 T85, 60533 T86, 60534 T87, 60535 T88, 60536 T89, 60537 T90, 60538 T91, 60539 T92, 60540 T93, 60541 T94, 60542 T95, 60543 T96, 60544 T97, 60545 T98, 60546 T99, 60547 T100, 60548 T101, 60549 T102, 60550 T103, 60551 T104, 60552 T105, 60553 T106, 60554 T107, 60555 T108, 60556 NullType, 60557 NullType, 60558 NullType, 60559 NullType, 60560 NullType, 60561 NullType, 60562 NullType, 60563 NullType, 60564 NullType, 60565 NullType, 60566 NullType, 60567 NullType, 60568 NullType, 60569 NullType, 60570 NullType, 60571 NullType, 60572 NullType, 60573 NullType, 60574 NullType> 60575 { 60576 typedef detail::KernelFunctorGlobal< 60577 T0, 60578 T1, 60579 T2, 60580 T3, 60581 T4, 60582 T5, 60583 T6, 60584 T7, 60585 T8, 60586 T9, 60587 T10, 60588 T11, 60589 T12, 60590 T13, 60591 T14, 60592 T15, 60593 T16, 60594 T17, 60595 T18, 60596 T19, 60597 T20, 60598 T21, 60599 T22, 60600 T23, 60601 T24, 60602 T25, 60603 T26, 60604 T27, 60605 T28, 60606 T29, 60607 T30, 60608 T31, 60609 T32, 60610 T33, 60611 T34, 60612 T35, 60613 T36, 60614 T37, 60615 T38, 60616 T39, 60617 T40, 60618 T41, 60619 T42, 60620 T43, 60621 T44, 60622 T45, 60623 T46, 60624 T47, 60625 T48, 60626 T49, 60627 T50, 60628 T51, 60629 T52, 60630 T53, 60631 T54, 60632 T55, 60633 T56, 60634 T57, 60635 T58, 60636 T59, 60637 T60, 60638 T61, 60639 T62, 60640 T63, 60641 T64, 60642 T65, 60643 T66, 60644 T67, 60645 T68, 60646 T69, 60647 T70, 60648 T71, 60649 T72, 60650 T73, 60651 T74, 60652 T75, 60653 T76, 60654 T77, 60655 T78, 60656 T79, 60657 T80, 60658 T81, 60659 T82, 60660 T83, 60661 T84, 60662 T85, 60663 T86, 60664 T87, 60665 T88, 60666 T89, 60667 T90, 60668 T91, 60669 T92, 60670 T93, 60671 T94, 60672 T95, 60673 T96, 60674 T97, 60675 T98, 60676 T99, 60677 T100, 60678 T101, 60679 T102, 60680 T103, 60681 T104, 60682 T105, 60683 T106, 60684 T107, 60685 T108, 60686 NullType, 60687 NullType, 60688 NullType, 60689 NullType, 60690 NullType, 60691 NullType, 60692 NullType, 60693 NullType, 60694 NullType, 60695 NullType, 60696 NullType, 60697 NullType, 60698 NullType, 60699 NullType, 60700 NullType, 60701 NullType, 60702 NullType, 60703 NullType, 60704 NullType> FunctorType; 60705 60706 FunctorType functor_; 60707 60708 functionImplementation_(const FunctorType &functor) : 60709 functor_(functor) 60710 { 60711 } 60712 60713 typedef std::tr1::function<Event ( 60714 const EnqueueArgs&, 60715 T0, 60716 T1, 60717 T2, 60718 T3, 60719 T4, 60720 T5, 60721 T6, 60722 T7, 60723 T8, 60724 T9, 60725 T10, 60726 T11, 60727 T12, 60728 T13, 60729 T14, 60730 T15, 60731 T16, 60732 T17, 60733 T18, 60734 T19, 60735 T20, 60736 T21, 60737 T22, 60738 T23, 60739 T24, 60740 T25, 60741 T26, 60742 T27, 60743 T28, 60744 T29, 60745 T30, 60746 T31, 60747 T32, 60748 T33, 60749 T34, 60750 T35, 60751 T36, 60752 T37, 60753 T38, 60754 T39, 60755 T40, 60756 T41, 60757 T42, 60758 T43, 60759 T44, 60760 T45, 60761 T46, 60762 T47, 60763 T48, 60764 T49, 60765 T50, 60766 T51, 60767 T52, 60768 T53, 60769 T54, 60770 T55, 60771 T56, 60772 T57, 60773 T58, 60774 T59, 60775 T60, 60776 T61, 60777 T62, 60778 T63, 60779 T64, 60780 T65, 60781 T66, 60782 T67, 60783 T68, 60784 T69, 60785 T70, 60786 T71, 60787 T72, 60788 T73, 60789 T74, 60790 T75, 60791 T76, 60792 T77, 60793 T78, 60794 T79, 60795 T80, 60796 T81, 60797 T82, 60798 T83, 60799 T84, 60800 T85, 60801 T86, 60802 T87, 60803 T88, 60804 T89, 60805 T90, 60806 T91, 60807 T92, 60808 T93, 60809 T94, 60810 T95, 60811 T96, 60812 T97, 60813 T98, 60814 T99, 60815 T100, 60816 T101, 60817 T102, 60818 T103, 60819 T104, 60820 T105, 60821 T106, 60822 T107, 60823 T108)> type_; 60824 60825 Event operator()(const EnqueueArgs& enqueueArgs, 60826 T0 arg0, 60827 T1 arg1, 60828 T2 arg2, 60829 T3 arg3, 60830 T4 arg4, 60831 T5 arg5, 60832 T6 arg6, 60833 T7 arg7, 60834 T8 arg8, 60835 T9 arg9, 60836 T10 arg10, 60837 T11 arg11, 60838 T12 arg12, 60839 T13 arg13, 60840 T14 arg14, 60841 T15 arg15, 60842 T16 arg16, 60843 T17 arg17, 60844 T18 arg18, 60845 T19 arg19, 60846 T20 arg20, 60847 T21 arg21, 60848 T22 arg22, 60849 T23 arg23, 60850 T24 arg24, 60851 T25 arg25, 60852 T26 arg26, 60853 T27 arg27, 60854 T28 arg28, 60855 T29 arg29, 60856 T30 arg30, 60857 T31 arg31, 60858 T32 arg32, 60859 T33 arg33, 60860 T34 arg34, 60861 T35 arg35, 60862 T36 arg36, 60863 T37 arg37, 60864 T38 arg38, 60865 T39 arg39, 60866 T40 arg40, 60867 T41 arg41, 60868 T42 arg42, 60869 T43 arg43, 60870 T44 arg44, 60871 T45 arg45, 60872 T46 arg46, 60873 T47 arg47, 60874 T48 arg48, 60875 T49 arg49, 60876 T50 arg50, 60877 T51 arg51, 60878 T52 arg52, 60879 T53 arg53, 60880 T54 arg54, 60881 T55 arg55, 60882 T56 arg56, 60883 T57 arg57, 60884 T58 arg58, 60885 T59 arg59, 60886 T60 arg60, 60887 T61 arg61, 60888 T62 arg62, 60889 T63 arg63, 60890 T64 arg64, 60891 T65 arg65, 60892 T66 arg66, 60893 T67 arg67, 60894 T68 arg68, 60895 T69 arg69, 60896 T70 arg70, 60897 T71 arg71, 60898 T72 arg72, 60899 T73 arg73, 60900 T74 arg74, 60901 T75 arg75, 60902 T76 arg76, 60903 T77 arg77, 60904 T78 arg78, 60905 T79 arg79, 60906 T80 arg80, 60907 T81 arg81, 60908 T82 arg82, 60909 T83 arg83, 60910 T84 arg84, 60911 T85 arg85, 60912 T86 arg86, 60913 T87 arg87, 60914 T88 arg88, 60915 T89 arg89, 60916 T90 arg90, 60917 T91 arg91, 60918 T92 arg92, 60919 T93 arg93, 60920 T94 arg94, 60921 T95 arg95, 60922 T96 arg96, 60923 T97 arg97, 60924 T98 arg98, 60925 T99 arg99, 60926 T100 arg100, 60927 T101 arg101, 60928 T102 arg102, 60929 T103 arg103, 60930 T104 arg104, 60931 T105 arg105, 60932 T106 arg106, 60933 T107 arg107, 60934 T108 arg108) 60935 { 60936 return functor_( 60937 enqueueArgs, 60938 arg0, 60939 arg1, 60940 arg2, 60941 arg3, 60942 arg4, 60943 arg5, 60944 arg6, 60945 arg7, 60946 arg8, 60947 arg9, 60948 arg10, 60949 arg11, 60950 arg12, 60951 arg13, 60952 arg14, 60953 arg15, 60954 arg16, 60955 arg17, 60956 arg18, 60957 arg19, 60958 arg20, 60959 arg21, 60960 arg22, 60961 arg23, 60962 arg24, 60963 arg25, 60964 arg26, 60965 arg27, 60966 arg28, 60967 arg29, 60968 arg30, 60969 arg31, 60970 arg32, 60971 arg33, 60972 arg34, 60973 arg35, 60974 arg36, 60975 arg37, 60976 arg38, 60977 arg39, 60978 arg40, 60979 arg41, 60980 arg42, 60981 arg43, 60982 arg44, 60983 arg45, 60984 arg46, 60985 arg47, 60986 arg48, 60987 arg49, 60988 arg50, 60989 arg51, 60990 arg52, 60991 arg53, 60992 arg54, 60993 arg55, 60994 arg56, 60995 arg57, 60996 arg58, 60997 arg59, 60998 arg60, 60999 arg61, 61000 arg62, 61001 arg63, 61002 arg64, 61003 arg65, 61004 arg66, 61005 arg67, 61006 arg68, 61007 arg69, 61008 arg70, 61009 arg71, 61010 arg72, 61011 arg73, 61012 arg74, 61013 arg75, 61014 arg76, 61015 arg77, 61016 arg78, 61017 arg79, 61018 arg80, 61019 arg81, 61020 arg82, 61021 arg83, 61022 arg84, 61023 arg85, 61024 arg86, 61025 arg87, 61026 arg88, 61027 arg89, 61028 arg90, 61029 arg91, 61030 arg92, 61031 arg93, 61032 arg94, 61033 arg95, 61034 arg96, 61035 arg97, 61036 arg98, 61037 arg99, 61038 arg100, 61039 arg101, 61040 arg102, 61041 arg103, 61042 arg104, 61043 arg105, 61044 arg106, 61045 arg107, 61046 arg108); 61047 } 61048 61049 operator type_ () 61050 { 61051 return type_(*this); 61052 } 61053 61054 }; 61055 61056 template< 61057 typename T0, 61058 typename T1, 61059 typename T2, 61060 typename T3, 61061 typename T4, 61062 typename T5, 61063 typename T6, 61064 typename T7, 61065 typename T8, 61066 typename T9, 61067 typename T10, 61068 typename T11, 61069 typename T12, 61070 typename T13, 61071 typename T14, 61072 typename T15, 61073 typename T16, 61074 typename T17, 61075 typename T18, 61076 typename T19, 61077 typename T20, 61078 typename T21, 61079 typename T22, 61080 typename T23, 61081 typename T24, 61082 typename T25, 61083 typename T26, 61084 typename T27, 61085 typename T28, 61086 typename T29, 61087 typename T30, 61088 typename T31, 61089 typename T32, 61090 typename T33, 61091 typename T34, 61092 typename T35, 61093 typename T36, 61094 typename T37, 61095 typename T38, 61096 typename T39, 61097 typename T40, 61098 typename T41, 61099 typename T42, 61100 typename T43, 61101 typename T44, 61102 typename T45, 61103 typename T46, 61104 typename T47, 61105 typename T48, 61106 typename T49, 61107 typename T50, 61108 typename T51, 61109 typename T52, 61110 typename T53, 61111 typename T54, 61112 typename T55, 61113 typename T56, 61114 typename T57, 61115 typename T58, 61116 typename T59, 61117 typename T60, 61118 typename T61, 61119 typename T62, 61120 typename T63, 61121 typename T64, 61122 typename T65, 61123 typename T66, 61124 typename T67, 61125 typename T68, 61126 typename T69, 61127 typename T70, 61128 typename T71, 61129 typename T72, 61130 typename T73, 61131 typename T74, 61132 typename T75, 61133 typename T76, 61134 typename T77, 61135 typename T78, 61136 typename T79, 61137 typename T80, 61138 typename T81, 61139 typename T82, 61140 typename T83, 61141 typename T84, 61142 typename T85, 61143 typename T86, 61144 typename T87, 61145 typename T88, 61146 typename T89, 61147 typename T90, 61148 typename T91, 61149 typename T92, 61150 typename T93, 61151 typename T94, 61152 typename T95, 61153 typename T96, 61154 typename T97, 61155 typename T98, 61156 typename T99, 61157 typename T100, 61158 typename T101, 61159 typename T102, 61160 typename T103, 61161 typename T104, 61162 typename T105, 61163 typename T106, 61164 typename T107, 61165 typename T108, 61166 typename T109> 61167 struct functionImplementation_< 61168 T0, 61169 T1, 61170 T2, 61171 T3, 61172 T4, 61173 T5, 61174 T6, 61175 T7, 61176 T8, 61177 T9, 61178 T10, 61179 T11, 61180 T12, 61181 T13, 61182 T14, 61183 T15, 61184 T16, 61185 T17, 61186 T18, 61187 T19, 61188 T20, 61189 T21, 61190 T22, 61191 T23, 61192 T24, 61193 T25, 61194 T26, 61195 T27, 61196 T28, 61197 T29, 61198 T30, 61199 T31, 61200 T32, 61201 T33, 61202 T34, 61203 T35, 61204 T36, 61205 T37, 61206 T38, 61207 T39, 61208 T40, 61209 T41, 61210 T42, 61211 T43, 61212 T44, 61213 T45, 61214 T46, 61215 T47, 61216 T48, 61217 T49, 61218 T50, 61219 T51, 61220 T52, 61221 T53, 61222 T54, 61223 T55, 61224 T56, 61225 T57, 61226 T58, 61227 T59, 61228 T60, 61229 T61, 61230 T62, 61231 T63, 61232 T64, 61233 T65, 61234 T66, 61235 T67, 61236 T68, 61237 T69, 61238 T70, 61239 T71, 61240 T72, 61241 T73, 61242 T74, 61243 T75, 61244 T76, 61245 T77, 61246 T78, 61247 T79, 61248 T80, 61249 T81, 61250 T82, 61251 T83, 61252 T84, 61253 T85, 61254 T86, 61255 T87, 61256 T88, 61257 T89, 61258 T90, 61259 T91, 61260 T92, 61261 T93, 61262 T94, 61263 T95, 61264 T96, 61265 T97, 61266 T98, 61267 T99, 61268 T100, 61269 T101, 61270 T102, 61271 T103, 61272 T104, 61273 T105, 61274 T106, 61275 T107, 61276 T108, 61277 T109, 61278 NullType, 61279 NullType, 61280 NullType, 61281 NullType, 61282 NullType, 61283 NullType, 61284 NullType, 61285 NullType, 61286 NullType, 61287 NullType, 61288 NullType, 61289 NullType, 61290 NullType, 61291 NullType, 61292 NullType, 61293 NullType, 61294 NullType, 61295 NullType> 61296 { 61297 typedef detail::KernelFunctorGlobal< 61298 T0, 61299 T1, 61300 T2, 61301 T3, 61302 T4, 61303 T5, 61304 T6, 61305 T7, 61306 T8, 61307 T9, 61308 T10, 61309 T11, 61310 T12, 61311 T13, 61312 T14, 61313 T15, 61314 T16, 61315 T17, 61316 T18, 61317 T19, 61318 T20, 61319 T21, 61320 T22, 61321 T23, 61322 T24, 61323 T25, 61324 T26, 61325 T27, 61326 T28, 61327 T29, 61328 T30, 61329 T31, 61330 T32, 61331 T33, 61332 T34, 61333 T35, 61334 T36, 61335 T37, 61336 T38, 61337 T39, 61338 T40, 61339 T41, 61340 T42, 61341 T43, 61342 T44, 61343 T45, 61344 T46, 61345 T47, 61346 T48, 61347 T49, 61348 T50, 61349 T51, 61350 T52, 61351 T53, 61352 T54, 61353 T55, 61354 T56, 61355 T57, 61356 T58, 61357 T59, 61358 T60, 61359 T61, 61360 T62, 61361 T63, 61362 T64, 61363 T65, 61364 T66, 61365 T67, 61366 T68, 61367 T69, 61368 T70, 61369 T71, 61370 T72, 61371 T73, 61372 T74, 61373 T75, 61374 T76, 61375 T77, 61376 T78, 61377 T79, 61378 T80, 61379 T81, 61380 T82, 61381 T83, 61382 T84, 61383 T85, 61384 T86, 61385 T87, 61386 T88, 61387 T89, 61388 T90, 61389 T91, 61390 T92, 61391 T93, 61392 T94, 61393 T95, 61394 T96, 61395 T97, 61396 T98, 61397 T99, 61398 T100, 61399 T101, 61400 T102, 61401 T103, 61402 T104, 61403 T105, 61404 T106, 61405 T107, 61406 T108, 61407 T109, 61408 NullType, 61409 NullType, 61410 NullType, 61411 NullType, 61412 NullType, 61413 NullType, 61414 NullType, 61415 NullType, 61416 NullType, 61417 NullType, 61418 NullType, 61419 NullType, 61420 NullType, 61421 NullType, 61422 NullType, 61423 NullType, 61424 NullType, 61425 NullType> FunctorType; 61426 61427 FunctorType functor_; 61428 61429 functionImplementation_(const FunctorType &functor) : 61430 functor_(functor) 61431 { 61432 } 61433 61434 typedef std::tr1::function<Event ( 61435 const EnqueueArgs&, 61436 T0, 61437 T1, 61438 T2, 61439 T3, 61440 T4, 61441 T5, 61442 T6, 61443 T7, 61444 T8, 61445 T9, 61446 T10, 61447 T11, 61448 T12, 61449 T13, 61450 T14, 61451 T15, 61452 T16, 61453 T17, 61454 T18, 61455 T19, 61456 T20, 61457 T21, 61458 T22, 61459 T23, 61460 T24, 61461 T25, 61462 T26, 61463 T27, 61464 T28, 61465 T29, 61466 T30, 61467 T31, 61468 T32, 61469 T33, 61470 T34, 61471 T35, 61472 T36, 61473 T37, 61474 T38, 61475 T39, 61476 T40, 61477 T41, 61478 T42, 61479 T43, 61480 T44, 61481 T45, 61482 T46, 61483 T47, 61484 T48, 61485 T49, 61486 T50, 61487 T51, 61488 T52, 61489 T53, 61490 T54, 61491 T55, 61492 T56, 61493 T57, 61494 T58, 61495 T59, 61496 T60, 61497 T61, 61498 T62, 61499 T63, 61500 T64, 61501 T65, 61502 T66, 61503 T67, 61504 T68, 61505 T69, 61506 T70, 61507 T71, 61508 T72, 61509 T73, 61510 T74, 61511 T75, 61512 T76, 61513 T77, 61514 T78, 61515 T79, 61516 T80, 61517 T81, 61518 T82, 61519 T83, 61520 T84, 61521 T85, 61522 T86, 61523 T87, 61524 T88, 61525 T89, 61526 T90, 61527 T91, 61528 T92, 61529 T93, 61530 T94, 61531 T95, 61532 T96, 61533 T97, 61534 T98, 61535 T99, 61536 T100, 61537 T101, 61538 T102, 61539 T103, 61540 T104, 61541 T105, 61542 T106, 61543 T107, 61544 T108, 61545 T109)> type_; 61546 61547 Event operator()(const EnqueueArgs& enqueueArgs, 61548 T0 arg0, 61549 T1 arg1, 61550 T2 arg2, 61551 T3 arg3, 61552 T4 arg4, 61553 T5 arg5, 61554 T6 arg6, 61555 T7 arg7, 61556 T8 arg8, 61557 T9 arg9, 61558 T10 arg10, 61559 T11 arg11, 61560 T12 arg12, 61561 T13 arg13, 61562 T14 arg14, 61563 T15 arg15, 61564 T16 arg16, 61565 T17 arg17, 61566 T18 arg18, 61567 T19 arg19, 61568 T20 arg20, 61569 T21 arg21, 61570 T22 arg22, 61571 T23 arg23, 61572 T24 arg24, 61573 T25 arg25, 61574 T26 arg26, 61575 T27 arg27, 61576 T28 arg28, 61577 T29 arg29, 61578 T30 arg30, 61579 T31 arg31, 61580 T32 arg32, 61581 T33 arg33, 61582 T34 arg34, 61583 T35 arg35, 61584 T36 arg36, 61585 T37 arg37, 61586 T38 arg38, 61587 T39 arg39, 61588 T40 arg40, 61589 T41 arg41, 61590 T42 arg42, 61591 T43 arg43, 61592 T44 arg44, 61593 T45 arg45, 61594 T46 arg46, 61595 T47 arg47, 61596 T48 arg48, 61597 T49 arg49, 61598 T50 arg50, 61599 T51 arg51, 61600 T52 arg52, 61601 T53 arg53, 61602 T54 arg54, 61603 T55 arg55, 61604 T56 arg56, 61605 T57 arg57, 61606 T58 arg58, 61607 T59 arg59, 61608 T60 arg60, 61609 T61 arg61, 61610 T62 arg62, 61611 T63 arg63, 61612 T64 arg64, 61613 T65 arg65, 61614 T66 arg66, 61615 T67 arg67, 61616 T68 arg68, 61617 T69 arg69, 61618 T70 arg70, 61619 T71 arg71, 61620 T72 arg72, 61621 T73 arg73, 61622 T74 arg74, 61623 T75 arg75, 61624 T76 arg76, 61625 T77 arg77, 61626 T78 arg78, 61627 T79 arg79, 61628 T80 arg80, 61629 T81 arg81, 61630 T82 arg82, 61631 T83 arg83, 61632 T84 arg84, 61633 T85 arg85, 61634 T86 arg86, 61635 T87 arg87, 61636 T88 arg88, 61637 T89 arg89, 61638 T90 arg90, 61639 T91 arg91, 61640 T92 arg92, 61641 T93 arg93, 61642 T94 arg94, 61643 T95 arg95, 61644 T96 arg96, 61645 T97 arg97, 61646 T98 arg98, 61647 T99 arg99, 61648 T100 arg100, 61649 T101 arg101, 61650 T102 arg102, 61651 T103 arg103, 61652 T104 arg104, 61653 T105 arg105, 61654 T106 arg106, 61655 T107 arg107, 61656 T108 arg108, 61657 T109 arg109) 61658 { 61659 return functor_( 61660 enqueueArgs, 61661 arg0, 61662 arg1, 61663 arg2, 61664 arg3, 61665 arg4, 61666 arg5, 61667 arg6, 61668 arg7, 61669 arg8, 61670 arg9, 61671 arg10, 61672 arg11, 61673 arg12, 61674 arg13, 61675 arg14, 61676 arg15, 61677 arg16, 61678 arg17, 61679 arg18, 61680 arg19, 61681 arg20, 61682 arg21, 61683 arg22, 61684 arg23, 61685 arg24, 61686 arg25, 61687 arg26, 61688 arg27, 61689 arg28, 61690 arg29, 61691 arg30, 61692 arg31, 61693 arg32, 61694 arg33, 61695 arg34, 61696 arg35, 61697 arg36, 61698 arg37, 61699 arg38, 61700 arg39, 61701 arg40, 61702 arg41, 61703 arg42, 61704 arg43, 61705 arg44, 61706 arg45, 61707 arg46, 61708 arg47, 61709 arg48, 61710 arg49, 61711 arg50, 61712 arg51, 61713 arg52, 61714 arg53, 61715 arg54, 61716 arg55, 61717 arg56, 61718 arg57, 61719 arg58, 61720 arg59, 61721 arg60, 61722 arg61, 61723 arg62, 61724 arg63, 61725 arg64, 61726 arg65, 61727 arg66, 61728 arg67, 61729 arg68, 61730 arg69, 61731 arg70, 61732 arg71, 61733 arg72, 61734 arg73, 61735 arg74, 61736 arg75, 61737 arg76, 61738 arg77, 61739 arg78, 61740 arg79, 61741 arg80, 61742 arg81, 61743 arg82, 61744 arg83, 61745 arg84, 61746 arg85, 61747 arg86, 61748 arg87, 61749 arg88, 61750 arg89, 61751 arg90, 61752 arg91, 61753 arg92, 61754 arg93, 61755 arg94, 61756 arg95, 61757 arg96, 61758 arg97, 61759 arg98, 61760 arg99, 61761 arg100, 61762 arg101, 61763 arg102, 61764 arg103, 61765 arg104, 61766 arg105, 61767 arg106, 61768 arg107, 61769 arg108, 61770 arg109); 61771 } 61772 61773 operator type_ () 61774 { 61775 return type_(*this); 61776 } 61777 61778 }; 61779 61780 template< 61781 typename T0, 61782 typename T1, 61783 typename T2, 61784 typename T3, 61785 typename T4, 61786 typename T5, 61787 typename T6, 61788 typename T7, 61789 typename T8, 61790 typename T9, 61791 typename T10, 61792 typename T11, 61793 typename T12, 61794 typename T13, 61795 typename T14, 61796 typename T15, 61797 typename T16, 61798 typename T17, 61799 typename T18, 61800 typename T19, 61801 typename T20, 61802 typename T21, 61803 typename T22, 61804 typename T23, 61805 typename T24, 61806 typename T25, 61807 typename T26, 61808 typename T27, 61809 typename T28, 61810 typename T29, 61811 typename T30, 61812 typename T31, 61813 typename T32, 61814 typename T33, 61815 typename T34, 61816 typename T35, 61817 typename T36, 61818 typename T37, 61819 typename T38, 61820 typename T39, 61821 typename T40, 61822 typename T41, 61823 typename T42, 61824 typename T43, 61825 typename T44, 61826 typename T45, 61827 typename T46, 61828 typename T47, 61829 typename T48, 61830 typename T49, 61831 typename T50, 61832 typename T51, 61833 typename T52, 61834 typename T53, 61835 typename T54, 61836 typename T55, 61837 typename T56, 61838 typename T57, 61839 typename T58, 61840 typename T59, 61841 typename T60, 61842 typename T61, 61843 typename T62, 61844 typename T63, 61845 typename T64, 61846 typename T65, 61847 typename T66, 61848 typename T67, 61849 typename T68, 61850 typename T69, 61851 typename T70, 61852 typename T71, 61853 typename T72, 61854 typename T73, 61855 typename T74, 61856 typename T75, 61857 typename T76, 61858 typename T77, 61859 typename T78, 61860 typename T79, 61861 typename T80, 61862 typename T81, 61863 typename T82, 61864 typename T83, 61865 typename T84, 61866 typename T85, 61867 typename T86, 61868 typename T87, 61869 typename T88, 61870 typename T89, 61871 typename T90, 61872 typename T91, 61873 typename T92, 61874 typename T93, 61875 typename T94, 61876 typename T95, 61877 typename T96, 61878 typename T97, 61879 typename T98, 61880 typename T99, 61881 typename T100, 61882 typename T101, 61883 typename T102, 61884 typename T103, 61885 typename T104, 61886 typename T105, 61887 typename T106, 61888 typename T107, 61889 typename T108, 61890 typename T109, 61891 typename T110> 61892 struct functionImplementation_< 61893 T0, 61894 T1, 61895 T2, 61896 T3, 61897 T4, 61898 T5, 61899 T6, 61900 T7, 61901 T8, 61902 T9, 61903 T10, 61904 T11, 61905 T12, 61906 T13, 61907 T14, 61908 T15, 61909 T16, 61910 T17, 61911 T18, 61912 T19, 61913 T20, 61914 T21, 61915 T22, 61916 T23, 61917 T24, 61918 T25, 61919 T26, 61920 T27, 61921 T28, 61922 T29, 61923 T30, 61924 T31, 61925 T32, 61926 T33, 61927 T34, 61928 T35, 61929 T36, 61930 T37, 61931 T38, 61932 T39, 61933 T40, 61934 T41, 61935 T42, 61936 T43, 61937 T44, 61938 T45, 61939 T46, 61940 T47, 61941 T48, 61942 T49, 61943 T50, 61944 T51, 61945 T52, 61946 T53, 61947 T54, 61948 T55, 61949 T56, 61950 T57, 61951 T58, 61952 T59, 61953 T60, 61954 T61, 61955 T62, 61956 T63, 61957 T64, 61958 T65, 61959 T66, 61960 T67, 61961 T68, 61962 T69, 61963 T70, 61964 T71, 61965 T72, 61966 T73, 61967 T74, 61968 T75, 61969 T76, 61970 T77, 61971 T78, 61972 T79, 61973 T80, 61974 T81, 61975 T82, 61976 T83, 61977 T84, 61978 T85, 61979 T86, 61980 T87, 61981 T88, 61982 T89, 61983 T90, 61984 T91, 61985 T92, 61986 T93, 61987 T94, 61988 T95, 61989 T96, 61990 T97, 61991 T98, 61992 T99, 61993 T100, 61994 T101, 61995 T102, 61996 T103, 61997 T104, 61998 T105, 61999 T106, 62000 T107, 62001 T108, 62002 T109, 62003 T110, 62004 NullType, 62005 NullType, 62006 NullType, 62007 NullType, 62008 NullType, 62009 NullType, 62010 NullType, 62011 NullType, 62012 NullType, 62013 NullType, 62014 NullType, 62015 NullType, 62016 NullType, 62017 NullType, 62018 NullType, 62019 NullType, 62020 NullType> 62021 { 62022 typedef detail::KernelFunctorGlobal< 62023 T0, 62024 T1, 62025 T2, 62026 T3, 62027 T4, 62028 T5, 62029 T6, 62030 T7, 62031 T8, 62032 T9, 62033 T10, 62034 T11, 62035 T12, 62036 T13, 62037 T14, 62038 T15, 62039 T16, 62040 T17, 62041 T18, 62042 T19, 62043 T20, 62044 T21, 62045 T22, 62046 T23, 62047 T24, 62048 T25, 62049 T26, 62050 T27, 62051 T28, 62052 T29, 62053 T30, 62054 T31, 62055 T32, 62056 T33, 62057 T34, 62058 T35, 62059 T36, 62060 T37, 62061 T38, 62062 T39, 62063 T40, 62064 T41, 62065 T42, 62066 T43, 62067 T44, 62068 T45, 62069 T46, 62070 T47, 62071 T48, 62072 T49, 62073 T50, 62074 T51, 62075 T52, 62076 T53, 62077 T54, 62078 T55, 62079 T56, 62080 T57, 62081 T58, 62082 T59, 62083 T60, 62084 T61, 62085 T62, 62086 T63, 62087 T64, 62088 T65, 62089 T66, 62090 T67, 62091 T68, 62092 T69, 62093 T70, 62094 T71, 62095 T72, 62096 T73, 62097 T74, 62098 T75, 62099 T76, 62100 T77, 62101 T78, 62102 T79, 62103 T80, 62104 T81, 62105 T82, 62106 T83, 62107 T84, 62108 T85, 62109 T86, 62110 T87, 62111 T88, 62112 T89, 62113 T90, 62114 T91, 62115 T92, 62116 T93, 62117 T94, 62118 T95, 62119 T96, 62120 T97, 62121 T98, 62122 T99, 62123 T100, 62124 T101, 62125 T102, 62126 T103, 62127 T104, 62128 T105, 62129 T106, 62130 T107, 62131 T108, 62132 T109, 62133 T110, 62134 NullType, 62135 NullType, 62136 NullType, 62137 NullType, 62138 NullType, 62139 NullType, 62140 NullType, 62141 NullType, 62142 NullType, 62143 NullType, 62144 NullType, 62145 NullType, 62146 NullType, 62147 NullType, 62148 NullType, 62149 NullType, 62150 NullType> FunctorType; 62151 62152 FunctorType functor_; 62153 62154 functionImplementation_(const FunctorType &functor) : 62155 functor_(functor) 62156 { 62157 } 62158 62159 typedef std::tr1::function<Event ( 62160 const EnqueueArgs&, 62161 T0, 62162 T1, 62163 T2, 62164 T3, 62165 T4, 62166 T5, 62167 T6, 62168 T7, 62169 T8, 62170 T9, 62171 T10, 62172 T11, 62173 T12, 62174 T13, 62175 T14, 62176 T15, 62177 T16, 62178 T17, 62179 T18, 62180 T19, 62181 T20, 62182 T21, 62183 T22, 62184 T23, 62185 T24, 62186 T25, 62187 T26, 62188 T27, 62189 T28, 62190 T29, 62191 T30, 62192 T31, 62193 T32, 62194 T33, 62195 T34, 62196 T35, 62197 T36, 62198 T37, 62199 T38, 62200 T39, 62201 T40, 62202 T41, 62203 T42, 62204 T43, 62205 T44, 62206 T45, 62207 T46, 62208 T47, 62209 T48, 62210 T49, 62211 T50, 62212 T51, 62213 T52, 62214 T53, 62215 T54, 62216 T55, 62217 T56, 62218 T57, 62219 T58, 62220 T59, 62221 T60, 62222 T61, 62223 T62, 62224 T63, 62225 T64, 62226 T65, 62227 T66, 62228 T67, 62229 T68, 62230 T69, 62231 T70, 62232 T71, 62233 T72, 62234 T73, 62235 T74, 62236 T75, 62237 T76, 62238 T77, 62239 T78, 62240 T79, 62241 T80, 62242 T81, 62243 T82, 62244 T83, 62245 T84, 62246 T85, 62247 T86, 62248 T87, 62249 T88, 62250 T89, 62251 T90, 62252 T91, 62253 T92, 62254 T93, 62255 T94, 62256 T95, 62257 T96, 62258 T97, 62259 T98, 62260 T99, 62261 T100, 62262 T101, 62263 T102, 62264 T103, 62265 T104, 62266 T105, 62267 T106, 62268 T107, 62269 T108, 62270 T109, 62271 T110)> type_; 62272 62273 Event operator()(const EnqueueArgs& enqueueArgs, 62274 T0 arg0, 62275 T1 arg1, 62276 T2 arg2, 62277 T3 arg3, 62278 T4 arg4, 62279 T5 arg5, 62280 T6 arg6, 62281 T7 arg7, 62282 T8 arg8, 62283 T9 arg9, 62284 T10 arg10, 62285 T11 arg11, 62286 T12 arg12, 62287 T13 arg13, 62288 T14 arg14, 62289 T15 arg15, 62290 T16 arg16, 62291 T17 arg17, 62292 T18 arg18, 62293 T19 arg19, 62294 T20 arg20, 62295 T21 arg21, 62296 T22 arg22, 62297 T23 arg23, 62298 T24 arg24, 62299 T25 arg25, 62300 T26 arg26, 62301 T27 arg27, 62302 T28 arg28, 62303 T29 arg29, 62304 T30 arg30, 62305 T31 arg31, 62306 T32 arg32, 62307 T33 arg33, 62308 T34 arg34, 62309 T35 arg35, 62310 T36 arg36, 62311 T37 arg37, 62312 T38 arg38, 62313 T39 arg39, 62314 T40 arg40, 62315 T41 arg41, 62316 T42 arg42, 62317 T43 arg43, 62318 T44 arg44, 62319 T45 arg45, 62320 T46 arg46, 62321 T47 arg47, 62322 T48 arg48, 62323 T49 arg49, 62324 T50 arg50, 62325 T51 arg51, 62326 T52 arg52, 62327 T53 arg53, 62328 T54 arg54, 62329 T55 arg55, 62330 T56 arg56, 62331 T57 arg57, 62332 T58 arg58, 62333 T59 arg59, 62334 T60 arg60, 62335 T61 arg61, 62336 T62 arg62, 62337 T63 arg63, 62338 T64 arg64, 62339 T65 arg65, 62340 T66 arg66, 62341 T67 arg67, 62342 T68 arg68, 62343 T69 arg69, 62344 T70 arg70, 62345 T71 arg71, 62346 T72 arg72, 62347 T73 arg73, 62348 T74 arg74, 62349 T75 arg75, 62350 T76 arg76, 62351 T77 arg77, 62352 T78 arg78, 62353 T79 arg79, 62354 T80 arg80, 62355 T81 arg81, 62356 T82 arg82, 62357 T83 arg83, 62358 T84 arg84, 62359 T85 arg85, 62360 T86 arg86, 62361 T87 arg87, 62362 T88 arg88, 62363 T89 arg89, 62364 T90 arg90, 62365 T91 arg91, 62366 T92 arg92, 62367 T93 arg93, 62368 T94 arg94, 62369 T95 arg95, 62370 T96 arg96, 62371 T97 arg97, 62372 T98 arg98, 62373 T99 arg99, 62374 T100 arg100, 62375 T101 arg101, 62376 T102 arg102, 62377 T103 arg103, 62378 T104 arg104, 62379 T105 arg105, 62380 T106 arg106, 62381 T107 arg107, 62382 T108 arg108, 62383 T109 arg109, 62384 T110 arg110) 62385 { 62386 return functor_( 62387 enqueueArgs, 62388 arg0, 62389 arg1, 62390 arg2, 62391 arg3, 62392 arg4, 62393 arg5, 62394 arg6, 62395 arg7, 62396 arg8, 62397 arg9, 62398 arg10, 62399 arg11, 62400 arg12, 62401 arg13, 62402 arg14, 62403 arg15, 62404 arg16, 62405 arg17, 62406 arg18, 62407 arg19, 62408 arg20, 62409 arg21, 62410 arg22, 62411 arg23, 62412 arg24, 62413 arg25, 62414 arg26, 62415 arg27, 62416 arg28, 62417 arg29, 62418 arg30, 62419 arg31, 62420 arg32, 62421 arg33, 62422 arg34, 62423 arg35, 62424 arg36, 62425 arg37, 62426 arg38, 62427 arg39, 62428 arg40, 62429 arg41, 62430 arg42, 62431 arg43, 62432 arg44, 62433 arg45, 62434 arg46, 62435 arg47, 62436 arg48, 62437 arg49, 62438 arg50, 62439 arg51, 62440 arg52, 62441 arg53, 62442 arg54, 62443 arg55, 62444 arg56, 62445 arg57, 62446 arg58, 62447 arg59, 62448 arg60, 62449 arg61, 62450 arg62, 62451 arg63, 62452 arg64, 62453 arg65, 62454 arg66, 62455 arg67, 62456 arg68, 62457 arg69, 62458 arg70, 62459 arg71, 62460 arg72, 62461 arg73, 62462 arg74, 62463 arg75, 62464 arg76, 62465 arg77, 62466 arg78, 62467 arg79, 62468 arg80, 62469 arg81, 62470 arg82, 62471 arg83, 62472 arg84, 62473 arg85, 62474 arg86, 62475 arg87, 62476 arg88, 62477 arg89, 62478 arg90, 62479 arg91, 62480 arg92, 62481 arg93, 62482 arg94, 62483 arg95, 62484 arg96, 62485 arg97, 62486 arg98, 62487 arg99, 62488 arg100, 62489 arg101, 62490 arg102, 62491 arg103, 62492 arg104, 62493 arg105, 62494 arg106, 62495 arg107, 62496 arg108, 62497 arg109, 62498 arg110); 62499 } 62500 62501 operator type_ () 62502 { 62503 return type_(*this); 62504 } 62505 62506 }; 62507 62508 template< 62509 typename T0, 62510 typename T1, 62511 typename T2, 62512 typename T3, 62513 typename T4, 62514 typename T5, 62515 typename T6, 62516 typename T7, 62517 typename T8, 62518 typename T9, 62519 typename T10, 62520 typename T11, 62521 typename T12, 62522 typename T13, 62523 typename T14, 62524 typename T15, 62525 typename T16, 62526 typename T17, 62527 typename T18, 62528 typename T19, 62529 typename T20, 62530 typename T21, 62531 typename T22, 62532 typename T23, 62533 typename T24, 62534 typename T25, 62535 typename T26, 62536 typename T27, 62537 typename T28, 62538 typename T29, 62539 typename T30, 62540 typename T31, 62541 typename T32, 62542 typename T33, 62543 typename T34, 62544 typename T35, 62545 typename T36, 62546 typename T37, 62547 typename T38, 62548 typename T39, 62549 typename T40, 62550 typename T41, 62551 typename T42, 62552 typename T43, 62553 typename T44, 62554 typename T45, 62555 typename T46, 62556 typename T47, 62557 typename T48, 62558 typename T49, 62559 typename T50, 62560 typename T51, 62561 typename T52, 62562 typename T53, 62563 typename T54, 62564 typename T55, 62565 typename T56, 62566 typename T57, 62567 typename T58, 62568 typename T59, 62569 typename T60, 62570 typename T61, 62571 typename T62, 62572 typename T63, 62573 typename T64, 62574 typename T65, 62575 typename T66, 62576 typename T67, 62577 typename T68, 62578 typename T69, 62579 typename T70, 62580 typename T71, 62581 typename T72, 62582 typename T73, 62583 typename T74, 62584 typename T75, 62585 typename T76, 62586 typename T77, 62587 typename T78, 62588 typename T79, 62589 typename T80, 62590 typename T81, 62591 typename T82, 62592 typename T83, 62593 typename T84, 62594 typename T85, 62595 typename T86, 62596 typename T87, 62597 typename T88, 62598 typename T89, 62599 typename T90, 62600 typename T91, 62601 typename T92, 62602 typename T93, 62603 typename T94, 62604 typename T95, 62605 typename T96, 62606 typename T97, 62607 typename T98, 62608 typename T99, 62609 typename T100, 62610 typename T101, 62611 typename T102, 62612 typename T103, 62613 typename T104, 62614 typename T105, 62615 typename T106, 62616 typename T107, 62617 typename T108, 62618 typename T109, 62619 typename T110, 62620 typename T111> 62621 struct functionImplementation_< 62622 T0, 62623 T1, 62624 T2, 62625 T3, 62626 T4, 62627 T5, 62628 T6, 62629 T7, 62630 T8, 62631 T9, 62632 T10, 62633 T11, 62634 T12, 62635 T13, 62636 T14, 62637 T15, 62638 T16, 62639 T17, 62640 T18, 62641 T19, 62642 T20, 62643 T21, 62644 T22, 62645 T23, 62646 T24, 62647 T25, 62648 T26, 62649 T27, 62650 T28, 62651 T29, 62652 T30, 62653 T31, 62654 T32, 62655 T33, 62656 T34, 62657 T35, 62658 T36, 62659 T37, 62660 T38, 62661 T39, 62662 T40, 62663 T41, 62664 T42, 62665 T43, 62666 T44, 62667 T45, 62668 T46, 62669 T47, 62670 T48, 62671 T49, 62672 T50, 62673 T51, 62674 T52, 62675 T53, 62676 T54, 62677 T55, 62678 T56, 62679 T57, 62680 T58, 62681 T59, 62682 T60, 62683 T61, 62684 T62, 62685 T63, 62686 T64, 62687 T65, 62688 T66, 62689 T67, 62690 T68, 62691 T69, 62692 T70, 62693 T71, 62694 T72, 62695 T73, 62696 T74, 62697 T75, 62698 T76, 62699 T77, 62700 T78, 62701 T79, 62702 T80, 62703 T81, 62704 T82, 62705 T83, 62706 T84, 62707 T85, 62708 T86, 62709 T87, 62710 T88, 62711 T89, 62712 T90, 62713 T91, 62714 T92, 62715 T93, 62716 T94, 62717 T95, 62718 T96, 62719 T97, 62720 T98, 62721 T99, 62722 T100, 62723 T101, 62724 T102, 62725 T103, 62726 T104, 62727 T105, 62728 T106, 62729 T107, 62730 T108, 62731 T109, 62732 T110, 62733 T111, 62734 NullType, 62735 NullType, 62736 NullType, 62737 NullType, 62738 NullType, 62739 NullType, 62740 NullType, 62741 NullType, 62742 NullType, 62743 NullType, 62744 NullType, 62745 NullType, 62746 NullType, 62747 NullType, 62748 NullType, 62749 NullType> 62750 { 62751 typedef detail::KernelFunctorGlobal< 62752 T0, 62753 T1, 62754 T2, 62755 T3, 62756 T4, 62757 T5, 62758 T6, 62759 T7, 62760 T8, 62761 T9, 62762 T10, 62763 T11, 62764 T12, 62765 T13, 62766 T14, 62767 T15, 62768 T16, 62769 T17, 62770 T18, 62771 T19, 62772 T20, 62773 T21, 62774 T22, 62775 T23, 62776 T24, 62777 T25, 62778 T26, 62779 T27, 62780 T28, 62781 T29, 62782 T30, 62783 T31, 62784 T32, 62785 T33, 62786 T34, 62787 T35, 62788 T36, 62789 T37, 62790 T38, 62791 T39, 62792 T40, 62793 T41, 62794 T42, 62795 T43, 62796 T44, 62797 T45, 62798 T46, 62799 T47, 62800 T48, 62801 T49, 62802 T50, 62803 T51, 62804 T52, 62805 T53, 62806 T54, 62807 T55, 62808 T56, 62809 T57, 62810 T58, 62811 T59, 62812 T60, 62813 T61, 62814 T62, 62815 T63, 62816 T64, 62817 T65, 62818 T66, 62819 T67, 62820 T68, 62821 T69, 62822 T70, 62823 T71, 62824 T72, 62825 T73, 62826 T74, 62827 T75, 62828 T76, 62829 T77, 62830 T78, 62831 T79, 62832 T80, 62833 T81, 62834 T82, 62835 T83, 62836 T84, 62837 T85, 62838 T86, 62839 T87, 62840 T88, 62841 T89, 62842 T90, 62843 T91, 62844 T92, 62845 T93, 62846 T94, 62847 T95, 62848 T96, 62849 T97, 62850 T98, 62851 T99, 62852 T100, 62853 T101, 62854 T102, 62855 T103, 62856 T104, 62857 T105, 62858 T106, 62859 T107, 62860 T108, 62861 T109, 62862 T110, 62863 T111, 62864 NullType, 62865 NullType, 62866 NullType, 62867 NullType, 62868 NullType, 62869 NullType, 62870 NullType, 62871 NullType, 62872 NullType, 62873 NullType, 62874 NullType, 62875 NullType, 62876 NullType, 62877 NullType, 62878 NullType, 62879 NullType> FunctorType; 62880 62881 FunctorType functor_; 62882 62883 functionImplementation_(const FunctorType &functor) : 62884 functor_(functor) 62885 { 62886 } 62887 62888 typedef std::tr1::function<Event ( 62889 const EnqueueArgs&, 62890 T0, 62891 T1, 62892 T2, 62893 T3, 62894 T4, 62895 T5, 62896 T6, 62897 T7, 62898 T8, 62899 T9, 62900 T10, 62901 T11, 62902 T12, 62903 T13, 62904 T14, 62905 T15, 62906 T16, 62907 T17, 62908 T18, 62909 T19, 62910 T20, 62911 T21, 62912 T22, 62913 T23, 62914 T24, 62915 T25, 62916 T26, 62917 T27, 62918 T28, 62919 T29, 62920 T30, 62921 T31, 62922 T32, 62923 T33, 62924 T34, 62925 T35, 62926 T36, 62927 T37, 62928 T38, 62929 T39, 62930 T40, 62931 T41, 62932 T42, 62933 T43, 62934 T44, 62935 T45, 62936 T46, 62937 T47, 62938 T48, 62939 T49, 62940 T50, 62941 T51, 62942 T52, 62943 T53, 62944 T54, 62945 T55, 62946 T56, 62947 T57, 62948 T58, 62949 T59, 62950 T60, 62951 T61, 62952 T62, 62953 T63, 62954 T64, 62955 T65, 62956 T66, 62957 T67, 62958 T68, 62959 T69, 62960 T70, 62961 T71, 62962 T72, 62963 T73, 62964 T74, 62965 T75, 62966 T76, 62967 T77, 62968 T78, 62969 T79, 62970 T80, 62971 T81, 62972 T82, 62973 T83, 62974 T84, 62975 T85, 62976 T86, 62977 T87, 62978 T88, 62979 T89, 62980 T90, 62981 T91, 62982 T92, 62983 T93, 62984 T94, 62985 T95, 62986 T96, 62987 T97, 62988 T98, 62989 T99, 62990 T100, 62991 T101, 62992 T102, 62993 T103, 62994 T104, 62995 T105, 62996 T106, 62997 T107, 62998 T108, 62999 T109, 63000 T110, 63001 T111)> type_; 63002 63003 Event operator()(const EnqueueArgs& enqueueArgs, 63004 T0 arg0, 63005 T1 arg1, 63006 T2 arg2, 63007 T3 arg3, 63008 T4 arg4, 63009 T5 arg5, 63010 T6 arg6, 63011 T7 arg7, 63012 T8 arg8, 63013 T9 arg9, 63014 T10 arg10, 63015 T11 arg11, 63016 T12 arg12, 63017 T13 arg13, 63018 T14 arg14, 63019 T15 arg15, 63020 T16 arg16, 63021 T17 arg17, 63022 T18 arg18, 63023 T19 arg19, 63024 T20 arg20, 63025 T21 arg21, 63026 T22 arg22, 63027 T23 arg23, 63028 T24 arg24, 63029 T25 arg25, 63030 T26 arg26, 63031 T27 arg27, 63032 T28 arg28, 63033 T29 arg29, 63034 T30 arg30, 63035 T31 arg31, 63036 T32 arg32, 63037 T33 arg33, 63038 T34 arg34, 63039 T35 arg35, 63040 T36 arg36, 63041 T37 arg37, 63042 T38 arg38, 63043 T39 arg39, 63044 T40 arg40, 63045 T41 arg41, 63046 T42 arg42, 63047 T43 arg43, 63048 T44 arg44, 63049 T45 arg45, 63050 T46 arg46, 63051 T47 arg47, 63052 T48 arg48, 63053 T49 arg49, 63054 T50 arg50, 63055 T51 arg51, 63056 T52 arg52, 63057 T53 arg53, 63058 T54 arg54, 63059 T55 arg55, 63060 T56 arg56, 63061 T57 arg57, 63062 T58 arg58, 63063 T59 arg59, 63064 T60 arg60, 63065 T61 arg61, 63066 T62 arg62, 63067 T63 arg63, 63068 T64 arg64, 63069 T65 arg65, 63070 T66 arg66, 63071 T67 arg67, 63072 T68 arg68, 63073 T69 arg69, 63074 T70 arg70, 63075 T71 arg71, 63076 T72 arg72, 63077 T73 arg73, 63078 T74 arg74, 63079 T75 arg75, 63080 T76 arg76, 63081 T77 arg77, 63082 T78 arg78, 63083 T79 arg79, 63084 T80 arg80, 63085 T81 arg81, 63086 T82 arg82, 63087 T83 arg83, 63088 T84 arg84, 63089 T85 arg85, 63090 T86 arg86, 63091 T87 arg87, 63092 T88 arg88, 63093 T89 arg89, 63094 T90 arg90, 63095 T91 arg91, 63096 T92 arg92, 63097 T93 arg93, 63098 T94 arg94, 63099 T95 arg95, 63100 T96 arg96, 63101 T97 arg97, 63102 T98 arg98, 63103 T99 arg99, 63104 T100 arg100, 63105 T101 arg101, 63106 T102 arg102, 63107 T103 arg103, 63108 T104 arg104, 63109 T105 arg105, 63110 T106 arg106, 63111 T107 arg107, 63112 T108 arg108, 63113 T109 arg109, 63114 T110 arg110, 63115 T111 arg111) 63116 { 63117 return functor_( 63118 enqueueArgs, 63119 arg0, 63120 arg1, 63121 arg2, 63122 arg3, 63123 arg4, 63124 arg5, 63125 arg6, 63126 arg7, 63127 arg8, 63128 arg9, 63129 arg10, 63130 arg11, 63131 arg12, 63132 arg13, 63133 arg14, 63134 arg15, 63135 arg16, 63136 arg17, 63137 arg18, 63138 arg19, 63139 arg20, 63140 arg21, 63141 arg22, 63142 arg23, 63143 arg24, 63144 arg25, 63145 arg26, 63146 arg27, 63147 arg28, 63148 arg29, 63149 arg30, 63150 arg31, 63151 arg32, 63152 arg33, 63153 arg34, 63154 arg35, 63155 arg36, 63156 arg37, 63157 arg38, 63158 arg39, 63159 arg40, 63160 arg41, 63161 arg42, 63162 arg43, 63163 arg44, 63164 arg45, 63165 arg46, 63166 arg47, 63167 arg48, 63168 arg49, 63169 arg50, 63170 arg51, 63171 arg52, 63172 arg53, 63173 arg54, 63174 arg55, 63175 arg56, 63176 arg57, 63177 arg58, 63178 arg59, 63179 arg60, 63180 arg61, 63181 arg62, 63182 arg63, 63183 arg64, 63184 arg65, 63185 arg66, 63186 arg67, 63187 arg68, 63188 arg69, 63189 arg70, 63190 arg71, 63191 arg72, 63192 arg73, 63193 arg74, 63194 arg75, 63195 arg76, 63196 arg77, 63197 arg78, 63198 arg79, 63199 arg80, 63200 arg81, 63201 arg82, 63202 arg83, 63203 arg84, 63204 arg85, 63205 arg86, 63206 arg87, 63207 arg88, 63208 arg89, 63209 arg90, 63210 arg91, 63211 arg92, 63212 arg93, 63213 arg94, 63214 arg95, 63215 arg96, 63216 arg97, 63217 arg98, 63218 arg99, 63219 arg100, 63220 arg101, 63221 arg102, 63222 arg103, 63223 arg104, 63224 arg105, 63225 arg106, 63226 arg107, 63227 arg108, 63228 arg109, 63229 arg110, 63230 arg111); 63231 } 63232 63233 operator type_ () 63234 { 63235 return type_(*this); 63236 } 63237 63238 }; 63239 63240 template< 63241 typename T0, 63242 typename T1, 63243 typename T2, 63244 typename T3, 63245 typename T4, 63246 typename T5, 63247 typename T6, 63248 typename T7, 63249 typename T8, 63250 typename T9, 63251 typename T10, 63252 typename T11, 63253 typename T12, 63254 typename T13, 63255 typename T14, 63256 typename T15, 63257 typename T16, 63258 typename T17, 63259 typename T18, 63260 typename T19, 63261 typename T20, 63262 typename T21, 63263 typename T22, 63264 typename T23, 63265 typename T24, 63266 typename T25, 63267 typename T26, 63268 typename T27, 63269 typename T28, 63270 typename T29, 63271 typename T30, 63272 typename T31, 63273 typename T32, 63274 typename T33, 63275 typename T34, 63276 typename T35, 63277 typename T36, 63278 typename T37, 63279 typename T38, 63280 typename T39, 63281 typename T40, 63282 typename T41, 63283 typename T42, 63284 typename T43, 63285 typename T44, 63286 typename T45, 63287 typename T46, 63288 typename T47, 63289 typename T48, 63290 typename T49, 63291 typename T50, 63292 typename T51, 63293 typename T52, 63294 typename T53, 63295 typename T54, 63296 typename T55, 63297 typename T56, 63298 typename T57, 63299 typename T58, 63300 typename T59, 63301 typename T60, 63302 typename T61, 63303 typename T62, 63304 typename T63, 63305 typename T64, 63306 typename T65, 63307 typename T66, 63308 typename T67, 63309 typename T68, 63310 typename T69, 63311 typename T70, 63312 typename T71, 63313 typename T72, 63314 typename T73, 63315 typename T74, 63316 typename T75, 63317 typename T76, 63318 typename T77, 63319 typename T78, 63320 typename T79, 63321 typename T80, 63322 typename T81, 63323 typename T82, 63324 typename T83, 63325 typename T84, 63326 typename T85, 63327 typename T86, 63328 typename T87, 63329 typename T88, 63330 typename T89, 63331 typename T90, 63332 typename T91, 63333 typename T92, 63334 typename T93, 63335 typename T94, 63336 typename T95, 63337 typename T96, 63338 typename T97, 63339 typename T98, 63340 typename T99, 63341 typename T100, 63342 typename T101, 63343 typename T102, 63344 typename T103, 63345 typename T104, 63346 typename T105, 63347 typename T106, 63348 typename T107, 63349 typename T108, 63350 typename T109, 63351 typename T110, 63352 typename T111, 63353 typename T112> 63354 struct functionImplementation_< 63355 T0, 63356 T1, 63357 T2, 63358 T3, 63359 T4, 63360 T5, 63361 T6, 63362 T7, 63363 T8, 63364 T9, 63365 T10, 63366 T11, 63367 T12, 63368 T13, 63369 T14, 63370 T15, 63371 T16, 63372 T17, 63373 T18, 63374 T19, 63375 T20, 63376 T21, 63377 T22, 63378 T23, 63379 T24, 63380 T25, 63381 T26, 63382 T27, 63383 T28, 63384 T29, 63385 T30, 63386 T31, 63387 T32, 63388 T33, 63389 T34, 63390 T35, 63391 T36, 63392 T37, 63393 T38, 63394 T39, 63395 T40, 63396 T41, 63397 T42, 63398 T43, 63399 T44, 63400 T45, 63401 T46, 63402 T47, 63403 T48, 63404 T49, 63405 T50, 63406 T51, 63407 T52, 63408 T53, 63409 T54, 63410 T55, 63411 T56, 63412 T57, 63413 T58, 63414 T59, 63415 T60, 63416 T61, 63417 T62, 63418 T63, 63419 T64, 63420 T65, 63421 T66, 63422 T67, 63423 T68, 63424 T69, 63425 T70, 63426 T71, 63427 T72, 63428 T73, 63429 T74, 63430 T75, 63431 T76, 63432 T77, 63433 T78, 63434 T79, 63435 T80, 63436 T81, 63437 T82, 63438 T83, 63439 T84, 63440 T85, 63441 T86, 63442 T87, 63443 T88, 63444 T89, 63445 T90, 63446 T91, 63447 T92, 63448 T93, 63449 T94, 63450 T95, 63451 T96, 63452 T97, 63453 T98, 63454 T99, 63455 T100, 63456 T101, 63457 T102, 63458 T103, 63459 T104, 63460 T105, 63461 T106, 63462 T107, 63463 T108, 63464 T109, 63465 T110, 63466 T111, 63467 T112, 63468 NullType, 63469 NullType, 63470 NullType, 63471 NullType, 63472 NullType, 63473 NullType, 63474 NullType, 63475 NullType, 63476 NullType, 63477 NullType, 63478 NullType, 63479 NullType, 63480 NullType, 63481 NullType, 63482 NullType> 63483 { 63484 typedef detail::KernelFunctorGlobal< 63485 T0, 63486 T1, 63487 T2, 63488 T3, 63489 T4, 63490 T5, 63491 T6, 63492 T7, 63493 T8, 63494 T9, 63495 T10, 63496 T11, 63497 T12, 63498 T13, 63499 T14, 63500 T15, 63501 T16, 63502 T17, 63503 T18, 63504 T19, 63505 T20, 63506 T21, 63507 T22, 63508 T23, 63509 T24, 63510 T25, 63511 T26, 63512 T27, 63513 T28, 63514 T29, 63515 T30, 63516 T31, 63517 T32, 63518 T33, 63519 T34, 63520 T35, 63521 T36, 63522 T37, 63523 T38, 63524 T39, 63525 T40, 63526 T41, 63527 T42, 63528 T43, 63529 T44, 63530 T45, 63531 T46, 63532 T47, 63533 T48, 63534 T49, 63535 T50, 63536 T51, 63537 T52, 63538 T53, 63539 T54, 63540 T55, 63541 T56, 63542 T57, 63543 T58, 63544 T59, 63545 T60, 63546 T61, 63547 T62, 63548 T63, 63549 T64, 63550 T65, 63551 T66, 63552 T67, 63553 T68, 63554 T69, 63555 T70, 63556 T71, 63557 T72, 63558 T73, 63559 T74, 63560 T75, 63561 T76, 63562 T77, 63563 T78, 63564 T79, 63565 T80, 63566 T81, 63567 T82, 63568 T83, 63569 T84, 63570 T85, 63571 T86, 63572 T87, 63573 T88, 63574 T89, 63575 T90, 63576 T91, 63577 T92, 63578 T93, 63579 T94, 63580 T95, 63581 T96, 63582 T97, 63583 T98, 63584 T99, 63585 T100, 63586 T101, 63587 T102, 63588 T103, 63589 T104, 63590 T105, 63591 T106, 63592 T107, 63593 T108, 63594 T109, 63595 T110, 63596 T111, 63597 T112, 63598 NullType, 63599 NullType, 63600 NullType, 63601 NullType, 63602 NullType, 63603 NullType, 63604 NullType, 63605 NullType, 63606 NullType, 63607 NullType, 63608 NullType, 63609 NullType, 63610 NullType, 63611 NullType, 63612 NullType> FunctorType; 63613 63614 FunctorType functor_; 63615 63616 functionImplementation_(const FunctorType &functor) : 63617 functor_(functor) 63618 { 63619 } 63620 63621 typedef std::tr1::function<Event ( 63622 const EnqueueArgs&, 63623 T0, 63624 T1, 63625 T2, 63626 T3, 63627 T4, 63628 T5, 63629 T6, 63630 T7, 63631 T8, 63632 T9, 63633 T10, 63634 T11, 63635 T12, 63636 T13, 63637 T14, 63638 T15, 63639 T16, 63640 T17, 63641 T18, 63642 T19, 63643 T20, 63644 T21, 63645 T22, 63646 T23, 63647 T24, 63648 T25, 63649 T26, 63650 T27, 63651 T28, 63652 T29, 63653 T30, 63654 T31, 63655 T32, 63656 T33, 63657 T34, 63658 T35, 63659 T36, 63660 T37, 63661 T38, 63662 T39, 63663 T40, 63664 T41, 63665 T42, 63666 T43, 63667 T44, 63668 T45, 63669 T46, 63670 T47, 63671 T48, 63672 T49, 63673 T50, 63674 T51, 63675 T52, 63676 T53, 63677 T54, 63678 T55, 63679 T56, 63680 T57, 63681 T58, 63682 T59, 63683 T60, 63684 T61, 63685 T62, 63686 T63, 63687 T64, 63688 T65, 63689 T66, 63690 T67, 63691 T68, 63692 T69, 63693 T70, 63694 T71, 63695 T72, 63696 T73, 63697 T74, 63698 T75, 63699 T76, 63700 T77, 63701 T78, 63702 T79, 63703 T80, 63704 T81, 63705 T82, 63706 T83, 63707 T84, 63708 T85, 63709 T86, 63710 T87, 63711 T88, 63712 T89, 63713 T90, 63714 T91, 63715 T92, 63716 T93, 63717 T94, 63718 T95, 63719 T96, 63720 T97, 63721 T98, 63722 T99, 63723 T100, 63724 T101, 63725 T102, 63726 T103, 63727 T104, 63728 T105, 63729 T106, 63730 T107, 63731 T108, 63732 T109, 63733 T110, 63734 T111, 63735 T112)> type_; 63736 63737 Event operator()(const EnqueueArgs& enqueueArgs, 63738 T0 arg0, 63739 T1 arg1, 63740 T2 arg2, 63741 T3 arg3, 63742 T4 arg4, 63743 T5 arg5, 63744 T6 arg6, 63745 T7 arg7, 63746 T8 arg8, 63747 T9 arg9, 63748 T10 arg10, 63749 T11 arg11, 63750 T12 arg12, 63751 T13 arg13, 63752 T14 arg14, 63753 T15 arg15, 63754 T16 arg16, 63755 T17 arg17, 63756 T18 arg18, 63757 T19 arg19, 63758 T20 arg20, 63759 T21 arg21, 63760 T22 arg22, 63761 T23 arg23, 63762 T24 arg24, 63763 T25 arg25, 63764 T26 arg26, 63765 T27 arg27, 63766 T28 arg28, 63767 T29 arg29, 63768 T30 arg30, 63769 T31 arg31, 63770 T32 arg32, 63771 T33 arg33, 63772 T34 arg34, 63773 T35 arg35, 63774 T36 arg36, 63775 T37 arg37, 63776 T38 arg38, 63777 T39 arg39, 63778 T40 arg40, 63779 T41 arg41, 63780 T42 arg42, 63781 T43 arg43, 63782 T44 arg44, 63783 T45 arg45, 63784 T46 arg46, 63785 T47 arg47, 63786 T48 arg48, 63787 T49 arg49, 63788 T50 arg50, 63789 T51 arg51, 63790 T52 arg52, 63791 T53 arg53, 63792 T54 arg54, 63793 T55 arg55, 63794 T56 arg56, 63795 T57 arg57, 63796 T58 arg58, 63797 T59 arg59, 63798 T60 arg60, 63799 T61 arg61, 63800 T62 arg62, 63801 T63 arg63, 63802 T64 arg64, 63803 T65 arg65, 63804 T66 arg66, 63805 T67 arg67, 63806 T68 arg68, 63807 T69 arg69, 63808 T70 arg70, 63809 T71 arg71, 63810 T72 arg72, 63811 T73 arg73, 63812 T74 arg74, 63813 T75 arg75, 63814 T76 arg76, 63815 T77 arg77, 63816 T78 arg78, 63817 T79 arg79, 63818 T80 arg80, 63819 T81 arg81, 63820 T82 arg82, 63821 T83 arg83, 63822 T84 arg84, 63823 T85 arg85, 63824 T86 arg86, 63825 T87 arg87, 63826 T88 arg88, 63827 T89 arg89, 63828 T90 arg90, 63829 T91 arg91, 63830 T92 arg92, 63831 T93 arg93, 63832 T94 arg94, 63833 T95 arg95, 63834 T96 arg96, 63835 T97 arg97, 63836 T98 arg98, 63837 T99 arg99, 63838 T100 arg100, 63839 T101 arg101, 63840 T102 arg102, 63841 T103 arg103, 63842 T104 arg104, 63843 T105 arg105, 63844 T106 arg106, 63845 T107 arg107, 63846 T108 arg108, 63847 T109 arg109, 63848 T110 arg110, 63849 T111 arg111, 63850 T112 arg112) 63851 { 63852 return functor_( 63853 enqueueArgs, 63854 arg0, 63855 arg1, 63856 arg2, 63857 arg3, 63858 arg4, 63859 arg5, 63860 arg6, 63861 arg7, 63862 arg8, 63863 arg9, 63864 arg10, 63865 arg11, 63866 arg12, 63867 arg13, 63868 arg14, 63869 arg15, 63870 arg16, 63871 arg17, 63872 arg18, 63873 arg19, 63874 arg20, 63875 arg21, 63876 arg22, 63877 arg23, 63878 arg24, 63879 arg25, 63880 arg26, 63881 arg27, 63882 arg28, 63883 arg29, 63884 arg30, 63885 arg31, 63886 arg32, 63887 arg33, 63888 arg34, 63889 arg35, 63890 arg36, 63891 arg37, 63892 arg38, 63893 arg39, 63894 arg40, 63895 arg41, 63896 arg42, 63897 arg43, 63898 arg44, 63899 arg45, 63900 arg46, 63901 arg47, 63902 arg48, 63903 arg49, 63904 arg50, 63905 arg51, 63906 arg52, 63907 arg53, 63908 arg54, 63909 arg55, 63910 arg56, 63911 arg57, 63912 arg58, 63913 arg59, 63914 arg60, 63915 arg61, 63916 arg62, 63917 arg63, 63918 arg64, 63919 arg65, 63920 arg66, 63921 arg67, 63922 arg68, 63923 arg69, 63924 arg70, 63925 arg71, 63926 arg72, 63927 arg73, 63928 arg74, 63929 arg75, 63930 arg76, 63931 arg77, 63932 arg78, 63933 arg79, 63934 arg80, 63935 arg81, 63936 arg82, 63937 arg83, 63938 arg84, 63939 arg85, 63940 arg86, 63941 arg87, 63942 arg88, 63943 arg89, 63944 arg90, 63945 arg91, 63946 arg92, 63947 arg93, 63948 arg94, 63949 arg95, 63950 arg96, 63951 arg97, 63952 arg98, 63953 arg99, 63954 arg100, 63955 arg101, 63956 arg102, 63957 arg103, 63958 arg104, 63959 arg105, 63960 arg106, 63961 arg107, 63962 arg108, 63963 arg109, 63964 arg110, 63965 arg111, 63966 arg112); 63967 } 63968 63969 operator type_ () 63970 { 63971 return type_(*this); 63972 } 63973 63974 }; 63975 63976 template< 63977 typename T0, 63978 typename T1, 63979 typename T2, 63980 typename T3, 63981 typename T4, 63982 typename T5, 63983 typename T6, 63984 typename T7, 63985 typename T8, 63986 typename T9, 63987 typename T10, 63988 typename T11, 63989 typename T12, 63990 typename T13, 63991 typename T14, 63992 typename T15, 63993 typename T16, 63994 typename T17, 63995 typename T18, 63996 typename T19, 63997 typename T20, 63998 typename T21, 63999 typename T22, 64000 typename T23, 64001 typename T24, 64002 typename T25, 64003 typename T26, 64004 typename T27, 64005 typename T28, 64006 typename T29, 64007 typename T30, 64008 typename T31, 64009 typename T32, 64010 typename T33, 64011 typename T34, 64012 typename T35, 64013 typename T36, 64014 typename T37, 64015 typename T38, 64016 typename T39, 64017 typename T40, 64018 typename T41, 64019 typename T42, 64020 typename T43, 64021 typename T44, 64022 typename T45, 64023 typename T46, 64024 typename T47, 64025 typename T48, 64026 typename T49, 64027 typename T50, 64028 typename T51, 64029 typename T52, 64030 typename T53, 64031 typename T54, 64032 typename T55, 64033 typename T56, 64034 typename T57, 64035 typename T58, 64036 typename T59, 64037 typename T60, 64038 typename T61, 64039 typename T62, 64040 typename T63, 64041 typename T64, 64042 typename T65, 64043 typename T66, 64044 typename T67, 64045 typename T68, 64046 typename T69, 64047 typename T70, 64048 typename T71, 64049 typename T72, 64050 typename T73, 64051 typename T74, 64052 typename T75, 64053 typename T76, 64054 typename T77, 64055 typename T78, 64056 typename T79, 64057 typename T80, 64058 typename T81, 64059 typename T82, 64060 typename T83, 64061 typename T84, 64062 typename T85, 64063 typename T86, 64064 typename T87, 64065 typename T88, 64066 typename T89, 64067 typename T90, 64068 typename T91, 64069 typename T92, 64070 typename T93, 64071 typename T94, 64072 typename T95, 64073 typename T96, 64074 typename T97, 64075 typename T98, 64076 typename T99, 64077 typename T100, 64078 typename T101, 64079 typename T102, 64080 typename T103, 64081 typename T104, 64082 typename T105, 64083 typename T106, 64084 typename T107, 64085 typename T108, 64086 typename T109, 64087 typename T110, 64088 typename T111, 64089 typename T112, 64090 typename T113> 64091 struct functionImplementation_< 64092 T0, 64093 T1, 64094 T2, 64095 T3, 64096 T4, 64097 T5, 64098 T6, 64099 T7, 64100 T8, 64101 T9, 64102 T10, 64103 T11, 64104 T12, 64105 T13, 64106 T14, 64107 T15, 64108 T16, 64109 T17, 64110 T18, 64111 T19, 64112 T20, 64113 T21, 64114 T22, 64115 T23, 64116 T24, 64117 T25, 64118 T26, 64119 T27, 64120 T28, 64121 T29, 64122 T30, 64123 T31, 64124 T32, 64125 T33, 64126 T34, 64127 T35, 64128 T36, 64129 T37, 64130 T38, 64131 T39, 64132 T40, 64133 T41, 64134 T42, 64135 T43, 64136 T44, 64137 T45, 64138 T46, 64139 T47, 64140 T48, 64141 T49, 64142 T50, 64143 T51, 64144 T52, 64145 T53, 64146 T54, 64147 T55, 64148 T56, 64149 T57, 64150 T58, 64151 T59, 64152 T60, 64153 T61, 64154 T62, 64155 T63, 64156 T64, 64157 T65, 64158 T66, 64159 T67, 64160 T68, 64161 T69, 64162 T70, 64163 T71, 64164 T72, 64165 T73, 64166 T74, 64167 T75, 64168 T76, 64169 T77, 64170 T78, 64171 T79, 64172 T80, 64173 T81, 64174 T82, 64175 T83, 64176 T84, 64177 T85, 64178 T86, 64179 T87, 64180 T88, 64181 T89, 64182 T90, 64183 T91, 64184 T92, 64185 T93, 64186 T94, 64187 T95, 64188 T96, 64189 T97, 64190 T98, 64191 T99, 64192 T100, 64193 T101, 64194 T102, 64195 T103, 64196 T104, 64197 T105, 64198 T106, 64199 T107, 64200 T108, 64201 T109, 64202 T110, 64203 T111, 64204 T112, 64205 T113, 64206 NullType, 64207 NullType, 64208 NullType, 64209 NullType, 64210 NullType, 64211 NullType, 64212 NullType, 64213 NullType, 64214 NullType, 64215 NullType, 64216 NullType, 64217 NullType, 64218 NullType, 64219 NullType> 64220 { 64221 typedef detail::KernelFunctorGlobal< 64222 T0, 64223 T1, 64224 T2, 64225 T3, 64226 T4, 64227 T5, 64228 T6, 64229 T7, 64230 T8, 64231 T9, 64232 T10, 64233 T11, 64234 T12, 64235 T13, 64236 T14, 64237 T15, 64238 T16, 64239 T17, 64240 T18, 64241 T19, 64242 T20, 64243 T21, 64244 T22, 64245 T23, 64246 T24, 64247 T25, 64248 T26, 64249 T27, 64250 T28, 64251 T29, 64252 T30, 64253 T31, 64254 T32, 64255 T33, 64256 T34, 64257 T35, 64258 T36, 64259 T37, 64260 T38, 64261 T39, 64262 T40, 64263 T41, 64264 T42, 64265 T43, 64266 T44, 64267 T45, 64268 T46, 64269 T47, 64270 T48, 64271 T49, 64272 T50, 64273 T51, 64274 T52, 64275 T53, 64276 T54, 64277 T55, 64278 T56, 64279 T57, 64280 T58, 64281 T59, 64282 T60, 64283 T61, 64284 T62, 64285 T63, 64286 T64, 64287 T65, 64288 T66, 64289 T67, 64290 T68, 64291 T69, 64292 T70, 64293 T71, 64294 T72, 64295 T73, 64296 T74, 64297 T75, 64298 T76, 64299 T77, 64300 T78, 64301 T79, 64302 T80, 64303 T81, 64304 T82, 64305 T83, 64306 T84, 64307 T85, 64308 T86, 64309 T87, 64310 T88, 64311 T89, 64312 T90, 64313 T91, 64314 T92, 64315 T93, 64316 T94, 64317 T95, 64318 T96, 64319 T97, 64320 T98, 64321 T99, 64322 T100, 64323 T101, 64324 T102, 64325 T103, 64326 T104, 64327 T105, 64328 T106, 64329 T107, 64330 T108, 64331 T109, 64332 T110, 64333 T111, 64334 T112, 64335 T113, 64336 NullType, 64337 NullType, 64338 NullType, 64339 NullType, 64340 NullType, 64341 NullType, 64342 NullType, 64343 NullType, 64344 NullType, 64345 NullType, 64346 NullType, 64347 NullType, 64348 NullType, 64349 NullType> FunctorType; 64350 64351 FunctorType functor_; 64352 64353 functionImplementation_(const FunctorType &functor) : 64354 functor_(functor) 64355 { 64356 } 64357 64358 typedef std::tr1::function<Event ( 64359 const EnqueueArgs&, 64360 T0, 64361 T1, 64362 T2, 64363 T3, 64364 T4, 64365 T5, 64366 T6, 64367 T7, 64368 T8, 64369 T9, 64370 T10, 64371 T11, 64372 T12, 64373 T13, 64374 T14, 64375 T15, 64376 T16, 64377 T17, 64378 T18, 64379 T19, 64380 T20, 64381 T21, 64382 T22, 64383 T23, 64384 T24, 64385 T25, 64386 T26, 64387 T27, 64388 T28, 64389 T29, 64390 T30, 64391 T31, 64392 T32, 64393 T33, 64394 T34, 64395 T35, 64396 T36, 64397 T37, 64398 T38, 64399 T39, 64400 T40, 64401 T41, 64402 T42, 64403 T43, 64404 T44, 64405 T45, 64406 T46, 64407 T47, 64408 T48, 64409 T49, 64410 T50, 64411 T51, 64412 T52, 64413 T53, 64414 T54, 64415 T55, 64416 T56, 64417 T57, 64418 T58, 64419 T59, 64420 T60, 64421 T61, 64422 T62, 64423 T63, 64424 T64, 64425 T65, 64426 T66, 64427 T67, 64428 T68, 64429 T69, 64430 T70, 64431 T71, 64432 T72, 64433 T73, 64434 T74, 64435 T75, 64436 T76, 64437 T77, 64438 T78, 64439 T79, 64440 T80, 64441 T81, 64442 T82, 64443 T83, 64444 T84, 64445 T85, 64446 T86, 64447 T87, 64448 T88, 64449 T89, 64450 T90, 64451 T91, 64452 T92, 64453 T93, 64454 T94, 64455 T95, 64456 T96, 64457 T97, 64458 T98, 64459 T99, 64460 T100, 64461 T101, 64462 T102, 64463 T103, 64464 T104, 64465 T105, 64466 T106, 64467 T107, 64468 T108, 64469 T109, 64470 T110, 64471 T111, 64472 T112, 64473 T113)> type_; 64474 64475 Event operator()(const EnqueueArgs& enqueueArgs, 64476 T0 arg0, 64477 T1 arg1, 64478 T2 arg2, 64479 T3 arg3, 64480 T4 arg4, 64481 T5 arg5, 64482 T6 arg6, 64483 T7 arg7, 64484 T8 arg8, 64485 T9 arg9, 64486 T10 arg10, 64487 T11 arg11, 64488 T12 arg12, 64489 T13 arg13, 64490 T14 arg14, 64491 T15 arg15, 64492 T16 arg16, 64493 T17 arg17, 64494 T18 arg18, 64495 T19 arg19, 64496 T20 arg20, 64497 T21 arg21, 64498 T22 arg22, 64499 T23 arg23, 64500 T24 arg24, 64501 T25 arg25, 64502 T26 arg26, 64503 T27 arg27, 64504 T28 arg28, 64505 T29 arg29, 64506 T30 arg30, 64507 T31 arg31, 64508 T32 arg32, 64509 T33 arg33, 64510 T34 arg34, 64511 T35 arg35, 64512 T36 arg36, 64513 T37 arg37, 64514 T38 arg38, 64515 T39 arg39, 64516 T40 arg40, 64517 T41 arg41, 64518 T42 arg42, 64519 T43 arg43, 64520 T44 arg44, 64521 T45 arg45, 64522 T46 arg46, 64523 T47 arg47, 64524 T48 arg48, 64525 T49 arg49, 64526 T50 arg50, 64527 T51 arg51, 64528 T52 arg52, 64529 T53 arg53, 64530 T54 arg54, 64531 T55 arg55, 64532 T56 arg56, 64533 T57 arg57, 64534 T58 arg58, 64535 T59 arg59, 64536 T60 arg60, 64537 T61 arg61, 64538 T62 arg62, 64539 T63 arg63, 64540 T64 arg64, 64541 T65 arg65, 64542 T66 arg66, 64543 T67 arg67, 64544 T68 arg68, 64545 T69 arg69, 64546 T70 arg70, 64547 T71 arg71, 64548 T72 arg72, 64549 T73 arg73, 64550 T74 arg74, 64551 T75 arg75, 64552 T76 arg76, 64553 T77 arg77, 64554 T78 arg78, 64555 T79 arg79, 64556 T80 arg80, 64557 T81 arg81, 64558 T82 arg82, 64559 T83 arg83, 64560 T84 arg84, 64561 T85 arg85, 64562 T86 arg86, 64563 T87 arg87, 64564 T88 arg88, 64565 T89 arg89, 64566 T90 arg90, 64567 T91 arg91, 64568 T92 arg92, 64569 T93 arg93, 64570 T94 arg94, 64571 T95 arg95, 64572 T96 arg96, 64573 T97 arg97, 64574 T98 arg98, 64575 T99 arg99, 64576 T100 arg100, 64577 T101 arg101, 64578 T102 arg102, 64579 T103 arg103, 64580 T104 arg104, 64581 T105 arg105, 64582 T106 arg106, 64583 T107 arg107, 64584 T108 arg108, 64585 T109 arg109, 64586 T110 arg110, 64587 T111 arg111, 64588 T112 arg112, 64589 T113 arg113) 64590 { 64591 return functor_( 64592 enqueueArgs, 64593 arg0, 64594 arg1, 64595 arg2, 64596 arg3, 64597 arg4, 64598 arg5, 64599 arg6, 64600 arg7, 64601 arg8, 64602 arg9, 64603 arg10, 64604 arg11, 64605 arg12, 64606 arg13, 64607 arg14, 64608 arg15, 64609 arg16, 64610 arg17, 64611 arg18, 64612 arg19, 64613 arg20, 64614 arg21, 64615 arg22, 64616 arg23, 64617 arg24, 64618 arg25, 64619 arg26, 64620 arg27, 64621 arg28, 64622 arg29, 64623 arg30, 64624 arg31, 64625 arg32, 64626 arg33, 64627 arg34, 64628 arg35, 64629 arg36, 64630 arg37, 64631 arg38, 64632 arg39, 64633 arg40, 64634 arg41, 64635 arg42, 64636 arg43, 64637 arg44, 64638 arg45, 64639 arg46, 64640 arg47, 64641 arg48, 64642 arg49, 64643 arg50, 64644 arg51, 64645 arg52, 64646 arg53, 64647 arg54, 64648 arg55, 64649 arg56, 64650 arg57, 64651 arg58, 64652 arg59, 64653 arg60, 64654 arg61, 64655 arg62, 64656 arg63, 64657 arg64, 64658 arg65, 64659 arg66, 64660 arg67, 64661 arg68, 64662 arg69, 64663 arg70, 64664 arg71, 64665 arg72, 64666 arg73, 64667 arg74, 64668 arg75, 64669 arg76, 64670 arg77, 64671 arg78, 64672 arg79, 64673 arg80, 64674 arg81, 64675 arg82, 64676 arg83, 64677 arg84, 64678 arg85, 64679 arg86, 64680 arg87, 64681 arg88, 64682 arg89, 64683 arg90, 64684 arg91, 64685 arg92, 64686 arg93, 64687 arg94, 64688 arg95, 64689 arg96, 64690 arg97, 64691 arg98, 64692 arg99, 64693 arg100, 64694 arg101, 64695 arg102, 64696 arg103, 64697 arg104, 64698 arg105, 64699 arg106, 64700 arg107, 64701 arg108, 64702 arg109, 64703 arg110, 64704 arg111, 64705 arg112, 64706 arg113); 64707 } 64708 64709 operator type_ () 64710 { 64711 return type_(*this); 64712 } 64713 64714 }; 64715 64716 template< 64717 typename T0, 64718 typename T1, 64719 typename T2, 64720 typename T3, 64721 typename T4, 64722 typename T5, 64723 typename T6, 64724 typename T7, 64725 typename T8, 64726 typename T9, 64727 typename T10, 64728 typename T11, 64729 typename T12, 64730 typename T13, 64731 typename T14, 64732 typename T15, 64733 typename T16, 64734 typename T17, 64735 typename T18, 64736 typename T19, 64737 typename T20, 64738 typename T21, 64739 typename T22, 64740 typename T23, 64741 typename T24, 64742 typename T25, 64743 typename T26, 64744 typename T27, 64745 typename T28, 64746 typename T29, 64747 typename T30, 64748 typename T31, 64749 typename T32, 64750 typename T33, 64751 typename T34, 64752 typename T35, 64753 typename T36, 64754 typename T37, 64755 typename T38, 64756 typename T39, 64757 typename T40, 64758 typename T41, 64759 typename T42, 64760 typename T43, 64761 typename T44, 64762 typename T45, 64763 typename T46, 64764 typename T47, 64765 typename T48, 64766 typename T49, 64767 typename T50, 64768 typename T51, 64769 typename T52, 64770 typename T53, 64771 typename T54, 64772 typename T55, 64773 typename T56, 64774 typename T57, 64775 typename T58, 64776 typename T59, 64777 typename T60, 64778 typename T61, 64779 typename T62, 64780 typename T63, 64781 typename T64, 64782 typename T65, 64783 typename T66, 64784 typename T67, 64785 typename T68, 64786 typename T69, 64787 typename T70, 64788 typename T71, 64789 typename T72, 64790 typename T73, 64791 typename T74, 64792 typename T75, 64793 typename T76, 64794 typename T77, 64795 typename T78, 64796 typename T79, 64797 typename T80, 64798 typename T81, 64799 typename T82, 64800 typename T83, 64801 typename T84, 64802 typename T85, 64803 typename T86, 64804 typename T87, 64805 typename T88, 64806 typename T89, 64807 typename T90, 64808 typename T91, 64809 typename T92, 64810 typename T93, 64811 typename T94, 64812 typename T95, 64813 typename T96, 64814 typename T97, 64815 typename T98, 64816 typename T99, 64817 typename T100, 64818 typename T101, 64819 typename T102, 64820 typename T103, 64821 typename T104, 64822 typename T105, 64823 typename T106, 64824 typename T107, 64825 typename T108, 64826 typename T109, 64827 typename T110, 64828 typename T111, 64829 typename T112, 64830 typename T113, 64831 typename T114> 64832 struct functionImplementation_< 64833 T0, 64834 T1, 64835 T2, 64836 T3, 64837 T4, 64838 T5, 64839 T6, 64840 T7, 64841 T8, 64842 T9, 64843 T10, 64844 T11, 64845 T12, 64846 T13, 64847 T14, 64848 T15, 64849 T16, 64850 T17, 64851 T18, 64852 T19, 64853 T20, 64854 T21, 64855 T22, 64856 T23, 64857 T24, 64858 T25, 64859 T26, 64860 T27, 64861 T28, 64862 T29, 64863 T30, 64864 T31, 64865 T32, 64866 T33, 64867 T34, 64868 T35, 64869 T36, 64870 T37, 64871 T38, 64872 T39, 64873 T40, 64874 T41, 64875 T42, 64876 T43, 64877 T44, 64878 T45, 64879 T46, 64880 T47, 64881 T48, 64882 T49, 64883 T50, 64884 T51, 64885 T52, 64886 T53, 64887 T54, 64888 T55, 64889 T56, 64890 T57, 64891 T58, 64892 T59, 64893 T60, 64894 T61, 64895 T62, 64896 T63, 64897 T64, 64898 T65, 64899 T66, 64900 T67, 64901 T68, 64902 T69, 64903 T70, 64904 T71, 64905 T72, 64906 T73, 64907 T74, 64908 T75, 64909 T76, 64910 T77, 64911 T78, 64912 T79, 64913 T80, 64914 T81, 64915 T82, 64916 T83, 64917 T84, 64918 T85, 64919 T86, 64920 T87, 64921 T88, 64922 T89, 64923 T90, 64924 T91, 64925 T92, 64926 T93, 64927 T94, 64928 T95, 64929 T96, 64930 T97, 64931 T98, 64932 T99, 64933 T100, 64934 T101, 64935 T102, 64936 T103, 64937 T104, 64938 T105, 64939 T106, 64940 T107, 64941 T108, 64942 T109, 64943 T110, 64944 T111, 64945 T112, 64946 T113, 64947 T114, 64948 NullType, 64949 NullType, 64950 NullType, 64951 NullType, 64952 NullType, 64953 NullType, 64954 NullType, 64955 NullType, 64956 NullType, 64957 NullType, 64958 NullType, 64959 NullType, 64960 NullType> 64961 { 64962 typedef detail::KernelFunctorGlobal< 64963 T0, 64964 T1, 64965 T2, 64966 T3, 64967 T4, 64968 T5, 64969 T6, 64970 T7, 64971 T8, 64972 T9, 64973 T10, 64974 T11, 64975 T12, 64976 T13, 64977 T14, 64978 T15, 64979 T16, 64980 T17, 64981 T18, 64982 T19, 64983 T20, 64984 T21, 64985 T22, 64986 T23, 64987 T24, 64988 T25, 64989 T26, 64990 T27, 64991 T28, 64992 T29, 64993 T30, 64994 T31, 64995 T32, 64996 T33, 64997 T34, 64998 T35, 64999 T36, 65000 T37, 65001 T38, 65002 T39, 65003 T40, 65004 T41, 65005 T42, 65006 T43, 65007 T44, 65008 T45, 65009 T46, 65010 T47, 65011 T48, 65012 T49, 65013 T50, 65014 T51, 65015 T52, 65016 T53, 65017 T54, 65018 T55, 65019 T56, 65020 T57, 65021 T58, 65022 T59, 65023 T60, 65024 T61, 65025 T62, 65026 T63, 65027 T64, 65028 T65, 65029 T66, 65030 T67, 65031 T68, 65032 T69, 65033 T70, 65034 T71, 65035 T72, 65036 T73, 65037 T74, 65038 T75, 65039 T76, 65040 T77, 65041 T78, 65042 T79, 65043 T80, 65044 T81, 65045 T82, 65046 T83, 65047 T84, 65048 T85, 65049 T86, 65050 T87, 65051 T88, 65052 T89, 65053 T90, 65054 T91, 65055 T92, 65056 T93, 65057 T94, 65058 T95, 65059 T96, 65060 T97, 65061 T98, 65062 T99, 65063 T100, 65064 T101, 65065 T102, 65066 T103, 65067 T104, 65068 T105, 65069 T106, 65070 T107, 65071 T108, 65072 T109, 65073 T110, 65074 T111, 65075 T112, 65076 T113, 65077 T114, 65078 NullType, 65079 NullType, 65080 NullType, 65081 NullType, 65082 NullType, 65083 NullType, 65084 NullType, 65085 NullType, 65086 NullType, 65087 NullType, 65088 NullType, 65089 NullType, 65090 NullType> FunctorType; 65091 65092 FunctorType functor_; 65093 65094 functionImplementation_(const FunctorType &functor) : 65095 functor_(functor) 65096 { 65097 } 65098 65099 typedef std::tr1::function<Event ( 65100 const EnqueueArgs&, 65101 T0, 65102 T1, 65103 T2, 65104 T3, 65105 T4, 65106 T5, 65107 T6, 65108 T7, 65109 T8, 65110 T9, 65111 T10, 65112 T11, 65113 T12, 65114 T13, 65115 T14, 65116 T15, 65117 T16, 65118 T17, 65119 T18, 65120 T19, 65121 T20, 65122 T21, 65123 T22, 65124 T23, 65125 T24, 65126 T25, 65127 T26, 65128 T27, 65129 T28, 65130 T29, 65131 T30, 65132 T31, 65133 T32, 65134 T33, 65135 T34, 65136 T35, 65137 T36, 65138 T37, 65139 T38, 65140 T39, 65141 T40, 65142 T41, 65143 T42, 65144 T43, 65145 T44, 65146 T45, 65147 T46, 65148 T47, 65149 T48, 65150 T49, 65151 T50, 65152 T51, 65153 T52, 65154 T53, 65155 T54, 65156 T55, 65157 T56, 65158 T57, 65159 T58, 65160 T59, 65161 T60, 65162 T61, 65163 T62, 65164 T63, 65165 T64, 65166 T65, 65167 T66, 65168 T67, 65169 T68, 65170 T69, 65171 T70, 65172 T71, 65173 T72, 65174 T73, 65175 T74, 65176 T75, 65177 T76, 65178 T77, 65179 T78, 65180 T79, 65181 T80, 65182 T81, 65183 T82, 65184 T83, 65185 T84, 65186 T85, 65187 T86, 65188 T87, 65189 T88, 65190 T89, 65191 T90, 65192 T91, 65193 T92, 65194 T93, 65195 T94, 65196 T95, 65197 T96, 65198 T97, 65199 T98, 65200 T99, 65201 T100, 65202 T101, 65203 T102, 65204 T103, 65205 T104, 65206 T105, 65207 T106, 65208 T107, 65209 T108, 65210 T109, 65211 T110, 65212 T111, 65213 T112, 65214 T113, 65215 T114)> type_; 65216 65217 Event operator()(const EnqueueArgs& enqueueArgs, 65218 T0 arg0, 65219 T1 arg1, 65220 T2 arg2, 65221 T3 arg3, 65222 T4 arg4, 65223 T5 arg5, 65224 T6 arg6, 65225 T7 arg7, 65226 T8 arg8, 65227 T9 arg9, 65228 T10 arg10, 65229 T11 arg11, 65230 T12 arg12, 65231 T13 arg13, 65232 T14 arg14, 65233 T15 arg15, 65234 T16 arg16, 65235 T17 arg17, 65236 T18 arg18, 65237 T19 arg19, 65238 T20 arg20, 65239 T21 arg21, 65240 T22 arg22, 65241 T23 arg23, 65242 T24 arg24, 65243 T25 arg25, 65244 T26 arg26, 65245 T27 arg27, 65246 T28 arg28, 65247 T29 arg29, 65248 T30 arg30, 65249 T31 arg31, 65250 T32 arg32, 65251 T33 arg33, 65252 T34 arg34, 65253 T35 arg35, 65254 T36 arg36, 65255 T37 arg37, 65256 T38 arg38, 65257 T39 arg39, 65258 T40 arg40, 65259 T41 arg41, 65260 T42 arg42, 65261 T43 arg43, 65262 T44 arg44, 65263 T45 arg45, 65264 T46 arg46, 65265 T47 arg47, 65266 T48 arg48, 65267 T49 arg49, 65268 T50 arg50, 65269 T51 arg51, 65270 T52 arg52, 65271 T53 arg53, 65272 T54 arg54, 65273 T55 arg55, 65274 T56 arg56, 65275 T57 arg57, 65276 T58 arg58, 65277 T59 arg59, 65278 T60 arg60, 65279 T61 arg61, 65280 T62 arg62, 65281 T63 arg63, 65282 T64 arg64, 65283 T65 arg65, 65284 T66 arg66, 65285 T67 arg67, 65286 T68 arg68, 65287 T69 arg69, 65288 T70 arg70, 65289 T71 arg71, 65290 T72 arg72, 65291 T73 arg73, 65292 T74 arg74, 65293 T75 arg75, 65294 T76 arg76, 65295 T77 arg77, 65296 T78 arg78, 65297 T79 arg79, 65298 T80 arg80, 65299 T81 arg81, 65300 T82 arg82, 65301 T83 arg83, 65302 T84 arg84, 65303 T85 arg85, 65304 T86 arg86, 65305 T87 arg87, 65306 T88 arg88, 65307 T89 arg89, 65308 T90 arg90, 65309 T91 arg91, 65310 T92 arg92, 65311 T93 arg93, 65312 T94 arg94, 65313 T95 arg95, 65314 T96 arg96, 65315 T97 arg97, 65316 T98 arg98, 65317 T99 arg99, 65318 T100 arg100, 65319 T101 arg101, 65320 T102 arg102, 65321 T103 arg103, 65322 T104 arg104, 65323 T105 arg105, 65324 T106 arg106, 65325 T107 arg107, 65326 T108 arg108, 65327 T109 arg109, 65328 T110 arg110, 65329 T111 arg111, 65330 T112 arg112, 65331 T113 arg113, 65332 T114 arg114) 65333 { 65334 return functor_( 65335 enqueueArgs, 65336 arg0, 65337 arg1, 65338 arg2, 65339 arg3, 65340 arg4, 65341 arg5, 65342 arg6, 65343 arg7, 65344 arg8, 65345 arg9, 65346 arg10, 65347 arg11, 65348 arg12, 65349 arg13, 65350 arg14, 65351 arg15, 65352 arg16, 65353 arg17, 65354 arg18, 65355 arg19, 65356 arg20, 65357 arg21, 65358 arg22, 65359 arg23, 65360 arg24, 65361 arg25, 65362 arg26, 65363 arg27, 65364 arg28, 65365 arg29, 65366 arg30, 65367 arg31, 65368 arg32, 65369 arg33, 65370 arg34, 65371 arg35, 65372 arg36, 65373 arg37, 65374 arg38, 65375 arg39, 65376 arg40, 65377 arg41, 65378 arg42, 65379 arg43, 65380 arg44, 65381 arg45, 65382 arg46, 65383 arg47, 65384 arg48, 65385 arg49, 65386 arg50, 65387 arg51, 65388 arg52, 65389 arg53, 65390 arg54, 65391 arg55, 65392 arg56, 65393 arg57, 65394 arg58, 65395 arg59, 65396 arg60, 65397 arg61, 65398 arg62, 65399 arg63, 65400 arg64, 65401 arg65, 65402 arg66, 65403 arg67, 65404 arg68, 65405 arg69, 65406 arg70, 65407 arg71, 65408 arg72, 65409 arg73, 65410 arg74, 65411 arg75, 65412 arg76, 65413 arg77, 65414 arg78, 65415 arg79, 65416 arg80, 65417 arg81, 65418 arg82, 65419 arg83, 65420 arg84, 65421 arg85, 65422 arg86, 65423 arg87, 65424 arg88, 65425 arg89, 65426 arg90, 65427 arg91, 65428 arg92, 65429 arg93, 65430 arg94, 65431 arg95, 65432 arg96, 65433 arg97, 65434 arg98, 65435 arg99, 65436 arg100, 65437 arg101, 65438 arg102, 65439 arg103, 65440 arg104, 65441 arg105, 65442 arg106, 65443 arg107, 65444 arg108, 65445 arg109, 65446 arg110, 65447 arg111, 65448 arg112, 65449 arg113, 65450 arg114); 65451 } 65452 65453 operator type_ () 65454 { 65455 return type_(*this); 65456 } 65457 65458 }; 65459 65460 template< 65461 typename T0, 65462 typename T1, 65463 typename T2, 65464 typename T3, 65465 typename T4, 65466 typename T5, 65467 typename T6, 65468 typename T7, 65469 typename T8, 65470 typename T9, 65471 typename T10, 65472 typename T11, 65473 typename T12, 65474 typename T13, 65475 typename T14, 65476 typename T15, 65477 typename T16, 65478 typename T17, 65479 typename T18, 65480 typename T19, 65481 typename T20, 65482 typename T21, 65483 typename T22, 65484 typename T23, 65485 typename T24, 65486 typename T25, 65487 typename T26, 65488 typename T27, 65489 typename T28, 65490 typename T29, 65491 typename T30, 65492 typename T31, 65493 typename T32, 65494 typename T33, 65495 typename T34, 65496 typename T35, 65497 typename T36, 65498 typename T37, 65499 typename T38, 65500 typename T39, 65501 typename T40, 65502 typename T41, 65503 typename T42, 65504 typename T43, 65505 typename T44, 65506 typename T45, 65507 typename T46, 65508 typename T47, 65509 typename T48, 65510 typename T49, 65511 typename T50, 65512 typename T51, 65513 typename T52, 65514 typename T53, 65515 typename T54, 65516 typename T55, 65517 typename T56, 65518 typename T57, 65519 typename T58, 65520 typename T59, 65521 typename T60, 65522 typename T61, 65523 typename T62, 65524 typename T63, 65525 typename T64, 65526 typename T65, 65527 typename T66, 65528 typename T67, 65529 typename T68, 65530 typename T69, 65531 typename T70, 65532 typename T71, 65533 typename T72, 65534 typename T73, 65535 typename T74, 65536 typename T75, 65537 typename T76, 65538 typename T77, 65539 typename T78, 65540 typename T79, 65541 typename T80, 65542 typename T81, 65543 typename T82, 65544 typename T83, 65545 typename T84, 65546 typename T85, 65547 typename T86, 65548 typename T87, 65549 typename T88, 65550 typename T89, 65551 typename T90, 65552 typename T91, 65553 typename T92, 65554 typename T93, 65555 typename T94, 65556 typename T95, 65557 typename T96, 65558 typename T97, 65559 typename T98, 65560 typename T99, 65561 typename T100, 65562 typename T101, 65563 typename T102, 65564 typename T103, 65565 typename T104, 65566 typename T105, 65567 typename T106, 65568 typename T107, 65569 typename T108, 65570 typename T109, 65571 typename T110, 65572 typename T111, 65573 typename T112, 65574 typename T113, 65575 typename T114, 65576 typename T115> 65577 struct functionImplementation_< 65578 T0, 65579 T1, 65580 T2, 65581 T3, 65582 T4, 65583 T5, 65584 T6, 65585 T7, 65586 T8, 65587 T9, 65588 T10, 65589 T11, 65590 T12, 65591 T13, 65592 T14, 65593 T15, 65594 T16, 65595 T17, 65596 T18, 65597 T19, 65598 T20, 65599 T21, 65600 T22, 65601 T23, 65602 T24, 65603 T25, 65604 T26, 65605 T27, 65606 T28, 65607 T29, 65608 T30, 65609 T31, 65610 T32, 65611 T33, 65612 T34, 65613 T35, 65614 T36, 65615 T37, 65616 T38, 65617 T39, 65618 T40, 65619 T41, 65620 T42, 65621 T43, 65622 T44, 65623 T45, 65624 T46, 65625 T47, 65626 T48, 65627 T49, 65628 T50, 65629 T51, 65630 T52, 65631 T53, 65632 T54, 65633 T55, 65634 T56, 65635 T57, 65636 T58, 65637 T59, 65638 T60, 65639 T61, 65640 T62, 65641 T63, 65642 T64, 65643 T65, 65644 T66, 65645 T67, 65646 T68, 65647 T69, 65648 T70, 65649 T71, 65650 T72, 65651 T73, 65652 T74, 65653 T75, 65654 T76, 65655 T77, 65656 T78, 65657 T79, 65658 T80, 65659 T81, 65660 T82, 65661 T83, 65662 T84, 65663 T85, 65664 T86, 65665 T87, 65666 T88, 65667 T89, 65668 T90, 65669 T91, 65670 T92, 65671 T93, 65672 T94, 65673 T95, 65674 T96, 65675 T97, 65676 T98, 65677 T99, 65678 T100, 65679 T101, 65680 T102, 65681 T103, 65682 T104, 65683 T105, 65684 T106, 65685 T107, 65686 T108, 65687 T109, 65688 T110, 65689 T111, 65690 T112, 65691 T113, 65692 T114, 65693 T115, 65694 NullType, 65695 NullType, 65696 NullType, 65697 NullType, 65698 NullType, 65699 NullType, 65700 NullType, 65701 NullType, 65702 NullType, 65703 NullType, 65704 NullType, 65705 NullType> 65706 { 65707 typedef detail::KernelFunctorGlobal< 65708 T0, 65709 T1, 65710 T2, 65711 T3, 65712 T4, 65713 T5, 65714 T6, 65715 T7, 65716 T8, 65717 T9, 65718 T10, 65719 T11, 65720 T12, 65721 T13, 65722 T14, 65723 T15, 65724 T16, 65725 T17, 65726 T18, 65727 T19, 65728 T20, 65729 T21, 65730 T22, 65731 T23, 65732 T24, 65733 T25, 65734 T26, 65735 T27, 65736 T28, 65737 T29, 65738 T30, 65739 T31, 65740 T32, 65741 T33, 65742 T34, 65743 T35, 65744 T36, 65745 T37, 65746 T38, 65747 T39, 65748 T40, 65749 T41, 65750 T42, 65751 T43, 65752 T44, 65753 T45, 65754 T46, 65755 T47, 65756 T48, 65757 T49, 65758 T50, 65759 T51, 65760 T52, 65761 T53, 65762 T54, 65763 T55, 65764 T56, 65765 T57, 65766 T58, 65767 T59, 65768 T60, 65769 T61, 65770 T62, 65771 T63, 65772 T64, 65773 T65, 65774 T66, 65775 T67, 65776 T68, 65777 T69, 65778 T70, 65779 T71, 65780 T72, 65781 T73, 65782 T74, 65783 T75, 65784 T76, 65785 T77, 65786 T78, 65787 T79, 65788 T80, 65789 T81, 65790 T82, 65791 T83, 65792 T84, 65793 T85, 65794 T86, 65795 T87, 65796 T88, 65797 T89, 65798 T90, 65799 T91, 65800 T92, 65801 T93, 65802 T94, 65803 T95, 65804 T96, 65805 T97, 65806 T98, 65807 T99, 65808 T100, 65809 T101, 65810 T102, 65811 T103, 65812 T104, 65813 T105, 65814 T106, 65815 T107, 65816 T108, 65817 T109, 65818 T110, 65819 T111, 65820 T112, 65821 T113, 65822 T114, 65823 T115, 65824 NullType, 65825 NullType, 65826 NullType, 65827 NullType, 65828 NullType, 65829 NullType, 65830 NullType, 65831 NullType, 65832 NullType, 65833 NullType, 65834 NullType, 65835 NullType> FunctorType; 65836 65837 FunctorType functor_; 65838 65839 functionImplementation_(const FunctorType &functor) : 65840 functor_(functor) 65841 { 65842 } 65843 65844 typedef std::tr1::function<Event ( 65845 const EnqueueArgs&, 65846 T0, 65847 T1, 65848 T2, 65849 T3, 65850 T4, 65851 T5, 65852 T6, 65853 T7, 65854 T8, 65855 T9, 65856 T10, 65857 T11, 65858 T12, 65859 T13, 65860 T14, 65861 T15, 65862 T16, 65863 T17, 65864 T18, 65865 T19, 65866 T20, 65867 T21, 65868 T22, 65869 T23, 65870 T24, 65871 T25, 65872 T26, 65873 T27, 65874 T28, 65875 T29, 65876 T30, 65877 T31, 65878 T32, 65879 T33, 65880 T34, 65881 T35, 65882 T36, 65883 T37, 65884 T38, 65885 T39, 65886 T40, 65887 T41, 65888 T42, 65889 T43, 65890 T44, 65891 T45, 65892 T46, 65893 T47, 65894 T48, 65895 T49, 65896 T50, 65897 T51, 65898 T52, 65899 T53, 65900 T54, 65901 T55, 65902 T56, 65903 T57, 65904 T58, 65905 T59, 65906 T60, 65907 T61, 65908 T62, 65909 T63, 65910 T64, 65911 T65, 65912 T66, 65913 T67, 65914 T68, 65915 T69, 65916 T70, 65917 T71, 65918 T72, 65919 T73, 65920 T74, 65921 T75, 65922 T76, 65923 T77, 65924 T78, 65925 T79, 65926 T80, 65927 T81, 65928 T82, 65929 T83, 65930 T84, 65931 T85, 65932 T86, 65933 T87, 65934 T88, 65935 T89, 65936 T90, 65937 T91, 65938 T92, 65939 T93, 65940 T94, 65941 T95, 65942 T96, 65943 T97, 65944 T98, 65945 T99, 65946 T100, 65947 T101, 65948 T102, 65949 T103, 65950 T104, 65951 T105, 65952 T106, 65953 T107, 65954 T108, 65955 T109, 65956 T110, 65957 T111, 65958 T112, 65959 T113, 65960 T114, 65961 T115)> type_; 65962 65963 Event operator()(const EnqueueArgs& enqueueArgs, 65964 T0 arg0, 65965 T1 arg1, 65966 T2 arg2, 65967 T3 arg3, 65968 T4 arg4, 65969 T5 arg5, 65970 T6 arg6, 65971 T7 arg7, 65972 T8 arg8, 65973 T9 arg9, 65974 T10 arg10, 65975 T11 arg11, 65976 T12 arg12, 65977 T13 arg13, 65978 T14 arg14, 65979 T15 arg15, 65980 T16 arg16, 65981 T17 arg17, 65982 T18 arg18, 65983 T19 arg19, 65984 T20 arg20, 65985 T21 arg21, 65986 T22 arg22, 65987 T23 arg23, 65988 T24 arg24, 65989 T25 arg25, 65990 T26 arg26, 65991 T27 arg27, 65992 T28 arg28, 65993 T29 arg29, 65994 T30 arg30, 65995 T31 arg31, 65996 T32 arg32, 65997 T33 arg33, 65998 T34 arg34, 65999 T35 arg35, 66000 T36 arg36, 66001 T37 arg37, 66002 T38 arg38, 66003 T39 arg39, 66004 T40 arg40, 66005 T41 arg41, 66006 T42 arg42, 66007 T43 arg43, 66008 T44 arg44, 66009 T45 arg45, 66010 T46 arg46, 66011 T47 arg47, 66012 T48 arg48, 66013 T49 arg49, 66014 T50 arg50, 66015 T51 arg51, 66016 T52 arg52, 66017 T53 arg53, 66018 T54 arg54, 66019 T55 arg55, 66020 T56 arg56, 66021 T57 arg57, 66022 T58 arg58, 66023 T59 arg59, 66024 T60 arg60, 66025 T61 arg61, 66026 T62 arg62, 66027 T63 arg63, 66028 T64 arg64, 66029 T65 arg65, 66030 T66 arg66, 66031 T67 arg67, 66032 T68 arg68, 66033 T69 arg69, 66034 T70 arg70, 66035 T71 arg71, 66036 T72 arg72, 66037 T73 arg73, 66038 T74 arg74, 66039 T75 arg75, 66040 T76 arg76, 66041 T77 arg77, 66042 T78 arg78, 66043 T79 arg79, 66044 T80 arg80, 66045 T81 arg81, 66046 T82 arg82, 66047 T83 arg83, 66048 T84 arg84, 66049 T85 arg85, 66050 T86 arg86, 66051 T87 arg87, 66052 T88 arg88, 66053 T89 arg89, 66054 T90 arg90, 66055 T91 arg91, 66056 T92 arg92, 66057 T93 arg93, 66058 T94 arg94, 66059 T95 arg95, 66060 T96 arg96, 66061 T97 arg97, 66062 T98 arg98, 66063 T99 arg99, 66064 T100 arg100, 66065 T101 arg101, 66066 T102 arg102, 66067 T103 arg103, 66068 T104 arg104, 66069 T105 arg105, 66070 T106 arg106, 66071 T107 arg107, 66072 T108 arg108, 66073 T109 arg109, 66074 T110 arg110, 66075 T111 arg111, 66076 T112 arg112, 66077 T113 arg113, 66078 T114 arg114, 66079 T115 arg115) 66080 { 66081 return functor_( 66082 enqueueArgs, 66083 arg0, 66084 arg1, 66085 arg2, 66086 arg3, 66087 arg4, 66088 arg5, 66089 arg6, 66090 arg7, 66091 arg8, 66092 arg9, 66093 arg10, 66094 arg11, 66095 arg12, 66096 arg13, 66097 arg14, 66098 arg15, 66099 arg16, 66100 arg17, 66101 arg18, 66102 arg19, 66103 arg20, 66104 arg21, 66105 arg22, 66106 arg23, 66107 arg24, 66108 arg25, 66109 arg26, 66110 arg27, 66111 arg28, 66112 arg29, 66113 arg30, 66114 arg31, 66115 arg32, 66116 arg33, 66117 arg34, 66118 arg35, 66119 arg36, 66120 arg37, 66121 arg38, 66122 arg39, 66123 arg40, 66124 arg41, 66125 arg42, 66126 arg43, 66127 arg44, 66128 arg45, 66129 arg46, 66130 arg47, 66131 arg48, 66132 arg49, 66133 arg50, 66134 arg51, 66135 arg52, 66136 arg53, 66137 arg54, 66138 arg55, 66139 arg56, 66140 arg57, 66141 arg58, 66142 arg59, 66143 arg60, 66144 arg61, 66145 arg62, 66146 arg63, 66147 arg64, 66148 arg65, 66149 arg66, 66150 arg67, 66151 arg68, 66152 arg69, 66153 arg70, 66154 arg71, 66155 arg72, 66156 arg73, 66157 arg74, 66158 arg75, 66159 arg76, 66160 arg77, 66161 arg78, 66162 arg79, 66163 arg80, 66164 arg81, 66165 arg82, 66166 arg83, 66167 arg84, 66168 arg85, 66169 arg86, 66170 arg87, 66171 arg88, 66172 arg89, 66173 arg90, 66174 arg91, 66175 arg92, 66176 arg93, 66177 arg94, 66178 arg95, 66179 arg96, 66180 arg97, 66181 arg98, 66182 arg99, 66183 arg100, 66184 arg101, 66185 arg102, 66186 arg103, 66187 arg104, 66188 arg105, 66189 arg106, 66190 arg107, 66191 arg108, 66192 arg109, 66193 arg110, 66194 arg111, 66195 arg112, 66196 arg113, 66197 arg114, 66198 arg115); 66199 } 66200 66201 operator type_ () 66202 { 66203 return type_(*this); 66204 } 66205 66206 }; 66207 66208 template< 66209 typename T0, 66210 typename T1, 66211 typename T2, 66212 typename T3, 66213 typename T4, 66214 typename T5, 66215 typename T6, 66216 typename T7, 66217 typename T8, 66218 typename T9, 66219 typename T10, 66220 typename T11, 66221 typename T12, 66222 typename T13, 66223 typename T14, 66224 typename T15, 66225 typename T16, 66226 typename T17, 66227 typename T18, 66228 typename T19, 66229 typename T20, 66230 typename T21, 66231 typename T22, 66232 typename T23, 66233 typename T24, 66234 typename T25, 66235 typename T26, 66236 typename T27, 66237 typename T28, 66238 typename T29, 66239 typename T30, 66240 typename T31, 66241 typename T32, 66242 typename T33, 66243 typename T34, 66244 typename T35, 66245 typename T36, 66246 typename T37, 66247 typename T38, 66248 typename T39, 66249 typename T40, 66250 typename T41, 66251 typename T42, 66252 typename T43, 66253 typename T44, 66254 typename T45, 66255 typename T46, 66256 typename T47, 66257 typename T48, 66258 typename T49, 66259 typename T50, 66260 typename T51, 66261 typename T52, 66262 typename T53, 66263 typename T54, 66264 typename T55, 66265 typename T56, 66266 typename T57, 66267 typename T58, 66268 typename T59, 66269 typename T60, 66270 typename T61, 66271 typename T62, 66272 typename T63, 66273 typename T64, 66274 typename T65, 66275 typename T66, 66276 typename T67, 66277 typename T68, 66278 typename T69, 66279 typename T70, 66280 typename T71, 66281 typename T72, 66282 typename T73, 66283 typename T74, 66284 typename T75, 66285 typename T76, 66286 typename T77, 66287 typename T78, 66288 typename T79, 66289 typename T80, 66290 typename T81, 66291 typename T82, 66292 typename T83, 66293 typename T84, 66294 typename T85, 66295 typename T86, 66296 typename T87, 66297 typename T88, 66298 typename T89, 66299 typename T90, 66300 typename T91, 66301 typename T92, 66302 typename T93, 66303 typename T94, 66304 typename T95, 66305 typename T96, 66306 typename T97, 66307 typename T98, 66308 typename T99, 66309 typename T100, 66310 typename T101, 66311 typename T102, 66312 typename T103, 66313 typename T104, 66314 typename T105, 66315 typename T106, 66316 typename T107, 66317 typename T108, 66318 typename T109, 66319 typename T110, 66320 typename T111, 66321 typename T112, 66322 typename T113, 66323 typename T114, 66324 typename T115, 66325 typename T116> 66326 struct functionImplementation_< 66327 T0, 66328 T1, 66329 T2, 66330 T3, 66331 T4, 66332 T5, 66333 T6, 66334 T7, 66335 T8, 66336 T9, 66337 T10, 66338 T11, 66339 T12, 66340 T13, 66341 T14, 66342 T15, 66343 T16, 66344 T17, 66345 T18, 66346 T19, 66347 T20, 66348 T21, 66349 T22, 66350 T23, 66351 T24, 66352 T25, 66353 T26, 66354 T27, 66355 T28, 66356 T29, 66357 T30, 66358 T31, 66359 T32, 66360 T33, 66361 T34, 66362 T35, 66363 T36, 66364 T37, 66365 T38, 66366 T39, 66367 T40, 66368 T41, 66369 T42, 66370 T43, 66371 T44, 66372 T45, 66373 T46, 66374 T47, 66375 T48, 66376 T49, 66377 T50, 66378 T51, 66379 T52, 66380 T53, 66381 T54, 66382 T55, 66383 T56, 66384 T57, 66385 T58, 66386 T59, 66387 T60, 66388 T61, 66389 T62, 66390 T63, 66391 T64, 66392 T65, 66393 T66, 66394 T67, 66395 T68, 66396 T69, 66397 T70, 66398 T71, 66399 T72, 66400 T73, 66401 T74, 66402 T75, 66403 T76, 66404 T77, 66405 T78, 66406 T79, 66407 T80, 66408 T81, 66409 T82, 66410 T83, 66411 T84, 66412 T85, 66413 T86, 66414 T87, 66415 T88, 66416 T89, 66417 T90, 66418 T91, 66419 T92, 66420 T93, 66421 T94, 66422 T95, 66423 T96, 66424 T97, 66425 T98, 66426 T99, 66427 T100, 66428 T101, 66429 T102, 66430 T103, 66431 T104, 66432 T105, 66433 T106, 66434 T107, 66435 T108, 66436 T109, 66437 T110, 66438 T111, 66439 T112, 66440 T113, 66441 T114, 66442 T115, 66443 T116, 66444 NullType, 66445 NullType, 66446 NullType, 66447 NullType, 66448 NullType, 66449 NullType, 66450 NullType, 66451 NullType, 66452 NullType, 66453 NullType, 66454 NullType> 66455 { 66456 typedef detail::KernelFunctorGlobal< 66457 T0, 66458 T1, 66459 T2, 66460 T3, 66461 T4, 66462 T5, 66463 T6, 66464 T7, 66465 T8, 66466 T9, 66467 T10, 66468 T11, 66469 T12, 66470 T13, 66471 T14, 66472 T15, 66473 T16, 66474 T17, 66475 T18, 66476 T19, 66477 T20, 66478 T21, 66479 T22, 66480 T23, 66481 T24, 66482 T25, 66483 T26, 66484 T27, 66485 T28, 66486 T29, 66487 T30, 66488 T31, 66489 T32, 66490 T33, 66491 T34, 66492 T35, 66493 T36, 66494 T37, 66495 T38, 66496 T39, 66497 T40, 66498 T41, 66499 T42, 66500 T43, 66501 T44, 66502 T45, 66503 T46, 66504 T47, 66505 T48, 66506 T49, 66507 T50, 66508 T51, 66509 T52, 66510 T53, 66511 T54, 66512 T55, 66513 T56, 66514 T57, 66515 T58, 66516 T59, 66517 T60, 66518 T61, 66519 T62, 66520 T63, 66521 T64, 66522 T65, 66523 T66, 66524 T67, 66525 T68, 66526 T69, 66527 T70, 66528 T71, 66529 T72, 66530 T73, 66531 T74, 66532 T75, 66533 T76, 66534 T77, 66535 T78, 66536 T79, 66537 T80, 66538 T81, 66539 T82, 66540 T83, 66541 T84, 66542 T85, 66543 T86, 66544 T87, 66545 T88, 66546 T89, 66547 T90, 66548 T91, 66549 T92, 66550 T93, 66551 T94, 66552 T95, 66553 T96, 66554 T97, 66555 T98, 66556 T99, 66557 T100, 66558 T101, 66559 T102, 66560 T103, 66561 T104, 66562 T105, 66563 T106, 66564 T107, 66565 T108, 66566 T109, 66567 T110, 66568 T111, 66569 T112, 66570 T113, 66571 T114, 66572 T115, 66573 T116, 66574 NullType, 66575 NullType, 66576 NullType, 66577 NullType, 66578 NullType, 66579 NullType, 66580 NullType, 66581 NullType, 66582 NullType, 66583 NullType, 66584 NullType> FunctorType; 66585 66586 FunctorType functor_; 66587 66588 functionImplementation_(const FunctorType &functor) : 66589 functor_(functor) 66590 { 66591 } 66592 66593 typedef std::tr1::function<Event ( 66594 const EnqueueArgs&, 66595 T0, 66596 T1, 66597 T2, 66598 T3, 66599 T4, 66600 T5, 66601 T6, 66602 T7, 66603 T8, 66604 T9, 66605 T10, 66606 T11, 66607 T12, 66608 T13, 66609 T14, 66610 T15, 66611 T16, 66612 T17, 66613 T18, 66614 T19, 66615 T20, 66616 T21, 66617 T22, 66618 T23, 66619 T24, 66620 T25, 66621 T26, 66622 T27, 66623 T28, 66624 T29, 66625 T30, 66626 T31, 66627 T32, 66628 T33, 66629 T34, 66630 T35, 66631 T36, 66632 T37, 66633 T38, 66634 T39, 66635 T40, 66636 T41, 66637 T42, 66638 T43, 66639 T44, 66640 T45, 66641 T46, 66642 T47, 66643 T48, 66644 T49, 66645 T50, 66646 T51, 66647 T52, 66648 T53, 66649 T54, 66650 T55, 66651 T56, 66652 T57, 66653 T58, 66654 T59, 66655 T60, 66656 T61, 66657 T62, 66658 T63, 66659 T64, 66660 T65, 66661 T66, 66662 T67, 66663 T68, 66664 T69, 66665 T70, 66666 T71, 66667 T72, 66668 T73, 66669 T74, 66670 T75, 66671 T76, 66672 T77, 66673 T78, 66674 T79, 66675 T80, 66676 T81, 66677 T82, 66678 T83, 66679 T84, 66680 T85, 66681 T86, 66682 T87, 66683 T88, 66684 T89, 66685 T90, 66686 T91, 66687 T92, 66688 T93, 66689 T94, 66690 T95, 66691 T96, 66692 T97, 66693 T98, 66694 T99, 66695 T100, 66696 T101, 66697 T102, 66698 T103, 66699 T104, 66700 T105, 66701 T106, 66702 T107, 66703 T108, 66704 T109, 66705 T110, 66706 T111, 66707 T112, 66708 T113, 66709 T114, 66710 T115, 66711 T116)> type_; 66712 66713 Event operator()(const EnqueueArgs& enqueueArgs, 66714 T0 arg0, 66715 T1 arg1, 66716 T2 arg2, 66717 T3 arg3, 66718 T4 arg4, 66719 T5 arg5, 66720 T6 arg6, 66721 T7 arg7, 66722 T8 arg8, 66723 T9 arg9, 66724 T10 arg10, 66725 T11 arg11, 66726 T12 arg12, 66727 T13 arg13, 66728 T14 arg14, 66729 T15 arg15, 66730 T16 arg16, 66731 T17 arg17, 66732 T18 arg18, 66733 T19 arg19, 66734 T20 arg20, 66735 T21 arg21, 66736 T22 arg22, 66737 T23 arg23, 66738 T24 arg24, 66739 T25 arg25, 66740 T26 arg26, 66741 T27 arg27, 66742 T28 arg28, 66743 T29 arg29, 66744 T30 arg30, 66745 T31 arg31, 66746 T32 arg32, 66747 T33 arg33, 66748 T34 arg34, 66749 T35 arg35, 66750 T36 arg36, 66751 T37 arg37, 66752 T38 arg38, 66753 T39 arg39, 66754 T40 arg40, 66755 T41 arg41, 66756 T42 arg42, 66757 T43 arg43, 66758 T44 arg44, 66759 T45 arg45, 66760 T46 arg46, 66761 T47 arg47, 66762 T48 arg48, 66763 T49 arg49, 66764 T50 arg50, 66765 T51 arg51, 66766 T52 arg52, 66767 T53 arg53, 66768 T54 arg54, 66769 T55 arg55, 66770 T56 arg56, 66771 T57 arg57, 66772 T58 arg58, 66773 T59 arg59, 66774 T60 arg60, 66775 T61 arg61, 66776 T62 arg62, 66777 T63 arg63, 66778 T64 arg64, 66779 T65 arg65, 66780 T66 arg66, 66781 T67 arg67, 66782 T68 arg68, 66783 T69 arg69, 66784 T70 arg70, 66785 T71 arg71, 66786 T72 arg72, 66787 T73 arg73, 66788 T74 arg74, 66789 T75 arg75, 66790 T76 arg76, 66791 T77 arg77, 66792 T78 arg78, 66793 T79 arg79, 66794 T80 arg80, 66795 T81 arg81, 66796 T82 arg82, 66797 T83 arg83, 66798 T84 arg84, 66799 T85 arg85, 66800 T86 arg86, 66801 T87 arg87, 66802 T88 arg88, 66803 T89 arg89, 66804 T90 arg90, 66805 T91 arg91, 66806 T92 arg92, 66807 T93 arg93, 66808 T94 arg94, 66809 T95 arg95, 66810 T96 arg96, 66811 T97 arg97, 66812 T98 arg98, 66813 T99 arg99, 66814 T100 arg100, 66815 T101 arg101, 66816 T102 arg102, 66817 T103 arg103, 66818 T104 arg104, 66819 T105 arg105, 66820 T106 arg106, 66821 T107 arg107, 66822 T108 arg108, 66823 T109 arg109, 66824 T110 arg110, 66825 T111 arg111, 66826 T112 arg112, 66827 T113 arg113, 66828 T114 arg114, 66829 T115 arg115, 66830 T116 arg116) 66831 { 66832 return functor_( 66833 enqueueArgs, 66834 arg0, 66835 arg1, 66836 arg2, 66837 arg3, 66838 arg4, 66839 arg5, 66840 arg6, 66841 arg7, 66842 arg8, 66843 arg9, 66844 arg10, 66845 arg11, 66846 arg12, 66847 arg13, 66848 arg14, 66849 arg15, 66850 arg16, 66851 arg17, 66852 arg18, 66853 arg19, 66854 arg20, 66855 arg21, 66856 arg22, 66857 arg23, 66858 arg24, 66859 arg25, 66860 arg26, 66861 arg27, 66862 arg28, 66863 arg29, 66864 arg30, 66865 arg31, 66866 arg32, 66867 arg33, 66868 arg34, 66869 arg35, 66870 arg36, 66871 arg37, 66872 arg38, 66873 arg39, 66874 arg40, 66875 arg41, 66876 arg42, 66877 arg43, 66878 arg44, 66879 arg45, 66880 arg46, 66881 arg47, 66882 arg48, 66883 arg49, 66884 arg50, 66885 arg51, 66886 arg52, 66887 arg53, 66888 arg54, 66889 arg55, 66890 arg56, 66891 arg57, 66892 arg58, 66893 arg59, 66894 arg60, 66895 arg61, 66896 arg62, 66897 arg63, 66898 arg64, 66899 arg65, 66900 arg66, 66901 arg67, 66902 arg68, 66903 arg69, 66904 arg70, 66905 arg71, 66906 arg72, 66907 arg73, 66908 arg74, 66909 arg75, 66910 arg76, 66911 arg77, 66912 arg78, 66913 arg79, 66914 arg80, 66915 arg81, 66916 arg82, 66917 arg83, 66918 arg84, 66919 arg85, 66920 arg86, 66921 arg87, 66922 arg88, 66923 arg89, 66924 arg90, 66925 arg91, 66926 arg92, 66927 arg93, 66928 arg94, 66929 arg95, 66930 arg96, 66931 arg97, 66932 arg98, 66933 arg99, 66934 arg100, 66935 arg101, 66936 arg102, 66937 arg103, 66938 arg104, 66939 arg105, 66940 arg106, 66941 arg107, 66942 arg108, 66943 arg109, 66944 arg110, 66945 arg111, 66946 arg112, 66947 arg113, 66948 arg114, 66949 arg115, 66950 arg116); 66951 } 66952 66953 operator type_ () 66954 { 66955 return type_(*this); 66956 } 66957 66958 }; 66959 66960 template< 66961 typename T0, 66962 typename T1, 66963 typename T2, 66964 typename T3, 66965 typename T4, 66966 typename T5, 66967 typename T6, 66968 typename T7, 66969 typename T8, 66970 typename T9, 66971 typename T10, 66972 typename T11, 66973 typename T12, 66974 typename T13, 66975 typename T14, 66976 typename T15, 66977 typename T16, 66978 typename T17, 66979 typename T18, 66980 typename T19, 66981 typename T20, 66982 typename T21, 66983 typename T22, 66984 typename T23, 66985 typename T24, 66986 typename T25, 66987 typename T26, 66988 typename T27, 66989 typename T28, 66990 typename T29, 66991 typename T30, 66992 typename T31, 66993 typename T32, 66994 typename T33, 66995 typename T34, 66996 typename T35, 66997 typename T36, 66998 typename T37, 66999 typename T38, 67000 typename T39, 67001 typename T40, 67002 typename T41, 67003 typename T42, 67004 typename T43, 67005 typename T44, 67006 typename T45, 67007 typename T46, 67008 typename T47, 67009 typename T48, 67010 typename T49, 67011 typename T50, 67012 typename T51, 67013 typename T52, 67014 typename T53, 67015 typename T54, 67016 typename T55, 67017 typename T56, 67018 typename T57, 67019 typename T58, 67020 typename T59, 67021 typename T60, 67022 typename T61, 67023 typename T62, 67024 typename T63, 67025 typename T64, 67026 typename T65, 67027 typename T66, 67028 typename T67, 67029 typename T68, 67030 typename T69, 67031 typename T70, 67032 typename T71, 67033 typename T72, 67034 typename T73, 67035 typename T74, 67036 typename T75, 67037 typename T76, 67038 typename T77, 67039 typename T78, 67040 typename T79, 67041 typename T80, 67042 typename T81, 67043 typename T82, 67044 typename T83, 67045 typename T84, 67046 typename T85, 67047 typename T86, 67048 typename T87, 67049 typename T88, 67050 typename T89, 67051 typename T90, 67052 typename T91, 67053 typename T92, 67054 typename T93, 67055 typename T94, 67056 typename T95, 67057 typename T96, 67058 typename T97, 67059 typename T98, 67060 typename T99, 67061 typename T100, 67062 typename T101, 67063 typename T102, 67064 typename T103, 67065 typename T104, 67066 typename T105, 67067 typename T106, 67068 typename T107, 67069 typename T108, 67070 typename T109, 67071 typename T110, 67072 typename T111, 67073 typename T112, 67074 typename T113, 67075 typename T114, 67076 typename T115, 67077 typename T116, 67078 typename T117> 67079 struct functionImplementation_< 67080 T0, 67081 T1, 67082 T2, 67083 T3, 67084 T4, 67085 T5, 67086 T6, 67087 T7, 67088 T8, 67089 T9, 67090 T10, 67091 T11, 67092 T12, 67093 T13, 67094 T14, 67095 T15, 67096 T16, 67097 T17, 67098 T18, 67099 T19, 67100 T20, 67101 T21, 67102 T22, 67103 T23, 67104 T24, 67105 T25, 67106 T26, 67107 T27, 67108 T28, 67109 T29, 67110 T30, 67111 T31, 67112 T32, 67113 T33, 67114 T34, 67115 T35, 67116 T36, 67117 T37, 67118 T38, 67119 T39, 67120 T40, 67121 T41, 67122 T42, 67123 T43, 67124 T44, 67125 T45, 67126 T46, 67127 T47, 67128 T48, 67129 T49, 67130 T50, 67131 T51, 67132 T52, 67133 T53, 67134 T54, 67135 T55, 67136 T56, 67137 T57, 67138 T58, 67139 T59, 67140 T60, 67141 T61, 67142 T62, 67143 T63, 67144 T64, 67145 T65, 67146 T66, 67147 T67, 67148 T68, 67149 T69, 67150 T70, 67151 T71, 67152 T72, 67153 T73, 67154 T74, 67155 T75, 67156 T76, 67157 T77, 67158 T78, 67159 T79, 67160 T80, 67161 T81, 67162 T82, 67163 T83, 67164 T84, 67165 T85, 67166 T86, 67167 T87, 67168 T88, 67169 T89, 67170 T90, 67171 T91, 67172 T92, 67173 T93, 67174 T94, 67175 T95, 67176 T96, 67177 T97, 67178 T98, 67179 T99, 67180 T100, 67181 T101, 67182 T102, 67183 T103, 67184 T104, 67185 T105, 67186 T106, 67187 T107, 67188 T108, 67189 T109, 67190 T110, 67191 T111, 67192 T112, 67193 T113, 67194 T114, 67195 T115, 67196 T116, 67197 T117, 67198 NullType, 67199 NullType, 67200 NullType, 67201 NullType, 67202 NullType, 67203 NullType, 67204 NullType, 67205 NullType, 67206 NullType, 67207 NullType> 67208 { 67209 typedef detail::KernelFunctorGlobal< 67210 T0, 67211 T1, 67212 T2, 67213 T3, 67214 T4, 67215 T5, 67216 T6, 67217 T7, 67218 T8, 67219 T9, 67220 T10, 67221 T11, 67222 T12, 67223 T13, 67224 T14, 67225 T15, 67226 T16, 67227 T17, 67228 T18, 67229 T19, 67230 T20, 67231 T21, 67232 T22, 67233 T23, 67234 T24, 67235 T25, 67236 T26, 67237 T27, 67238 T28, 67239 T29, 67240 T30, 67241 T31, 67242 T32, 67243 T33, 67244 T34, 67245 T35, 67246 T36, 67247 T37, 67248 T38, 67249 T39, 67250 T40, 67251 T41, 67252 T42, 67253 T43, 67254 T44, 67255 T45, 67256 T46, 67257 T47, 67258 T48, 67259 T49, 67260 T50, 67261 T51, 67262 T52, 67263 T53, 67264 T54, 67265 T55, 67266 T56, 67267 T57, 67268 T58, 67269 T59, 67270 T60, 67271 T61, 67272 T62, 67273 T63, 67274 T64, 67275 T65, 67276 T66, 67277 T67, 67278 T68, 67279 T69, 67280 T70, 67281 T71, 67282 T72, 67283 T73, 67284 T74, 67285 T75, 67286 T76, 67287 T77, 67288 T78, 67289 T79, 67290 T80, 67291 T81, 67292 T82, 67293 T83, 67294 T84, 67295 T85, 67296 T86, 67297 T87, 67298 T88, 67299 T89, 67300 T90, 67301 T91, 67302 T92, 67303 T93, 67304 T94, 67305 T95, 67306 T96, 67307 T97, 67308 T98, 67309 T99, 67310 T100, 67311 T101, 67312 T102, 67313 T103, 67314 T104, 67315 T105, 67316 T106, 67317 T107, 67318 T108, 67319 T109, 67320 T110, 67321 T111, 67322 T112, 67323 T113, 67324 T114, 67325 T115, 67326 T116, 67327 T117, 67328 NullType, 67329 NullType, 67330 NullType, 67331 NullType, 67332 NullType, 67333 NullType, 67334 NullType, 67335 NullType, 67336 NullType, 67337 NullType> FunctorType; 67338 67339 FunctorType functor_; 67340 67341 functionImplementation_(const FunctorType &functor) : 67342 functor_(functor) 67343 { 67344 } 67345 67346 typedef std::tr1::function<Event ( 67347 const EnqueueArgs&, 67348 T0, 67349 T1, 67350 T2, 67351 T3, 67352 T4, 67353 T5, 67354 T6, 67355 T7, 67356 T8, 67357 T9, 67358 T10, 67359 T11, 67360 T12, 67361 T13, 67362 T14, 67363 T15, 67364 T16, 67365 T17, 67366 T18, 67367 T19, 67368 T20, 67369 T21, 67370 T22, 67371 T23, 67372 T24, 67373 T25, 67374 T26, 67375 T27, 67376 T28, 67377 T29, 67378 T30, 67379 T31, 67380 T32, 67381 T33, 67382 T34, 67383 T35, 67384 T36, 67385 T37, 67386 T38, 67387 T39, 67388 T40, 67389 T41, 67390 T42, 67391 T43, 67392 T44, 67393 T45, 67394 T46, 67395 T47, 67396 T48, 67397 T49, 67398 T50, 67399 T51, 67400 T52, 67401 T53, 67402 T54, 67403 T55, 67404 T56, 67405 T57, 67406 T58, 67407 T59, 67408 T60, 67409 T61, 67410 T62, 67411 T63, 67412 T64, 67413 T65, 67414 T66, 67415 T67, 67416 T68, 67417 T69, 67418 T70, 67419 T71, 67420 T72, 67421 T73, 67422 T74, 67423 T75, 67424 T76, 67425 T77, 67426 T78, 67427 T79, 67428 T80, 67429 T81, 67430 T82, 67431 T83, 67432 T84, 67433 T85, 67434 T86, 67435 T87, 67436 T88, 67437 T89, 67438 T90, 67439 T91, 67440 T92, 67441 T93, 67442 T94, 67443 T95, 67444 T96, 67445 T97, 67446 T98, 67447 T99, 67448 T100, 67449 T101, 67450 T102, 67451 T103, 67452 T104, 67453 T105, 67454 T106, 67455 T107, 67456 T108, 67457 T109, 67458 T110, 67459 T111, 67460 T112, 67461 T113, 67462 T114, 67463 T115, 67464 T116, 67465 T117)> type_; 67466 67467 Event operator()(const EnqueueArgs& enqueueArgs, 67468 T0 arg0, 67469 T1 arg1, 67470 T2 arg2, 67471 T3 arg3, 67472 T4 arg4, 67473 T5 arg5, 67474 T6 arg6, 67475 T7 arg7, 67476 T8 arg8, 67477 T9 arg9, 67478 T10 arg10, 67479 T11 arg11, 67480 T12 arg12, 67481 T13 arg13, 67482 T14 arg14, 67483 T15 arg15, 67484 T16 arg16, 67485 T17 arg17, 67486 T18 arg18, 67487 T19 arg19, 67488 T20 arg20, 67489 T21 arg21, 67490 T22 arg22, 67491 T23 arg23, 67492 T24 arg24, 67493 T25 arg25, 67494 T26 arg26, 67495 T27 arg27, 67496 T28 arg28, 67497 T29 arg29, 67498 T30 arg30, 67499 T31 arg31, 67500 T32 arg32, 67501 T33 arg33, 67502 T34 arg34, 67503 T35 arg35, 67504 T36 arg36, 67505 T37 arg37, 67506 T38 arg38, 67507 T39 arg39, 67508 T40 arg40, 67509 T41 arg41, 67510 T42 arg42, 67511 T43 arg43, 67512 T44 arg44, 67513 T45 arg45, 67514 T46 arg46, 67515 T47 arg47, 67516 T48 arg48, 67517 T49 arg49, 67518 T50 arg50, 67519 T51 arg51, 67520 T52 arg52, 67521 T53 arg53, 67522 T54 arg54, 67523 T55 arg55, 67524 T56 arg56, 67525 T57 arg57, 67526 T58 arg58, 67527 T59 arg59, 67528 T60 arg60, 67529 T61 arg61, 67530 T62 arg62, 67531 T63 arg63, 67532 T64 arg64, 67533 T65 arg65, 67534 T66 arg66, 67535 T67 arg67, 67536 T68 arg68, 67537 T69 arg69, 67538 T70 arg70, 67539 T71 arg71, 67540 T72 arg72, 67541 T73 arg73, 67542 T74 arg74, 67543 T75 arg75, 67544 T76 arg76, 67545 T77 arg77, 67546 T78 arg78, 67547 T79 arg79, 67548 T80 arg80, 67549 T81 arg81, 67550 T82 arg82, 67551 T83 arg83, 67552 T84 arg84, 67553 T85 arg85, 67554 T86 arg86, 67555 T87 arg87, 67556 T88 arg88, 67557 T89 arg89, 67558 T90 arg90, 67559 T91 arg91, 67560 T92 arg92, 67561 T93 arg93, 67562 T94 arg94, 67563 T95 arg95, 67564 T96 arg96, 67565 T97 arg97, 67566 T98 arg98, 67567 T99 arg99, 67568 T100 arg100, 67569 T101 arg101, 67570 T102 arg102, 67571 T103 arg103, 67572 T104 arg104, 67573 T105 arg105, 67574 T106 arg106, 67575 T107 arg107, 67576 T108 arg108, 67577 T109 arg109, 67578 T110 arg110, 67579 T111 arg111, 67580 T112 arg112, 67581 T113 arg113, 67582 T114 arg114, 67583 T115 arg115, 67584 T116 arg116, 67585 T117 arg117) 67586 { 67587 return functor_( 67588 enqueueArgs, 67589 arg0, 67590 arg1, 67591 arg2, 67592 arg3, 67593 arg4, 67594 arg5, 67595 arg6, 67596 arg7, 67597 arg8, 67598 arg9, 67599 arg10, 67600 arg11, 67601 arg12, 67602 arg13, 67603 arg14, 67604 arg15, 67605 arg16, 67606 arg17, 67607 arg18, 67608 arg19, 67609 arg20, 67610 arg21, 67611 arg22, 67612 arg23, 67613 arg24, 67614 arg25, 67615 arg26, 67616 arg27, 67617 arg28, 67618 arg29, 67619 arg30, 67620 arg31, 67621 arg32, 67622 arg33, 67623 arg34, 67624 arg35, 67625 arg36, 67626 arg37, 67627 arg38, 67628 arg39, 67629 arg40, 67630 arg41, 67631 arg42, 67632 arg43, 67633 arg44, 67634 arg45, 67635 arg46, 67636 arg47, 67637 arg48, 67638 arg49, 67639 arg50, 67640 arg51, 67641 arg52, 67642 arg53, 67643 arg54, 67644 arg55, 67645 arg56, 67646 arg57, 67647 arg58, 67648 arg59, 67649 arg60, 67650 arg61, 67651 arg62, 67652 arg63, 67653 arg64, 67654 arg65, 67655 arg66, 67656 arg67, 67657 arg68, 67658 arg69, 67659 arg70, 67660 arg71, 67661 arg72, 67662 arg73, 67663 arg74, 67664 arg75, 67665 arg76, 67666 arg77, 67667 arg78, 67668 arg79, 67669 arg80, 67670 arg81, 67671 arg82, 67672 arg83, 67673 arg84, 67674 arg85, 67675 arg86, 67676 arg87, 67677 arg88, 67678 arg89, 67679 arg90, 67680 arg91, 67681 arg92, 67682 arg93, 67683 arg94, 67684 arg95, 67685 arg96, 67686 arg97, 67687 arg98, 67688 arg99, 67689 arg100, 67690 arg101, 67691 arg102, 67692 arg103, 67693 arg104, 67694 arg105, 67695 arg106, 67696 arg107, 67697 arg108, 67698 arg109, 67699 arg110, 67700 arg111, 67701 arg112, 67702 arg113, 67703 arg114, 67704 arg115, 67705 arg116, 67706 arg117); 67707 } 67708 67709 operator type_ () 67710 { 67711 return type_(*this); 67712 } 67713 67714 }; 67715 67716 template< 67717 typename T0, 67718 typename T1, 67719 typename T2, 67720 typename T3, 67721 typename T4, 67722 typename T5, 67723 typename T6, 67724 typename T7, 67725 typename T8, 67726 typename T9, 67727 typename T10, 67728 typename T11, 67729 typename T12, 67730 typename T13, 67731 typename T14, 67732 typename T15, 67733 typename T16, 67734 typename T17, 67735 typename T18, 67736 typename T19, 67737 typename T20, 67738 typename T21, 67739 typename T22, 67740 typename T23, 67741 typename T24, 67742 typename T25, 67743 typename T26, 67744 typename T27, 67745 typename T28, 67746 typename T29, 67747 typename T30, 67748 typename T31, 67749 typename T32, 67750 typename T33, 67751 typename T34, 67752 typename T35, 67753 typename T36, 67754 typename T37, 67755 typename T38, 67756 typename T39, 67757 typename T40, 67758 typename T41, 67759 typename T42, 67760 typename T43, 67761 typename T44, 67762 typename T45, 67763 typename T46, 67764 typename T47, 67765 typename T48, 67766 typename T49, 67767 typename T50, 67768 typename T51, 67769 typename T52, 67770 typename T53, 67771 typename T54, 67772 typename T55, 67773 typename T56, 67774 typename T57, 67775 typename T58, 67776 typename T59, 67777 typename T60, 67778 typename T61, 67779 typename T62, 67780 typename T63, 67781 typename T64, 67782 typename T65, 67783 typename T66, 67784 typename T67, 67785 typename T68, 67786 typename T69, 67787 typename T70, 67788 typename T71, 67789 typename T72, 67790 typename T73, 67791 typename T74, 67792 typename T75, 67793 typename T76, 67794 typename T77, 67795 typename T78, 67796 typename T79, 67797 typename T80, 67798 typename T81, 67799 typename T82, 67800 typename T83, 67801 typename T84, 67802 typename T85, 67803 typename T86, 67804 typename T87, 67805 typename T88, 67806 typename T89, 67807 typename T90, 67808 typename T91, 67809 typename T92, 67810 typename T93, 67811 typename T94, 67812 typename T95, 67813 typename T96, 67814 typename T97, 67815 typename T98, 67816 typename T99, 67817 typename T100, 67818 typename T101, 67819 typename T102, 67820 typename T103, 67821 typename T104, 67822 typename T105, 67823 typename T106, 67824 typename T107, 67825 typename T108, 67826 typename T109, 67827 typename T110, 67828 typename T111, 67829 typename T112, 67830 typename T113, 67831 typename T114, 67832 typename T115, 67833 typename T116, 67834 typename T117, 67835 typename T118> 67836 struct functionImplementation_< 67837 T0, 67838 T1, 67839 T2, 67840 T3, 67841 T4, 67842 T5, 67843 T6, 67844 T7, 67845 T8, 67846 T9, 67847 T10, 67848 T11, 67849 T12, 67850 T13, 67851 T14, 67852 T15, 67853 T16, 67854 T17, 67855 T18, 67856 T19, 67857 T20, 67858 T21, 67859 T22, 67860 T23, 67861 T24, 67862 T25, 67863 T26, 67864 T27, 67865 T28, 67866 T29, 67867 T30, 67868 T31, 67869 T32, 67870 T33, 67871 T34, 67872 T35, 67873 T36, 67874 T37, 67875 T38, 67876 T39, 67877 T40, 67878 T41, 67879 T42, 67880 T43, 67881 T44, 67882 T45, 67883 T46, 67884 T47, 67885 T48, 67886 T49, 67887 T50, 67888 T51, 67889 T52, 67890 T53, 67891 T54, 67892 T55, 67893 T56, 67894 T57, 67895 T58, 67896 T59, 67897 T60, 67898 T61, 67899 T62, 67900 T63, 67901 T64, 67902 T65, 67903 T66, 67904 T67, 67905 T68, 67906 T69, 67907 T70, 67908 T71, 67909 T72, 67910 T73, 67911 T74, 67912 T75, 67913 T76, 67914 T77, 67915 T78, 67916 T79, 67917 T80, 67918 T81, 67919 T82, 67920 T83, 67921 T84, 67922 T85, 67923 T86, 67924 T87, 67925 T88, 67926 T89, 67927 T90, 67928 T91, 67929 T92, 67930 T93, 67931 T94, 67932 T95, 67933 T96, 67934 T97, 67935 T98, 67936 T99, 67937 T100, 67938 T101, 67939 T102, 67940 T103, 67941 T104, 67942 T105, 67943 T106, 67944 T107, 67945 T108, 67946 T109, 67947 T110, 67948 T111, 67949 T112, 67950 T113, 67951 T114, 67952 T115, 67953 T116, 67954 T117, 67955 T118, 67956 NullType, 67957 NullType, 67958 NullType, 67959 NullType, 67960 NullType, 67961 NullType, 67962 NullType, 67963 NullType, 67964 NullType> 67965 { 67966 typedef detail::KernelFunctorGlobal< 67967 T0, 67968 T1, 67969 T2, 67970 T3, 67971 T4, 67972 T5, 67973 T6, 67974 T7, 67975 T8, 67976 T9, 67977 T10, 67978 T11, 67979 T12, 67980 T13, 67981 T14, 67982 T15, 67983 T16, 67984 T17, 67985 T18, 67986 T19, 67987 T20, 67988 T21, 67989 T22, 67990 T23, 67991 T24, 67992 T25, 67993 T26, 67994 T27, 67995 T28, 67996 T29, 67997 T30, 67998 T31, 67999 T32, 68000 T33, 68001 T34, 68002 T35, 68003 T36, 68004 T37, 68005 T38, 68006 T39, 68007 T40, 68008 T41, 68009 T42, 68010 T43, 68011 T44, 68012 T45, 68013 T46, 68014 T47, 68015 T48, 68016 T49, 68017 T50, 68018 T51, 68019 T52, 68020 T53, 68021 T54, 68022 T55, 68023 T56, 68024 T57, 68025 T58, 68026 T59, 68027 T60, 68028 T61, 68029 T62, 68030 T63, 68031 T64, 68032 T65, 68033 T66, 68034 T67, 68035 T68, 68036 T69, 68037 T70, 68038 T71, 68039 T72, 68040 T73, 68041 T74, 68042 T75, 68043 T76, 68044 T77, 68045 T78, 68046 T79, 68047 T80, 68048 T81, 68049 T82, 68050 T83, 68051 T84, 68052 T85, 68053 T86, 68054 T87, 68055 T88, 68056 T89, 68057 T90, 68058 T91, 68059 T92, 68060 T93, 68061 T94, 68062 T95, 68063 T96, 68064 T97, 68065 T98, 68066 T99, 68067 T100, 68068 T101, 68069 T102, 68070 T103, 68071 T104, 68072 T105, 68073 T106, 68074 T107, 68075 T108, 68076 T109, 68077 T110, 68078 T111, 68079 T112, 68080 T113, 68081 T114, 68082 T115, 68083 T116, 68084 T117, 68085 T118, 68086 NullType, 68087 NullType, 68088 NullType, 68089 NullType, 68090 NullType, 68091 NullType, 68092 NullType, 68093 NullType, 68094 NullType> FunctorType; 68095 68096 FunctorType functor_; 68097 68098 functionImplementation_(const FunctorType &functor) : 68099 functor_(functor) 68100 { 68101 } 68102 68103 typedef std::tr1::function<Event ( 68104 const EnqueueArgs&, 68105 T0, 68106 T1, 68107 T2, 68108 T3, 68109 T4, 68110 T5, 68111 T6, 68112 T7, 68113 T8, 68114 T9, 68115 T10, 68116 T11, 68117 T12, 68118 T13, 68119 T14, 68120 T15, 68121 T16, 68122 T17, 68123 T18, 68124 T19, 68125 T20, 68126 T21, 68127 T22, 68128 T23, 68129 T24, 68130 T25, 68131 T26, 68132 T27, 68133 T28, 68134 T29, 68135 T30, 68136 T31, 68137 T32, 68138 T33, 68139 T34, 68140 T35, 68141 T36, 68142 T37, 68143 T38, 68144 T39, 68145 T40, 68146 T41, 68147 T42, 68148 T43, 68149 T44, 68150 T45, 68151 T46, 68152 T47, 68153 T48, 68154 T49, 68155 T50, 68156 T51, 68157 T52, 68158 T53, 68159 T54, 68160 T55, 68161 T56, 68162 T57, 68163 T58, 68164 T59, 68165 T60, 68166 T61, 68167 T62, 68168 T63, 68169 T64, 68170 T65, 68171 T66, 68172 T67, 68173 T68, 68174 T69, 68175 T70, 68176 T71, 68177 T72, 68178 T73, 68179 T74, 68180 T75, 68181 T76, 68182 T77, 68183 T78, 68184 T79, 68185 T80, 68186 T81, 68187 T82, 68188 T83, 68189 T84, 68190 T85, 68191 T86, 68192 T87, 68193 T88, 68194 T89, 68195 T90, 68196 T91, 68197 T92, 68198 T93, 68199 T94, 68200 T95, 68201 T96, 68202 T97, 68203 T98, 68204 T99, 68205 T100, 68206 T101, 68207 T102, 68208 T103, 68209 T104, 68210 T105, 68211 T106, 68212 T107, 68213 T108, 68214 T109, 68215 T110, 68216 T111, 68217 T112, 68218 T113, 68219 T114, 68220 T115, 68221 T116, 68222 T117, 68223 T118)> type_; 68224 68225 Event operator()(const EnqueueArgs& enqueueArgs, 68226 T0 arg0, 68227 T1 arg1, 68228 T2 arg2, 68229 T3 arg3, 68230 T4 arg4, 68231 T5 arg5, 68232 T6 arg6, 68233 T7 arg7, 68234 T8 arg8, 68235 T9 arg9, 68236 T10 arg10, 68237 T11 arg11, 68238 T12 arg12, 68239 T13 arg13, 68240 T14 arg14, 68241 T15 arg15, 68242 T16 arg16, 68243 T17 arg17, 68244 T18 arg18, 68245 T19 arg19, 68246 T20 arg20, 68247 T21 arg21, 68248 T22 arg22, 68249 T23 arg23, 68250 T24 arg24, 68251 T25 arg25, 68252 T26 arg26, 68253 T27 arg27, 68254 T28 arg28, 68255 T29 arg29, 68256 T30 arg30, 68257 T31 arg31, 68258 T32 arg32, 68259 T33 arg33, 68260 T34 arg34, 68261 T35 arg35, 68262 T36 arg36, 68263 T37 arg37, 68264 T38 arg38, 68265 T39 arg39, 68266 T40 arg40, 68267 T41 arg41, 68268 T42 arg42, 68269 T43 arg43, 68270 T44 arg44, 68271 T45 arg45, 68272 T46 arg46, 68273 T47 arg47, 68274 T48 arg48, 68275 T49 arg49, 68276 T50 arg50, 68277 T51 arg51, 68278 T52 arg52, 68279 T53 arg53, 68280 T54 arg54, 68281 T55 arg55, 68282 T56 arg56, 68283 T57 arg57, 68284 T58 arg58, 68285 T59 arg59, 68286 T60 arg60, 68287 T61 arg61, 68288 T62 arg62, 68289 T63 arg63, 68290 T64 arg64, 68291 T65 arg65, 68292 T66 arg66, 68293 T67 arg67, 68294 T68 arg68, 68295 T69 arg69, 68296 T70 arg70, 68297 T71 arg71, 68298 T72 arg72, 68299 T73 arg73, 68300 T74 arg74, 68301 T75 arg75, 68302 T76 arg76, 68303 T77 arg77, 68304 T78 arg78, 68305 T79 arg79, 68306 T80 arg80, 68307 T81 arg81, 68308 T82 arg82, 68309 T83 arg83, 68310 T84 arg84, 68311 T85 arg85, 68312 T86 arg86, 68313 T87 arg87, 68314 T88 arg88, 68315 T89 arg89, 68316 T90 arg90, 68317 T91 arg91, 68318 T92 arg92, 68319 T93 arg93, 68320 T94 arg94, 68321 T95 arg95, 68322 T96 arg96, 68323 T97 arg97, 68324 T98 arg98, 68325 T99 arg99, 68326 T100 arg100, 68327 T101 arg101, 68328 T102 arg102, 68329 T103 arg103, 68330 T104 arg104, 68331 T105 arg105, 68332 T106 arg106, 68333 T107 arg107, 68334 T108 arg108, 68335 T109 arg109, 68336 T110 arg110, 68337 T111 arg111, 68338 T112 arg112, 68339 T113 arg113, 68340 T114 arg114, 68341 T115 arg115, 68342 T116 arg116, 68343 T117 arg117, 68344 T118 arg118) 68345 { 68346 return functor_( 68347 enqueueArgs, 68348 arg0, 68349 arg1, 68350 arg2, 68351 arg3, 68352 arg4, 68353 arg5, 68354 arg6, 68355 arg7, 68356 arg8, 68357 arg9, 68358 arg10, 68359 arg11, 68360 arg12, 68361 arg13, 68362 arg14, 68363 arg15, 68364 arg16, 68365 arg17, 68366 arg18, 68367 arg19, 68368 arg20, 68369 arg21, 68370 arg22, 68371 arg23, 68372 arg24, 68373 arg25, 68374 arg26, 68375 arg27, 68376 arg28, 68377 arg29, 68378 arg30, 68379 arg31, 68380 arg32, 68381 arg33, 68382 arg34, 68383 arg35, 68384 arg36, 68385 arg37, 68386 arg38, 68387 arg39, 68388 arg40, 68389 arg41, 68390 arg42, 68391 arg43, 68392 arg44, 68393 arg45, 68394 arg46, 68395 arg47, 68396 arg48, 68397 arg49, 68398 arg50, 68399 arg51, 68400 arg52, 68401 arg53, 68402 arg54, 68403 arg55, 68404 arg56, 68405 arg57, 68406 arg58, 68407 arg59, 68408 arg60, 68409 arg61, 68410 arg62, 68411 arg63, 68412 arg64, 68413 arg65, 68414 arg66, 68415 arg67, 68416 arg68, 68417 arg69, 68418 arg70, 68419 arg71, 68420 arg72, 68421 arg73, 68422 arg74, 68423 arg75, 68424 arg76, 68425 arg77, 68426 arg78, 68427 arg79, 68428 arg80, 68429 arg81, 68430 arg82, 68431 arg83, 68432 arg84, 68433 arg85, 68434 arg86, 68435 arg87, 68436 arg88, 68437 arg89, 68438 arg90, 68439 arg91, 68440 arg92, 68441 arg93, 68442 arg94, 68443 arg95, 68444 arg96, 68445 arg97, 68446 arg98, 68447 arg99, 68448 arg100, 68449 arg101, 68450 arg102, 68451 arg103, 68452 arg104, 68453 arg105, 68454 arg106, 68455 arg107, 68456 arg108, 68457 arg109, 68458 arg110, 68459 arg111, 68460 arg112, 68461 arg113, 68462 arg114, 68463 arg115, 68464 arg116, 68465 arg117, 68466 arg118); 68467 } 68468 68469 operator type_ () 68470 { 68471 return type_(*this); 68472 } 68473 68474 }; 68475 68476 template< 68477 typename T0, 68478 typename T1, 68479 typename T2, 68480 typename T3, 68481 typename T4, 68482 typename T5, 68483 typename T6, 68484 typename T7, 68485 typename T8, 68486 typename T9, 68487 typename T10, 68488 typename T11, 68489 typename T12, 68490 typename T13, 68491 typename T14, 68492 typename T15, 68493 typename T16, 68494 typename T17, 68495 typename T18, 68496 typename T19, 68497 typename T20, 68498 typename T21, 68499 typename T22, 68500 typename T23, 68501 typename T24, 68502 typename T25, 68503 typename T26, 68504 typename T27, 68505 typename T28, 68506 typename T29, 68507 typename T30, 68508 typename T31, 68509 typename T32, 68510 typename T33, 68511 typename T34, 68512 typename T35, 68513 typename T36, 68514 typename T37, 68515 typename T38, 68516 typename T39, 68517 typename T40, 68518 typename T41, 68519 typename T42, 68520 typename T43, 68521 typename T44, 68522 typename T45, 68523 typename T46, 68524 typename T47, 68525 typename T48, 68526 typename T49, 68527 typename T50, 68528 typename T51, 68529 typename T52, 68530 typename T53, 68531 typename T54, 68532 typename T55, 68533 typename T56, 68534 typename T57, 68535 typename T58, 68536 typename T59, 68537 typename T60, 68538 typename T61, 68539 typename T62, 68540 typename T63, 68541 typename T64, 68542 typename T65, 68543 typename T66, 68544 typename T67, 68545 typename T68, 68546 typename T69, 68547 typename T70, 68548 typename T71, 68549 typename T72, 68550 typename T73, 68551 typename T74, 68552 typename T75, 68553 typename T76, 68554 typename T77, 68555 typename T78, 68556 typename T79, 68557 typename T80, 68558 typename T81, 68559 typename T82, 68560 typename T83, 68561 typename T84, 68562 typename T85, 68563 typename T86, 68564 typename T87, 68565 typename T88, 68566 typename T89, 68567 typename T90, 68568 typename T91, 68569 typename T92, 68570 typename T93, 68571 typename T94, 68572 typename T95, 68573 typename T96, 68574 typename T97, 68575 typename T98, 68576 typename T99, 68577 typename T100, 68578 typename T101, 68579 typename T102, 68580 typename T103, 68581 typename T104, 68582 typename T105, 68583 typename T106, 68584 typename T107, 68585 typename T108, 68586 typename T109, 68587 typename T110, 68588 typename T111, 68589 typename T112, 68590 typename T113, 68591 typename T114, 68592 typename T115, 68593 typename T116, 68594 typename T117, 68595 typename T118, 68596 typename T119> 68597 struct functionImplementation_< 68598 T0, 68599 T1, 68600 T2, 68601 T3, 68602 T4, 68603 T5, 68604 T6, 68605 T7, 68606 T8, 68607 T9, 68608 T10, 68609 T11, 68610 T12, 68611 T13, 68612 T14, 68613 T15, 68614 T16, 68615 T17, 68616 T18, 68617 T19, 68618 T20, 68619 T21, 68620 T22, 68621 T23, 68622 T24, 68623 T25, 68624 T26, 68625 T27, 68626 T28, 68627 T29, 68628 T30, 68629 T31, 68630 T32, 68631 T33, 68632 T34, 68633 T35, 68634 T36, 68635 T37, 68636 T38, 68637 T39, 68638 T40, 68639 T41, 68640 T42, 68641 T43, 68642 T44, 68643 T45, 68644 T46, 68645 T47, 68646 T48, 68647 T49, 68648 T50, 68649 T51, 68650 T52, 68651 T53, 68652 T54, 68653 T55, 68654 T56, 68655 T57, 68656 T58, 68657 T59, 68658 T60, 68659 T61, 68660 T62, 68661 T63, 68662 T64, 68663 T65, 68664 T66, 68665 T67, 68666 T68, 68667 T69, 68668 T70, 68669 T71, 68670 T72, 68671 T73, 68672 T74, 68673 T75, 68674 T76, 68675 T77, 68676 T78, 68677 T79, 68678 T80, 68679 T81, 68680 T82, 68681 T83, 68682 T84, 68683 T85, 68684 T86, 68685 T87, 68686 T88, 68687 T89, 68688 T90, 68689 T91, 68690 T92, 68691 T93, 68692 T94, 68693 T95, 68694 T96, 68695 T97, 68696 T98, 68697 T99, 68698 T100, 68699 T101, 68700 T102, 68701 T103, 68702 T104, 68703 T105, 68704 T106, 68705 T107, 68706 T108, 68707 T109, 68708 T110, 68709 T111, 68710 T112, 68711 T113, 68712 T114, 68713 T115, 68714 T116, 68715 T117, 68716 T118, 68717 T119, 68718 NullType, 68719 NullType, 68720 NullType, 68721 NullType, 68722 NullType, 68723 NullType, 68724 NullType, 68725 NullType> 68726 { 68727 typedef detail::KernelFunctorGlobal< 68728 T0, 68729 T1, 68730 T2, 68731 T3, 68732 T4, 68733 T5, 68734 T6, 68735 T7, 68736 T8, 68737 T9, 68738 T10, 68739 T11, 68740 T12, 68741 T13, 68742 T14, 68743 T15, 68744 T16, 68745 T17, 68746 T18, 68747 T19, 68748 T20, 68749 T21, 68750 T22, 68751 T23, 68752 T24, 68753 T25, 68754 T26, 68755 T27, 68756 T28, 68757 T29, 68758 T30, 68759 T31, 68760 T32, 68761 T33, 68762 T34, 68763 T35, 68764 T36, 68765 T37, 68766 T38, 68767 T39, 68768 T40, 68769 T41, 68770 T42, 68771 T43, 68772 T44, 68773 T45, 68774 T46, 68775 T47, 68776 T48, 68777 T49, 68778 T50, 68779 T51, 68780 T52, 68781 T53, 68782 T54, 68783 T55, 68784 T56, 68785 T57, 68786 T58, 68787 T59, 68788 T60, 68789 T61, 68790 T62, 68791 T63, 68792 T64, 68793 T65, 68794 T66, 68795 T67, 68796 T68, 68797 T69, 68798 T70, 68799 T71, 68800 T72, 68801 T73, 68802 T74, 68803 T75, 68804 T76, 68805 T77, 68806 T78, 68807 T79, 68808 T80, 68809 T81, 68810 T82, 68811 T83, 68812 T84, 68813 T85, 68814 T86, 68815 T87, 68816 T88, 68817 T89, 68818 T90, 68819 T91, 68820 T92, 68821 T93, 68822 T94, 68823 T95, 68824 T96, 68825 T97, 68826 T98, 68827 T99, 68828 T100, 68829 T101, 68830 T102, 68831 T103, 68832 T104, 68833 T105, 68834 T106, 68835 T107, 68836 T108, 68837 T109, 68838 T110, 68839 T111, 68840 T112, 68841 T113, 68842 T114, 68843 T115, 68844 T116, 68845 T117, 68846 T118, 68847 T119, 68848 NullType, 68849 NullType, 68850 NullType, 68851 NullType, 68852 NullType, 68853 NullType, 68854 NullType, 68855 NullType> FunctorType; 68856 68857 FunctorType functor_; 68858 68859 functionImplementation_(const FunctorType &functor) : 68860 functor_(functor) 68861 { 68862 } 68863 68864 typedef std::tr1::function<Event ( 68865 const EnqueueArgs&, 68866 T0, 68867 T1, 68868 T2, 68869 T3, 68870 T4, 68871 T5, 68872 T6, 68873 T7, 68874 T8, 68875 T9, 68876 T10, 68877 T11, 68878 T12, 68879 T13, 68880 T14, 68881 T15, 68882 T16, 68883 T17, 68884 T18, 68885 T19, 68886 T20, 68887 T21, 68888 T22, 68889 T23, 68890 T24, 68891 T25, 68892 T26, 68893 T27, 68894 T28, 68895 T29, 68896 T30, 68897 T31, 68898 T32, 68899 T33, 68900 T34, 68901 T35, 68902 T36, 68903 T37, 68904 T38, 68905 T39, 68906 T40, 68907 T41, 68908 T42, 68909 T43, 68910 T44, 68911 T45, 68912 T46, 68913 T47, 68914 T48, 68915 T49, 68916 T50, 68917 T51, 68918 T52, 68919 T53, 68920 T54, 68921 T55, 68922 T56, 68923 T57, 68924 T58, 68925 T59, 68926 T60, 68927 T61, 68928 T62, 68929 T63, 68930 T64, 68931 T65, 68932 T66, 68933 T67, 68934 T68, 68935 T69, 68936 T70, 68937 T71, 68938 T72, 68939 T73, 68940 T74, 68941 T75, 68942 T76, 68943 T77, 68944 T78, 68945 T79, 68946 T80, 68947 T81, 68948 T82, 68949 T83, 68950 T84, 68951 T85, 68952 T86, 68953 T87, 68954 T88, 68955 T89, 68956 T90, 68957 T91, 68958 T92, 68959 T93, 68960 T94, 68961 T95, 68962 T96, 68963 T97, 68964 T98, 68965 T99, 68966 T100, 68967 T101, 68968 T102, 68969 T103, 68970 T104, 68971 T105, 68972 T106, 68973 T107, 68974 T108, 68975 T109, 68976 T110, 68977 T111, 68978 T112, 68979 T113, 68980 T114, 68981 T115, 68982 T116, 68983 T117, 68984 T118, 68985 T119)> type_; 68986 68987 Event operator()(const EnqueueArgs& enqueueArgs, 68988 T0 arg0, 68989 T1 arg1, 68990 T2 arg2, 68991 T3 arg3, 68992 T4 arg4, 68993 T5 arg5, 68994 T6 arg6, 68995 T7 arg7, 68996 T8 arg8, 68997 T9 arg9, 68998 T10 arg10, 68999 T11 arg11, 69000 T12 arg12, 69001 T13 arg13, 69002 T14 arg14, 69003 T15 arg15, 69004 T16 arg16, 69005 T17 arg17, 69006 T18 arg18, 69007 T19 arg19, 69008 T20 arg20, 69009 T21 arg21, 69010 T22 arg22, 69011 T23 arg23, 69012 T24 arg24, 69013 T25 arg25, 69014 T26 arg26, 69015 T27 arg27, 69016 T28 arg28, 69017 T29 arg29, 69018 T30 arg30, 69019 T31 arg31, 69020 T32 arg32, 69021 T33 arg33, 69022 T34 arg34, 69023 T35 arg35, 69024 T36 arg36, 69025 T37 arg37, 69026 T38 arg38, 69027 T39 arg39, 69028 T40 arg40, 69029 T41 arg41, 69030 T42 arg42, 69031 T43 arg43, 69032 T44 arg44, 69033 T45 arg45, 69034 T46 arg46, 69035 T47 arg47, 69036 T48 arg48, 69037 T49 arg49, 69038 T50 arg50, 69039 T51 arg51, 69040 T52 arg52, 69041 T53 arg53, 69042 T54 arg54, 69043 T55 arg55, 69044 T56 arg56, 69045 T57 arg57, 69046 T58 arg58, 69047 T59 arg59, 69048 T60 arg60, 69049 T61 arg61, 69050 T62 arg62, 69051 T63 arg63, 69052 T64 arg64, 69053 T65 arg65, 69054 T66 arg66, 69055 T67 arg67, 69056 T68 arg68, 69057 T69 arg69, 69058 T70 arg70, 69059 T71 arg71, 69060 T72 arg72, 69061 T73 arg73, 69062 T74 arg74, 69063 T75 arg75, 69064 T76 arg76, 69065 T77 arg77, 69066 T78 arg78, 69067 T79 arg79, 69068 T80 arg80, 69069 T81 arg81, 69070 T82 arg82, 69071 T83 arg83, 69072 T84 arg84, 69073 T85 arg85, 69074 T86 arg86, 69075 T87 arg87, 69076 T88 arg88, 69077 T89 arg89, 69078 T90 arg90, 69079 T91 arg91, 69080 T92 arg92, 69081 T93 arg93, 69082 T94 arg94, 69083 T95 arg95, 69084 T96 arg96, 69085 T97 arg97, 69086 T98 arg98, 69087 T99 arg99, 69088 T100 arg100, 69089 T101 arg101, 69090 T102 arg102, 69091 T103 arg103, 69092 T104 arg104, 69093 T105 arg105, 69094 T106 arg106, 69095 T107 arg107, 69096 T108 arg108, 69097 T109 arg109, 69098 T110 arg110, 69099 T111 arg111, 69100 T112 arg112, 69101 T113 arg113, 69102 T114 arg114, 69103 T115 arg115, 69104 T116 arg116, 69105 T117 arg117, 69106 T118 arg118, 69107 T119 arg119) 69108 { 69109 return functor_( 69110 enqueueArgs, 69111 arg0, 69112 arg1, 69113 arg2, 69114 arg3, 69115 arg4, 69116 arg5, 69117 arg6, 69118 arg7, 69119 arg8, 69120 arg9, 69121 arg10, 69122 arg11, 69123 arg12, 69124 arg13, 69125 arg14, 69126 arg15, 69127 arg16, 69128 arg17, 69129 arg18, 69130 arg19, 69131 arg20, 69132 arg21, 69133 arg22, 69134 arg23, 69135 arg24, 69136 arg25, 69137 arg26, 69138 arg27, 69139 arg28, 69140 arg29, 69141 arg30, 69142 arg31, 69143 arg32, 69144 arg33, 69145 arg34, 69146 arg35, 69147 arg36, 69148 arg37, 69149 arg38, 69150 arg39, 69151 arg40, 69152 arg41, 69153 arg42, 69154 arg43, 69155 arg44, 69156 arg45, 69157 arg46, 69158 arg47, 69159 arg48, 69160 arg49, 69161 arg50, 69162 arg51, 69163 arg52, 69164 arg53, 69165 arg54, 69166 arg55, 69167 arg56, 69168 arg57, 69169 arg58, 69170 arg59, 69171 arg60, 69172 arg61, 69173 arg62, 69174 arg63, 69175 arg64, 69176 arg65, 69177 arg66, 69178 arg67, 69179 arg68, 69180 arg69, 69181 arg70, 69182 arg71, 69183 arg72, 69184 arg73, 69185 arg74, 69186 arg75, 69187 arg76, 69188 arg77, 69189 arg78, 69190 arg79, 69191 arg80, 69192 arg81, 69193 arg82, 69194 arg83, 69195 arg84, 69196 arg85, 69197 arg86, 69198 arg87, 69199 arg88, 69200 arg89, 69201 arg90, 69202 arg91, 69203 arg92, 69204 arg93, 69205 arg94, 69206 arg95, 69207 arg96, 69208 arg97, 69209 arg98, 69210 arg99, 69211 arg100, 69212 arg101, 69213 arg102, 69214 arg103, 69215 arg104, 69216 arg105, 69217 arg106, 69218 arg107, 69219 arg108, 69220 arg109, 69221 arg110, 69222 arg111, 69223 arg112, 69224 arg113, 69225 arg114, 69226 arg115, 69227 arg116, 69228 arg117, 69229 arg118, 69230 arg119); 69231 } 69232 69233 operator type_ () 69234 { 69235 return type_(*this); 69236 } 69237 69238 }; 69239 69240 template< 69241 typename T0, 69242 typename T1, 69243 typename T2, 69244 typename T3, 69245 typename T4, 69246 typename T5, 69247 typename T6, 69248 typename T7, 69249 typename T8, 69250 typename T9, 69251 typename T10, 69252 typename T11, 69253 typename T12, 69254 typename T13, 69255 typename T14, 69256 typename T15, 69257 typename T16, 69258 typename T17, 69259 typename T18, 69260 typename T19, 69261 typename T20, 69262 typename T21, 69263 typename T22, 69264 typename T23, 69265 typename T24, 69266 typename T25, 69267 typename T26, 69268 typename T27, 69269 typename T28, 69270 typename T29, 69271 typename T30, 69272 typename T31, 69273 typename T32, 69274 typename T33, 69275 typename T34, 69276 typename T35, 69277 typename T36, 69278 typename T37, 69279 typename T38, 69280 typename T39, 69281 typename T40, 69282 typename T41, 69283 typename T42, 69284 typename T43, 69285 typename T44, 69286 typename T45, 69287 typename T46, 69288 typename T47, 69289 typename T48, 69290 typename T49, 69291 typename T50, 69292 typename T51, 69293 typename T52, 69294 typename T53, 69295 typename T54, 69296 typename T55, 69297 typename T56, 69298 typename T57, 69299 typename T58, 69300 typename T59, 69301 typename T60, 69302 typename T61, 69303 typename T62, 69304 typename T63, 69305 typename T64, 69306 typename T65, 69307 typename T66, 69308 typename T67, 69309 typename T68, 69310 typename T69, 69311 typename T70, 69312 typename T71, 69313 typename T72, 69314 typename T73, 69315 typename T74, 69316 typename T75, 69317 typename T76, 69318 typename T77, 69319 typename T78, 69320 typename T79, 69321 typename T80, 69322 typename T81, 69323 typename T82, 69324 typename T83, 69325 typename T84, 69326 typename T85, 69327 typename T86, 69328 typename T87, 69329 typename T88, 69330 typename T89, 69331 typename T90, 69332 typename T91, 69333 typename T92, 69334 typename T93, 69335 typename T94, 69336 typename T95, 69337 typename T96, 69338 typename T97, 69339 typename T98, 69340 typename T99, 69341 typename T100, 69342 typename T101, 69343 typename T102, 69344 typename T103, 69345 typename T104, 69346 typename T105, 69347 typename T106, 69348 typename T107, 69349 typename T108, 69350 typename T109, 69351 typename T110, 69352 typename T111, 69353 typename T112, 69354 typename T113, 69355 typename T114, 69356 typename T115, 69357 typename T116, 69358 typename T117, 69359 typename T118, 69360 typename T119, 69361 typename T120> 69362 struct functionImplementation_< 69363 T0, 69364 T1, 69365 T2, 69366 T3, 69367 T4, 69368 T5, 69369 T6, 69370 T7, 69371 T8, 69372 T9, 69373 T10, 69374 T11, 69375 T12, 69376 T13, 69377 T14, 69378 T15, 69379 T16, 69380 T17, 69381 T18, 69382 T19, 69383 T20, 69384 T21, 69385 T22, 69386 T23, 69387 T24, 69388 T25, 69389 T26, 69390 T27, 69391 T28, 69392 T29, 69393 T30, 69394 T31, 69395 T32, 69396 T33, 69397 T34, 69398 T35, 69399 T36, 69400 T37, 69401 T38, 69402 T39, 69403 T40, 69404 T41, 69405 T42, 69406 T43, 69407 T44, 69408 T45, 69409 T46, 69410 T47, 69411 T48, 69412 T49, 69413 T50, 69414 T51, 69415 T52, 69416 T53, 69417 T54, 69418 T55, 69419 T56, 69420 T57, 69421 T58, 69422 T59, 69423 T60, 69424 T61, 69425 T62, 69426 T63, 69427 T64, 69428 T65, 69429 T66, 69430 T67, 69431 T68, 69432 T69, 69433 T70, 69434 T71, 69435 T72, 69436 T73, 69437 T74, 69438 T75, 69439 T76, 69440 T77, 69441 T78, 69442 T79, 69443 T80, 69444 T81, 69445 T82, 69446 T83, 69447 T84, 69448 T85, 69449 T86, 69450 T87, 69451 T88, 69452 T89, 69453 T90, 69454 T91, 69455 T92, 69456 T93, 69457 T94, 69458 T95, 69459 T96, 69460 T97, 69461 T98, 69462 T99, 69463 T100, 69464 T101, 69465 T102, 69466 T103, 69467 T104, 69468 T105, 69469 T106, 69470 T107, 69471 T108, 69472 T109, 69473 T110, 69474 T111, 69475 T112, 69476 T113, 69477 T114, 69478 T115, 69479 T116, 69480 T117, 69481 T118, 69482 T119, 69483 T120, 69484 NullType, 69485 NullType, 69486 NullType, 69487 NullType, 69488 NullType, 69489 NullType, 69490 NullType> 69491 { 69492 typedef detail::KernelFunctorGlobal< 69493 T0, 69494 T1, 69495 T2, 69496 T3, 69497 T4, 69498 T5, 69499 T6, 69500 T7, 69501 T8, 69502 T9, 69503 T10, 69504 T11, 69505 T12, 69506 T13, 69507 T14, 69508 T15, 69509 T16, 69510 T17, 69511 T18, 69512 T19, 69513 T20, 69514 T21, 69515 T22, 69516 T23, 69517 T24, 69518 T25, 69519 T26, 69520 T27, 69521 T28, 69522 T29, 69523 T30, 69524 T31, 69525 T32, 69526 T33, 69527 T34, 69528 T35, 69529 T36, 69530 T37, 69531 T38, 69532 T39, 69533 T40, 69534 T41, 69535 T42, 69536 T43, 69537 T44, 69538 T45, 69539 T46, 69540 T47, 69541 T48, 69542 T49, 69543 T50, 69544 T51, 69545 T52, 69546 T53, 69547 T54, 69548 T55, 69549 T56, 69550 T57, 69551 T58, 69552 T59, 69553 T60, 69554 T61, 69555 T62, 69556 T63, 69557 T64, 69558 T65, 69559 T66, 69560 T67, 69561 T68, 69562 T69, 69563 T70, 69564 T71, 69565 T72, 69566 T73, 69567 T74, 69568 T75, 69569 T76, 69570 T77, 69571 T78, 69572 T79, 69573 T80, 69574 T81, 69575 T82, 69576 T83, 69577 T84, 69578 T85, 69579 T86, 69580 T87, 69581 T88, 69582 T89, 69583 T90, 69584 T91, 69585 T92, 69586 T93, 69587 T94, 69588 T95, 69589 T96, 69590 T97, 69591 T98, 69592 T99, 69593 T100, 69594 T101, 69595 T102, 69596 T103, 69597 T104, 69598 T105, 69599 T106, 69600 T107, 69601 T108, 69602 T109, 69603 T110, 69604 T111, 69605 T112, 69606 T113, 69607 T114, 69608 T115, 69609 T116, 69610 T117, 69611 T118, 69612 T119, 69613 T120, 69614 NullType, 69615 NullType, 69616 NullType, 69617 NullType, 69618 NullType, 69619 NullType, 69620 NullType> FunctorType; 69621 69622 FunctorType functor_; 69623 69624 functionImplementation_(const FunctorType &functor) : 69625 functor_(functor) 69626 { 69627 } 69628 69629 typedef std::tr1::function<Event ( 69630 const EnqueueArgs&, 69631 T0, 69632 T1, 69633 T2, 69634 T3, 69635 T4, 69636 T5, 69637 T6, 69638 T7, 69639 T8, 69640 T9, 69641 T10, 69642 T11, 69643 T12, 69644 T13, 69645 T14, 69646 T15, 69647 T16, 69648 T17, 69649 T18, 69650 T19, 69651 T20, 69652 T21, 69653 T22, 69654 T23, 69655 T24, 69656 T25, 69657 T26, 69658 T27, 69659 T28, 69660 T29, 69661 T30, 69662 T31, 69663 T32, 69664 T33, 69665 T34, 69666 T35, 69667 T36, 69668 T37, 69669 T38, 69670 T39, 69671 T40, 69672 T41, 69673 T42, 69674 T43, 69675 T44, 69676 T45, 69677 T46, 69678 T47, 69679 T48, 69680 T49, 69681 T50, 69682 T51, 69683 T52, 69684 T53, 69685 T54, 69686 T55, 69687 T56, 69688 T57, 69689 T58, 69690 T59, 69691 T60, 69692 T61, 69693 T62, 69694 T63, 69695 T64, 69696 T65, 69697 T66, 69698 T67, 69699 T68, 69700 T69, 69701 T70, 69702 T71, 69703 T72, 69704 T73, 69705 T74, 69706 T75, 69707 T76, 69708 T77, 69709 T78, 69710 T79, 69711 T80, 69712 T81, 69713 T82, 69714 T83, 69715 T84, 69716 T85, 69717 T86, 69718 T87, 69719 T88, 69720 T89, 69721 T90, 69722 T91, 69723 T92, 69724 T93, 69725 T94, 69726 T95, 69727 T96, 69728 T97, 69729 T98, 69730 T99, 69731 T100, 69732 T101, 69733 T102, 69734 T103, 69735 T104, 69736 T105, 69737 T106, 69738 T107, 69739 T108, 69740 T109, 69741 T110, 69742 T111, 69743 T112, 69744 T113, 69745 T114, 69746 T115, 69747 T116, 69748 T117, 69749 T118, 69750 T119, 69751 T120)> type_; 69752 69753 Event operator()(const EnqueueArgs& enqueueArgs, 69754 T0 arg0, 69755 T1 arg1, 69756 T2 arg2, 69757 T3 arg3, 69758 T4 arg4, 69759 T5 arg5, 69760 T6 arg6, 69761 T7 arg7, 69762 T8 arg8, 69763 T9 arg9, 69764 T10 arg10, 69765 T11 arg11, 69766 T12 arg12, 69767 T13 arg13, 69768 T14 arg14, 69769 T15 arg15, 69770 T16 arg16, 69771 T17 arg17, 69772 T18 arg18, 69773 T19 arg19, 69774 T20 arg20, 69775 T21 arg21, 69776 T22 arg22, 69777 T23 arg23, 69778 T24 arg24, 69779 T25 arg25, 69780 T26 arg26, 69781 T27 arg27, 69782 T28 arg28, 69783 T29 arg29, 69784 T30 arg30, 69785 T31 arg31, 69786 T32 arg32, 69787 T33 arg33, 69788 T34 arg34, 69789 T35 arg35, 69790 T36 arg36, 69791 T37 arg37, 69792 T38 arg38, 69793 T39 arg39, 69794 T40 arg40, 69795 T41 arg41, 69796 T42 arg42, 69797 T43 arg43, 69798 T44 arg44, 69799 T45 arg45, 69800 T46 arg46, 69801 T47 arg47, 69802 T48 arg48, 69803 T49 arg49, 69804 T50 arg50, 69805 T51 arg51, 69806 T52 arg52, 69807 T53 arg53, 69808 T54 arg54, 69809 T55 arg55, 69810 T56 arg56, 69811 T57 arg57, 69812 T58 arg58, 69813 T59 arg59, 69814 T60 arg60, 69815 T61 arg61, 69816 T62 arg62, 69817 T63 arg63, 69818 T64 arg64, 69819 T65 arg65, 69820 T66 arg66, 69821 T67 arg67, 69822 T68 arg68, 69823 T69 arg69, 69824 T70 arg70, 69825 T71 arg71, 69826 T72 arg72, 69827 T73 arg73, 69828 T74 arg74, 69829 T75 arg75, 69830 T76 arg76, 69831 T77 arg77, 69832 T78 arg78, 69833 T79 arg79, 69834 T80 arg80, 69835 T81 arg81, 69836 T82 arg82, 69837 T83 arg83, 69838 T84 arg84, 69839 T85 arg85, 69840 T86 arg86, 69841 T87 arg87, 69842 T88 arg88, 69843 T89 arg89, 69844 T90 arg90, 69845 T91 arg91, 69846 T92 arg92, 69847 T93 arg93, 69848 T94 arg94, 69849 T95 arg95, 69850 T96 arg96, 69851 T97 arg97, 69852 T98 arg98, 69853 T99 arg99, 69854 T100 arg100, 69855 T101 arg101, 69856 T102 arg102, 69857 T103 arg103, 69858 T104 arg104, 69859 T105 arg105, 69860 T106 arg106, 69861 T107 arg107, 69862 T108 arg108, 69863 T109 arg109, 69864 T110 arg110, 69865 T111 arg111, 69866 T112 arg112, 69867 T113 arg113, 69868 T114 arg114, 69869 T115 arg115, 69870 T116 arg116, 69871 T117 arg117, 69872 T118 arg118, 69873 T119 arg119, 69874 T120 arg120) 69875 { 69876 return functor_( 69877 enqueueArgs, 69878 arg0, 69879 arg1, 69880 arg2, 69881 arg3, 69882 arg4, 69883 arg5, 69884 arg6, 69885 arg7, 69886 arg8, 69887 arg9, 69888 arg10, 69889 arg11, 69890 arg12, 69891 arg13, 69892 arg14, 69893 arg15, 69894 arg16, 69895 arg17, 69896 arg18, 69897 arg19, 69898 arg20, 69899 arg21, 69900 arg22, 69901 arg23, 69902 arg24, 69903 arg25, 69904 arg26, 69905 arg27, 69906 arg28, 69907 arg29, 69908 arg30, 69909 arg31, 69910 arg32, 69911 arg33, 69912 arg34, 69913 arg35, 69914 arg36, 69915 arg37, 69916 arg38, 69917 arg39, 69918 arg40, 69919 arg41, 69920 arg42, 69921 arg43, 69922 arg44, 69923 arg45, 69924 arg46, 69925 arg47, 69926 arg48, 69927 arg49, 69928 arg50, 69929 arg51, 69930 arg52, 69931 arg53, 69932 arg54, 69933 arg55, 69934 arg56, 69935 arg57, 69936 arg58, 69937 arg59, 69938 arg60, 69939 arg61, 69940 arg62, 69941 arg63, 69942 arg64, 69943 arg65, 69944 arg66, 69945 arg67, 69946 arg68, 69947 arg69, 69948 arg70, 69949 arg71, 69950 arg72, 69951 arg73, 69952 arg74, 69953 arg75, 69954 arg76, 69955 arg77, 69956 arg78, 69957 arg79, 69958 arg80, 69959 arg81, 69960 arg82, 69961 arg83, 69962 arg84, 69963 arg85, 69964 arg86, 69965 arg87, 69966 arg88, 69967 arg89, 69968 arg90, 69969 arg91, 69970 arg92, 69971 arg93, 69972 arg94, 69973 arg95, 69974 arg96, 69975 arg97, 69976 arg98, 69977 arg99, 69978 arg100, 69979 arg101, 69980 arg102, 69981 arg103, 69982 arg104, 69983 arg105, 69984 arg106, 69985 arg107, 69986 arg108, 69987 arg109, 69988 arg110, 69989 arg111, 69990 arg112, 69991 arg113, 69992 arg114, 69993 arg115, 69994 arg116, 69995 arg117, 69996 arg118, 69997 arg119, 69998 arg120); 69999 } 70000 70001 operator type_ () 70002 { 70003 return type_(*this); 70004 } 70005 70006 }; 70007 70008 template< 70009 typename T0, 70010 typename T1, 70011 typename T2, 70012 typename T3, 70013 typename T4, 70014 typename T5, 70015 typename T6, 70016 typename T7, 70017 typename T8, 70018 typename T9, 70019 typename T10, 70020 typename T11, 70021 typename T12, 70022 typename T13, 70023 typename T14, 70024 typename T15, 70025 typename T16, 70026 typename T17, 70027 typename T18, 70028 typename T19, 70029 typename T20, 70030 typename T21, 70031 typename T22, 70032 typename T23, 70033 typename T24, 70034 typename T25, 70035 typename T26, 70036 typename T27, 70037 typename T28, 70038 typename T29, 70039 typename T30, 70040 typename T31, 70041 typename T32, 70042 typename T33, 70043 typename T34, 70044 typename T35, 70045 typename T36, 70046 typename T37, 70047 typename T38, 70048 typename T39, 70049 typename T40, 70050 typename T41, 70051 typename T42, 70052 typename T43, 70053 typename T44, 70054 typename T45, 70055 typename T46, 70056 typename T47, 70057 typename T48, 70058 typename T49, 70059 typename T50, 70060 typename T51, 70061 typename T52, 70062 typename T53, 70063 typename T54, 70064 typename T55, 70065 typename T56, 70066 typename T57, 70067 typename T58, 70068 typename T59, 70069 typename T60, 70070 typename T61, 70071 typename T62, 70072 typename T63, 70073 typename T64, 70074 typename T65, 70075 typename T66, 70076 typename T67, 70077 typename T68, 70078 typename T69, 70079 typename T70, 70080 typename T71, 70081 typename T72, 70082 typename T73, 70083 typename T74, 70084 typename T75, 70085 typename T76, 70086 typename T77, 70087 typename T78, 70088 typename T79, 70089 typename T80, 70090 typename T81, 70091 typename T82, 70092 typename T83, 70093 typename T84, 70094 typename T85, 70095 typename T86, 70096 typename T87, 70097 typename T88, 70098 typename T89, 70099 typename T90, 70100 typename T91, 70101 typename T92, 70102 typename T93, 70103 typename T94, 70104 typename T95, 70105 typename T96, 70106 typename T97, 70107 typename T98, 70108 typename T99, 70109 typename T100, 70110 typename T101, 70111 typename T102, 70112 typename T103, 70113 typename T104, 70114 typename T105, 70115 typename T106, 70116 typename T107, 70117 typename T108, 70118 typename T109, 70119 typename T110, 70120 typename T111, 70121 typename T112, 70122 typename T113, 70123 typename T114, 70124 typename T115, 70125 typename T116, 70126 typename T117, 70127 typename T118, 70128 typename T119, 70129 typename T120, 70130 typename T121> 70131 struct functionImplementation_< 70132 T0, 70133 T1, 70134 T2, 70135 T3, 70136 T4, 70137 T5, 70138 T6, 70139 T7, 70140 T8, 70141 T9, 70142 T10, 70143 T11, 70144 T12, 70145 T13, 70146 T14, 70147 T15, 70148 T16, 70149 T17, 70150 T18, 70151 T19, 70152 T20, 70153 T21, 70154 T22, 70155 T23, 70156 T24, 70157 T25, 70158 T26, 70159 T27, 70160 T28, 70161 T29, 70162 T30, 70163 T31, 70164 T32, 70165 T33, 70166 T34, 70167 T35, 70168 T36, 70169 T37, 70170 T38, 70171 T39, 70172 T40, 70173 T41, 70174 T42, 70175 T43, 70176 T44, 70177 T45, 70178 T46, 70179 T47, 70180 T48, 70181 T49, 70182 T50, 70183 T51, 70184 T52, 70185 T53, 70186 T54, 70187 T55, 70188 T56, 70189 T57, 70190 T58, 70191 T59, 70192 T60, 70193 T61, 70194 T62, 70195 T63, 70196 T64, 70197 T65, 70198 T66, 70199 T67, 70200 T68, 70201 T69, 70202 T70, 70203 T71, 70204 T72, 70205 T73, 70206 T74, 70207 T75, 70208 T76, 70209 T77, 70210 T78, 70211 T79, 70212 T80, 70213 T81, 70214 T82, 70215 T83, 70216 T84, 70217 T85, 70218 T86, 70219 T87, 70220 T88, 70221 T89, 70222 T90, 70223 T91, 70224 T92, 70225 T93, 70226 T94, 70227 T95, 70228 T96, 70229 T97, 70230 T98, 70231 T99, 70232 T100, 70233 T101, 70234 T102, 70235 T103, 70236 T104, 70237 T105, 70238 T106, 70239 T107, 70240 T108, 70241 T109, 70242 T110, 70243 T111, 70244 T112, 70245 T113, 70246 T114, 70247 T115, 70248 T116, 70249 T117, 70250 T118, 70251 T119, 70252 T120, 70253 T121, 70254 NullType, 70255 NullType, 70256 NullType, 70257 NullType, 70258 NullType, 70259 NullType> 70260 { 70261 typedef detail::KernelFunctorGlobal< 70262 T0, 70263 T1, 70264 T2, 70265 T3, 70266 T4, 70267 T5, 70268 T6, 70269 T7, 70270 T8, 70271 T9, 70272 T10, 70273 T11, 70274 T12, 70275 T13, 70276 T14, 70277 T15, 70278 T16, 70279 T17, 70280 T18, 70281 T19, 70282 T20, 70283 T21, 70284 T22, 70285 T23, 70286 T24, 70287 T25, 70288 T26, 70289 T27, 70290 T28, 70291 T29, 70292 T30, 70293 T31, 70294 T32, 70295 T33, 70296 T34, 70297 T35, 70298 T36, 70299 T37, 70300 T38, 70301 T39, 70302 T40, 70303 T41, 70304 T42, 70305 T43, 70306 T44, 70307 T45, 70308 T46, 70309 T47, 70310 T48, 70311 T49, 70312 T50, 70313 T51, 70314 T52, 70315 T53, 70316 T54, 70317 T55, 70318 T56, 70319 T57, 70320 T58, 70321 T59, 70322 T60, 70323 T61, 70324 T62, 70325 T63, 70326 T64, 70327 T65, 70328 T66, 70329 T67, 70330 T68, 70331 T69, 70332 T70, 70333 T71, 70334 T72, 70335 T73, 70336 T74, 70337 T75, 70338 T76, 70339 T77, 70340 T78, 70341 T79, 70342 T80, 70343 T81, 70344 T82, 70345 T83, 70346 T84, 70347 T85, 70348 T86, 70349 T87, 70350 T88, 70351 T89, 70352 T90, 70353 T91, 70354 T92, 70355 T93, 70356 T94, 70357 T95, 70358 T96, 70359 T97, 70360 T98, 70361 T99, 70362 T100, 70363 T101, 70364 T102, 70365 T103, 70366 T104, 70367 T105, 70368 T106, 70369 T107, 70370 T108, 70371 T109, 70372 T110, 70373 T111, 70374 T112, 70375 T113, 70376 T114, 70377 T115, 70378 T116, 70379 T117, 70380 T118, 70381 T119, 70382 T120, 70383 T121, 70384 NullType, 70385 NullType, 70386 NullType, 70387 NullType, 70388 NullType, 70389 NullType> FunctorType; 70390 70391 FunctorType functor_; 70392 70393 functionImplementation_(const FunctorType &functor) : 70394 functor_(functor) 70395 { 70396 } 70397 70398 typedef std::tr1::function<Event ( 70399 const EnqueueArgs&, 70400 T0, 70401 T1, 70402 T2, 70403 T3, 70404 T4, 70405 T5, 70406 T6, 70407 T7, 70408 T8, 70409 T9, 70410 T10, 70411 T11, 70412 T12, 70413 T13, 70414 T14, 70415 T15, 70416 T16, 70417 T17, 70418 T18, 70419 T19, 70420 T20, 70421 T21, 70422 T22, 70423 T23, 70424 T24, 70425 T25, 70426 T26, 70427 T27, 70428 T28, 70429 T29, 70430 T30, 70431 T31, 70432 T32, 70433 T33, 70434 T34, 70435 T35, 70436 T36, 70437 T37, 70438 T38, 70439 T39, 70440 T40, 70441 T41, 70442 T42, 70443 T43, 70444 T44, 70445 T45, 70446 T46, 70447 T47, 70448 T48, 70449 T49, 70450 T50, 70451 T51, 70452 T52, 70453 T53, 70454 T54, 70455 T55, 70456 T56, 70457 T57, 70458 T58, 70459 T59, 70460 T60, 70461 T61, 70462 T62, 70463 T63, 70464 T64, 70465 T65, 70466 T66, 70467 T67, 70468 T68, 70469 T69, 70470 T70, 70471 T71, 70472 T72, 70473 T73, 70474 T74, 70475 T75, 70476 T76, 70477 T77, 70478 T78, 70479 T79, 70480 T80, 70481 T81, 70482 T82, 70483 T83, 70484 T84, 70485 T85, 70486 T86, 70487 T87, 70488 T88, 70489 T89, 70490 T90, 70491 T91, 70492 T92, 70493 T93, 70494 T94, 70495 T95, 70496 T96, 70497 T97, 70498 T98, 70499 T99, 70500 T100, 70501 T101, 70502 T102, 70503 T103, 70504 T104, 70505 T105, 70506 T106, 70507 T107, 70508 T108, 70509 T109, 70510 T110, 70511 T111, 70512 T112, 70513 T113, 70514 T114, 70515 T115, 70516 T116, 70517 T117, 70518 T118, 70519 T119, 70520 T120, 70521 T121)> type_; 70522 70523 Event operator()(const EnqueueArgs& enqueueArgs, 70524 T0 arg0, 70525 T1 arg1, 70526 T2 arg2, 70527 T3 arg3, 70528 T4 arg4, 70529 T5 arg5, 70530 T6 arg6, 70531 T7 arg7, 70532 T8 arg8, 70533 T9 arg9, 70534 T10 arg10, 70535 T11 arg11, 70536 T12 arg12, 70537 T13 arg13, 70538 T14 arg14, 70539 T15 arg15, 70540 T16 arg16, 70541 T17 arg17, 70542 T18 arg18, 70543 T19 arg19, 70544 T20 arg20, 70545 T21 arg21, 70546 T22 arg22, 70547 T23 arg23, 70548 T24 arg24, 70549 T25 arg25, 70550 T26 arg26, 70551 T27 arg27, 70552 T28 arg28, 70553 T29 arg29, 70554 T30 arg30, 70555 T31 arg31, 70556 T32 arg32, 70557 T33 arg33, 70558 T34 arg34, 70559 T35 arg35, 70560 T36 arg36, 70561 T37 arg37, 70562 T38 arg38, 70563 T39 arg39, 70564 T40 arg40, 70565 T41 arg41, 70566 T42 arg42, 70567 T43 arg43, 70568 T44 arg44, 70569 T45 arg45, 70570 T46 arg46, 70571 T47 arg47, 70572 T48 arg48, 70573 T49 arg49, 70574 T50 arg50, 70575 T51 arg51, 70576 T52 arg52, 70577 T53 arg53, 70578 T54 arg54, 70579 T55 arg55, 70580 T56 arg56, 70581 T57 arg57, 70582 T58 arg58, 70583 T59 arg59, 70584 T60 arg60, 70585 T61 arg61, 70586 T62 arg62, 70587 T63 arg63, 70588 T64 arg64, 70589 T65 arg65, 70590 T66 arg66, 70591 T67 arg67, 70592 T68 arg68, 70593 T69 arg69, 70594 T70 arg70, 70595 T71 arg71, 70596 T72 arg72, 70597 T73 arg73, 70598 T74 arg74, 70599 T75 arg75, 70600 T76 arg76, 70601 T77 arg77, 70602 T78 arg78, 70603 T79 arg79, 70604 T80 arg80, 70605 T81 arg81, 70606 T82 arg82, 70607 T83 arg83, 70608 T84 arg84, 70609 T85 arg85, 70610 T86 arg86, 70611 T87 arg87, 70612 T88 arg88, 70613 T89 arg89, 70614 T90 arg90, 70615 T91 arg91, 70616 T92 arg92, 70617 T93 arg93, 70618 T94 arg94, 70619 T95 arg95, 70620 T96 arg96, 70621 T97 arg97, 70622 T98 arg98, 70623 T99 arg99, 70624 T100 arg100, 70625 T101 arg101, 70626 T102 arg102, 70627 T103 arg103, 70628 T104 arg104, 70629 T105 arg105, 70630 T106 arg106, 70631 T107 arg107, 70632 T108 arg108, 70633 T109 arg109, 70634 T110 arg110, 70635 T111 arg111, 70636 T112 arg112, 70637 T113 arg113, 70638 T114 arg114, 70639 T115 arg115, 70640 T116 arg116, 70641 T117 arg117, 70642 T118 arg118, 70643 T119 arg119, 70644 T120 arg120, 70645 T121 arg121) 70646 { 70647 return functor_( 70648 enqueueArgs, 70649 arg0, 70650 arg1, 70651 arg2, 70652 arg3, 70653 arg4, 70654 arg5, 70655 arg6, 70656 arg7, 70657 arg8, 70658 arg9, 70659 arg10, 70660 arg11, 70661 arg12, 70662 arg13, 70663 arg14, 70664 arg15, 70665 arg16, 70666 arg17, 70667 arg18, 70668 arg19, 70669 arg20, 70670 arg21, 70671 arg22, 70672 arg23, 70673 arg24, 70674 arg25, 70675 arg26, 70676 arg27, 70677 arg28, 70678 arg29, 70679 arg30, 70680 arg31, 70681 arg32, 70682 arg33, 70683 arg34, 70684 arg35, 70685 arg36, 70686 arg37, 70687 arg38, 70688 arg39, 70689 arg40, 70690 arg41, 70691 arg42, 70692 arg43, 70693 arg44, 70694 arg45, 70695 arg46, 70696 arg47, 70697 arg48, 70698 arg49, 70699 arg50, 70700 arg51, 70701 arg52, 70702 arg53, 70703 arg54, 70704 arg55, 70705 arg56, 70706 arg57, 70707 arg58, 70708 arg59, 70709 arg60, 70710 arg61, 70711 arg62, 70712 arg63, 70713 arg64, 70714 arg65, 70715 arg66, 70716 arg67, 70717 arg68, 70718 arg69, 70719 arg70, 70720 arg71, 70721 arg72, 70722 arg73, 70723 arg74, 70724 arg75, 70725 arg76, 70726 arg77, 70727 arg78, 70728 arg79, 70729 arg80, 70730 arg81, 70731 arg82, 70732 arg83, 70733 arg84, 70734 arg85, 70735 arg86, 70736 arg87, 70737 arg88, 70738 arg89, 70739 arg90, 70740 arg91, 70741 arg92, 70742 arg93, 70743 arg94, 70744 arg95, 70745 arg96, 70746 arg97, 70747 arg98, 70748 arg99, 70749 arg100, 70750 arg101, 70751 arg102, 70752 arg103, 70753 arg104, 70754 arg105, 70755 arg106, 70756 arg107, 70757 arg108, 70758 arg109, 70759 arg110, 70760 arg111, 70761 arg112, 70762 arg113, 70763 arg114, 70764 arg115, 70765 arg116, 70766 arg117, 70767 arg118, 70768 arg119, 70769 arg120, 70770 arg121); 70771 } 70772 70773 operator type_ () 70774 { 70775 return type_(*this); 70776 } 70777 70778 }; 70779 70780 template< 70781 typename T0, 70782 typename T1, 70783 typename T2, 70784 typename T3, 70785 typename T4, 70786 typename T5, 70787 typename T6, 70788 typename T7, 70789 typename T8, 70790 typename T9, 70791 typename T10, 70792 typename T11, 70793 typename T12, 70794 typename T13, 70795 typename T14, 70796 typename T15, 70797 typename T16, 70798 typename T17, 70799 typename T18, 70800 typename T19, 70801 typename T20, 70802 typename T21, 70803 typename T22, 70804 typename T23, 70805 typename T24, 70806 typename T25, 70807 typename T26, 70808 typename T27, 70809 typename T28, 70810 typename T29, 70811 typename T30, 70812 typename T31, 70813 typename T32, 70814 typename T33, 70815 typename T34, 70816 typename T35, 70817 typename T36, 70818 typename T37, 70819 typename T38, 70820 typename T39, 70821 typename T40, 70822 typename T41, 70823 typename T42, 70824 typename T43, 70825 typename T44, 70826 typename T45, 70827 typename T46, 70828 typename T47, 70829 typename T48, 70830 typename T49, 70831 typename T50, 70832 typename T51, 70833 typename T52, 70834 typename T53, 70835 typename T54, 70836 typename T55, 70837 typename T56, 70838 typename T57, 70839 typename T58, 70840 typename T59, 70841 typename T60, 70842 typename T61, 70843 typename T62, 70844 typename T63, 70845 typename T64, 70846 typename T65, 70847 typename T66, 70848 typename T67, 70849 typename T68, 70850 typename T69, 70851 typename T70, 70852 typename T71, 70853 typename T72, 70854 typename T73, 70855 typename T74, 70856 typename T75, 70857 typename T76, 70858 typename T77, 70859 typename T78, 70860 typename T79, 70861 typename T80, 70862 typename T81, 70863 typename T82, 70864 typename T83, 70865 typename T84, 70866 typename T85, 70867 typename T86, 70868 typename T87, 70869 typename T88, 70870 typename T89, 70871 typename T90, 70872 typename T91, 70873 typename T92, 70874 typename T93, 70875 typename T94, 70876 typename T95, 70877 typename T96, 70878 typename T97, 70879 typename T98, 70880 typename T99, 70881 typename T100, 70882 typename T101, 70883 typename T102, 70884 typename T103, 70885 typename T104, 70886 typename T105, 70887 typename T106, 70888 typename T107, 70889 typename T108, 70890 typename T109, 70891 typename T110, 70892 typename T111, 70893 typename T112, 70894 typename T113, 70895 typename T114, 70896 typename T115, 70897 typename T116, 70898 typename T117, 70899 typename T118, 70900 typename T119, 70901 typename T120, 70902 typename T121, 70903 typename T122> 70904 struct functionImplementation_< 70905 T0, 70906 T1, 70907 T2, 70908 T3, 70909 T4, 70910 T5, 70911 T6, 70912 T7, 70913 T8, 70914 T9, 70915 T10, 70916 T11, 70917 T12, 70918 T13, 70919 T14, 70920 T15, 70921 T16, 70922 T17, 70923 T18, 70924 T19, 70925 T20, 70926 T21, 70927 T22, 70928 T23, 70929 T24, 70930 T25, 70931 T26, 70932 T27, 70933 T28, 70934 T29, 70935 T30, 70936 T31, 70937 T32, 70938 T33, 70939 T34, 70940 T35, 70941 T36, 70942 T37, 70943 T38, 70944 T39, 70945 T40, 70946 T41, 70947 T42, 70948 T43, 70949 T44, 70950 T45, 70951 T46, 70952 T47, 70953 T48, 70954 T49, 70955 T50, 70956 T51, 70957 T52, 70958 T53, 70959 T54, 70960 T55, 70961 T56, 70962 T57, 70963 T58, 70964 T59, 70965 T60, 70966 T61, 70967 T62, 70968 T63, 70969 T64, 70970 T65, 70971 T66, 70972 T67, 70973 T68, 70974 T69, 70975 T70, 70976 T71, 70977 T72, 70978 T73, 70979 T74, 70980 T75, 70981 T76, 70982 T77, 70983 T78, 70984 T79, 70985 T80, 70986 T81, 70987 T82, 70988 T83, 70989 T84, 70990 T85, 70991 T86, 70992 T87, 70993 T88, 70994 T89, 70995 T90, 70996 T91, 70997 T92, 70998 T93, 70999 T94, 71000 T95, 71001 T96, 71002 T97, 71003 T98, 71004 T99, 71005 T100, 71006 T101, 71007 T102, 71008 T103, 71009 T104, 71010 T105, 71011 T106, 71012 T107, 71013 T108, 71014 T109, 71015 T110, 71016 T111, 71017 T112, 71018 T113, 71019 T114, 71020 T115, 71021 T116, 71022 T117, 71023 T118, 71024 T119, 71025 T120, 71026 T121, 71027 T122, 71028 NullType, 71029 NullType, 71030 NullType, 71031 NullType, 71032 NullType> 71033 { 71034 typedef detail::KernelFunctorGlobal< 71035 T0, 71036 T1, 71037 T2, 71038 T3, 71039 T4, 71040 T5, 71041 T6, 71042 T7, 71043 T8, 71044 T9, 71045 T10, 71046 T11, 71047 T12, 71048 T13, 71049 T14, 71050 T15, 71051 T16, 71052 T17, 71053 T18, 71054 T19, 71055 T20, 71056 T21, 71057 T22, 71058 T23, 71059 T24, 71060 T25, 71061 T26, 71062 T27, 71063 T28, 71064 T29, 71065 T30, 71066 T31, 71067 T32, 71068 T33, 71069 T34, 71070 T35, 71071 T36, 71072 T37, 71073 T38, 71074 T39, 71075 T40, 71076 T41, 71077 T42, 71078 T43, 71079 T44, 71080 T45, 71081 T46, 71082 T47, 71083 T48, 71084 T49, 71085 T50, 71086 T51, 71087 T52, 71088 T53, 71089 T54, 71090 T55, 71091 T56, 71092 T57, 71093 T58, 71094 T59, 71095 T60, 71096 T61, 71097 T62, 71098 T63, 71099 T64, 71100 T65, 71101 T66, 71102 T67, 71103 T68, 71104 T69, 71105 T70, 71106 T71, 71107 T72, 71108 T73, 71109 T74, 71110 T75, 71111 T76, 71112 T77, 71113 T78, 71114 T79, 71115 T80, 71116 T81, 71117 T82, 71118 T83, 71119 T84, 71120 T85, 71121 T86, 71122 T87, 71123 T88, 71124 T89, 71125 T90, 71126 T91, 71127 T92, 71128 T93, 71129 T94, 71130 T95, 71131 T96, 71132 T97, 71133 T98, 71134 T99, 71135 T100, 71136 T101, 71137 T102, 71138 T103, 71139 T104, 71140 T105, 71141 T106, 71142 T107, 71143 T108, 71144 T109, 71145 T110, 71146 T111, 71147 T112, 71148 T113, 71149 T114, 71150 T115, 71151 T116, 71152 T117, 71153 T118, 71154 T119, 71155 T120, 71156 T121, 71157 T122, 71158 NullType, 71159 NullType, 71160 NullType, 71161 NullType, 71162 NullType> FunctorType; 71163 71164 FunctorType functor_; 71165 71166 functionImplementation_(const FunctorType &functor) : 71167 functor_(functor) 71168 { 71169 } 71170 71171 typedef std::tr1::function<Event ( 71172 const EnqueueArgs&, 71173 T0, 71174 T1, 71175 T2, 71176 T3, 71177 T4, 71178 T5, 71179 T6, 71180 T7, 71181 T8, 71182 T9, 71183 T10, 71184 T11, 71185 T12, 71186 T13, 71187 T14, 71188 T15, 71189 T16, 71190 T17, 71191 T18, 71192 T19, 71193 T20, 71194 T21, 71195 T22, 71196 T23, 71197 T24, 71198 T25, 71199 T26, 71200 T27, 71201 T28, 71202 T29, 71203 T30, 71204 T31, 71205 T32, 71206 T33, 71207 T34, 71208 T35, 71209 T36, 71210 T37, 71211 T38, 71212 T39, 71213 T40, 71214 T41, 71215 T42, 71216 T43, 71217 T44, 71218 T45, 71219 T46, 71220 T47, 71221 T48, 71222 T49, 71223 T50, 71224 T51, 71225 T52, 71226 T53, 71227 T54, 71228 T55, 71229 T56, 71230 T57, 71231 T58, 71232 T59, 71233 T60, 71234 T61, 71235 T62, 71236 T63, 71237 T64, 71238 T65, 71239 T66, 71240 T67, 71241 T68, 71242 T69, 71243 T70, 71244 T71, 71245 T72, 71246 T73, 71247 T74, 71248 T75, 71249 T76, 71250 T77, 71251 T78, 71252 T79, 71253 T80, 71254 T81, 71255 T82, 71256 T83, 71257 T84, 71258 T85, 71259 T86, 71260 T87, 71261 T88, 71262 T89, 71263 T90, 71264 T91, 71265 T92, 71266 T93, 71267 T94, 71268 T95, 71269 T96, 71270 T97, 71271 T98, 71272 T99, 71273 T100, 71274 T101, 71275 T102, 71276 T103, 71277 T104, 71278 T105, 71279 T106, 71280 T107, 71281 T108, 71282 T109, 71283 T110, 71284 T111, 71285 T112, 71286 T113, 71287 T114, 71288 T115, 71289 T116, 71290 T117, 71291 T118, 71292 T119, 71293 T120, 71294 T121, 71295 T122)> type_; 71296 71297 Event operator()(const EnqueueArgs& enqueueArgs, 71298 T0 arg0, 71299 T1 arg1, 71300 T2 arg2, 71301 T3 arg3, 71302 T4 arg4, 71303 T5 arg5, 71304 T6 arg6, 71305 T7 arg7, 71306 T8 arg8, 71307 T9 arg9, 71308 T10 arg10, 71309 T11 arg11, 71310 T12 arg12, 71311 T13 arg13, 71312 T14 arg14, 71313 T15 arg15, 71314 T16 arg16, 71315 T17 arg17, 71316 T18 arg18, 71317 T19 arg19, 71318 T20 arg20, 71319 T21 arg21, 71320 T22 arg22, 71321 T23 arg23, 71322 T24 arg24, 71323 T25 arg25, 71324 T26 arg26, 71325 T27 arg27, 71326 T28 arg28, 71327 T29 arg29, 71328 T30 arg30, 71329 T31 arg31, 71330 T32 arg32, 71331 T33 arg33, 71332 T34 arg34, 71333 T35 arg35, 71334 T36 arg36, 71335 T37 arg37, 71336 T38 arg38, 71337 T39 arg39, 71338 T40 arg40, 71339 T41 arg41, 71340 T42 arg42, 71341 T43 arg43, 71342 T44 arg44, 71343 T45 arg45, 71344 T46 arg46, 71345 T47 arg47, 71346 T48 arg48, 71347 T49 arg49, 71348 T50 arg50, 71349 T51 arg51, 71350 T52 arg52, 71351 T53 arg53, 71352 T54 arg54, 71353 T55 arg55, 71354 T56 arg56, 71355 T57 arg57, 71356 T58 arg58, 71357 T59 arg59, 71358 T60 arg60, 71359 T61 arg61, 71360 T62 arg62, 71361 T63 arg63, 71362 T64 arg64, 71363 T65 arg65, 71364 T66 arg66, 71365 T67 arg67, 71366 T68 arg68, 71367 T69 arg69, 71368 T70 arg70, 71369 T71 arg71, 71370 T72 arg72, 71371 T73 arg73, 71372 T74 arg74, 71373 T75 arg75, 71374 T76 arg76, 71375 T77 arg77, 71376 T78 arg78, 71377 T79 arg79, 71378 T80 arg80, 71379 T81 arg81, 71380 T82 arg82, 71381 T83 arg83, 71382 T84 arg84, 71383 T85 arg85, 71384 T86 arg86, 71385 T87 arg87, 71386 T88 arg88, 71387 T89 arg89, 71388 T90 arg90, 71389 T91 arg91, 71390 T92 arg92, 71391 T93 arg93, 71392 T94 arg94, 71393 T95 arg95, 71394 T96 arg96, 71395 T97 arg97, 71396 T98 arg98, 71397 T99 arg99, 71398 T100 arg100, 71399 T101 arg101, 71400 T102 arg102, 71401 T103 arg103, 71402 T104 arg104, 71403 T105 arg105, 71404 T106 arg106, 71405 T107 arg107, 71406 T108 arg108, 71407 T109 arg109, 71408 T110 arg110, 71409 T111 arg111, 71410 T112 arg112, 71411 T113 arg113, 71412 T114 arg114, 71413 T115 arg115, 71414 T116 arg116, 71415 T117 arg117, 71416 T118 arg118, 71417 T119 arg119, 71418 T120 arg120, 71419 T121 arg121, 71420 T122 arg122) 71421 { 71422 return functor_( 71423 enqueueArgs, 71424 arg0, 71425 arg1, 71426 arg2, 71427 arg3, 71428 arg4, 71429 arg5, 71430 arg6, 71431 arg7, 71432 arg8, 71433 arg9, 71434 arg10, 71435 arg11, 71436 arg12, 71437 arg13, 71438 arg14, 71439 arg15, 71440 arg16, 71441 arg17, 71442 arg18, 71443 arg19, 71444 arg20, 71445 arg21, 71446 arg22, 71447 arg23, 71448 arg24, 71449 arg25, 71450 arg26, 71451 arg27, 71452 arg28, 71453 arg29, 71454 arg30, 71455 arg31, 71456 arg32, 71457 arg33, 71458 arg34, 71459 arg35, 71460 arg36, 71461 arg37, 71462 arg38, 71463 arg39, 71464 arg40, 71465 arg41, 71466 arg42, 71467 arg43, 71468 arg44, 71469 arg45, 71470 arg46, 71471 arg47, 71472 arg48, 71473 arg49, 71474 arg50, 71475 arg51, 71476 arg52, 71477 arg53, 71478 arg54, 71479 arg55, 71480 arg56, 71481 arg57, 71482 arg58, 71483 arg59, 71484 arg60, 71485 arg61, 71486 arg62, 71487 arg63, 71488 arg64, 71489 arg65, 71490 arg66, 71491 arg67, 71492 arg68, 71493 arg69, 71494 arg70, 71495 arg71, 71496 arg72, 71497 arg73, 71498 arg74, 71499 arg75, 71500 arg76, 71501 arg77, 71502 arg78, 71503 arg79, 71504 arg80, 71505 arg81, 71506 arg82, 71507 arg83, 71508 arg84, 71509 arg85, 71510 arg86, 71511 arg87, 71512 arg88, 71513 arg89, 71514 arg90, 71515 arg91, 71516 arg92, 71517 arg93, 71518 arg94, 71519 arg95, 71520 arg96, 71521 arg97, 71522 arg98, 71523 arg99, 71524 arg100, 71525 arg101, 71526 arg102, 71527 arg103, 71528 arg104, 71529 arg105, 71530 arg106, 71531 arg107, 71532 arg108, 71533 arg109, 71534 arg110, 71535 arg111, 71536 arg112, 71537 arg113, 71538 arg114, 71539 arg115, 71540 arg116, 71541 arg117, 71542 arg118, 71543 arg119, 71544 arg120, 71545 arg121, 71546 arg122); 71547 } 71548 71549 operator type_ () 71550 { 71551 return type_(*this); 71552 } 71553 71554 }; 71555 71556 template< 71557 typename T0, 71558 typename T1, 71559 typename T2, 71560 typename T3, 71561 typename T4, 71562 typename T5, 71563 typename T6, 71564 typename T7, 71565 typename T8, 71566 typename T9, 71567 typename T10, 71568 typename T11, 71569 typename T12, 71570 typename T13, 71571 typename T14, 71572 typename T15, 71573 typename T16, 71574 typename T17, 71575 typename T18, 71576 typename T19, 71577 typename T20, 71578 typename T21, 71579 typename T22, 71580 typename T23, 71581 typename T24, 71582 typename T25, 71583 typename T26, 71584 typename T27, 71585 typename T28, 71586 typename T29, 71587 typename T30, 71588 typename T31, 71589 typename T32, 71590 typename T33, 71591 typename T34, 71592 typename T35, 71593 typename T36, 71594 typename T37, 71595 typename T38, 71596 typename T39, 71597 typename T40, 71598 typename T41, 71599 typename T42, 71600 typename T43, 71601 typename T44, 71602 typename T45, 71603 typename T46, 71604 typename T47, 71605 typename T48, 71606 typename T49, 71607 typename T50, 71608 typename T51, 71609 typename T52, 71610 typename T53, 71611 typename T54, 71612 typename T55, 71613 typename T56, 71614 typename T57, 71615 typename T58, 71616 typename T59, 71617 typename T60, 71618 typename T61, 71619 typename T62, 71620 typename T63, 71621 typename T64, 71622 typename T65, 71623 typename T66, 71624 typename T67, 71625 typename T68, 71626 typename T69, 71627 typename T70, 71628 typename T71, 71629 typename T72, 71630 typename T73, 71631 typename T74, 71632 typename T75, 71633 typename T76, 71634 typename T77, 71635 typename T78, 71636 typename T79, 71637 typename T80, 71638 typename T81, 71639 typename T82, 71640 typename T83, 71641 typename T84, 71642 typename T85, 71643 typename T86, 71644 typename T87, 71645 typename T88, 71646 typename T89, 71647 typename T90, 71648 typename T91, 71649 typename T92, 71650 typename T93, 71651 typename T94, 71652 typename T95, 71653 typename T96, 71654 typename T97, 71655 typename T98, 71656 typename T99, 71657 typename T100, 71658 typename T101, 71659 typename T102, 71660 typename T103, 71661 typename T104, 71662 typename T105, 71663 typename T106, 71664 typename T107, 71665 typename T108, 71666 typename T109, 71667 typename T110, 71668 typename T111, 71669 typename T112, 71670 typename T113, 71671 typename T114, 71672 typename T115, 71673 typename T116, 71674 typename T117, 71675 typename T118, 71676 typename T119, 71677 typename T120, 71678 typename T121, 71679 typename T122, 71680 typename T123> 71681 struct functionImplementation_< 71682 T0, 71683 T1, 71684 T2, 71685 T3, 71686 T4, 71687 T5, 71688 T6, 71689 T7, 71690 T8, 71691 T9, 71692 T10, 71693 T11, 71694 T12, 71695 T13, 71696 T14, 71697 T15, 71698 T16, 71699 T17, 71700 T18, 71701 T19, 71702 T20, 71703 T21, 71704 T22, 71705 T23, 71706 T24, 71707 T25, 71708 T26, 71709 T27, 71710 T28, 71711 T29, 71712 T30, 71713 T31, 71714 T32, 71715 T33, 71716 T34, 71717 T35, 71718 T36, 71719 T37, 71720 T38, 71721 T39, 71722 T40, 71723 T41, 71724 T42, 71725 T43, 71726 T44, 71727 T45, 71728 T46, 71729 T47, 71730 T48, 71731 T49, 71732 T50, 71733 T51, 71734 T52, 71735 T53, 71736 T54, 71737 T55, 71738 T56, 71739 T57, 71740 T58, 71741 T59, 71742 T60, 71743 T61, 71744 T62, 71745 T63, 71746 T64, 71747 T65, 71748 T66, 71749 T67, 71750 T68, 71751 T69, 71752 T70, 71753 T71, 71754 T72, 71755 T73, 71756 T74, 71757 T75, 71758 T76, 71759 T77, 71760 T78, 71761 T79, 71762 T80, 71763 T81, 71764 T82, 71765 T83, 71766 T84, 71767 T85, 71768 T86, 71769 T87, 71770 T88, 71771 T89, 71772 T90, 71773 T91, 71774 T92, 71775 T93, 71776 T94, 71777 T95, 71778 T96, 71779 T97, 71780 T98, 71781 T99, 71782 T100, 71783 T101, 71784 T102, 71785 T103, 71786 T104, 71787 T105, 71788 T106, 71789 T107, 71790 T108, 71791 T109, 71792 T110, 71793 T111, 71794 T112, 71795 T113, 71796 T114, 71797 T115, 71798 T116, 71799 T117, 71800 T118, 71801 T119, 71802 T120, 71803 T121, 71804 T122, 71805 T123, 71806 NullType, 71807 NullType, 71808 NullType, 71809 NullType> 71810 { 71811 typedef detail::KernelFunctorGlobal< 71812 T0, 71813 T1, 71814 T2, 71815 T3, 71816 T4, 71817 T5, 71818 T6, 71819 T7, 71820 T8, 71821 T9, 71822 T10, 71823 T11, 71824 T12, 71825 T13, 71826 T14, 71827 T15, 71828 T16, 71829 T17, 71830 T18, 71831 T19, 71832 T20, 71833 T21, 71834 T22, 71835 T23, 71836 T24, 71837 T25, 71838 T26, 71839 T27, 71840 T28, 71841 T29, 71842 T30, 71843 T31, 71844 T32, 71845 T33, 71846 T34, 71847 T35, 71848 T36, 71849 T37, 71850 T38, 71851 T39, 71852 T40, 71853 T41, 71854 T42, 71855 T43, 71856 T44, 71857 T45, 71858 T46, 71859 T47, 71860 T48, 71861 T49, 71862 T50, 71863 T51, 71864 T52, 71865 T53, 71866 T54, 71867 T55, 71868 T56, 71869 T57, 71870 T58, 71871 T59, 71872 T60, 71873 T61, 71874 T62, 71875 T63, 71876 T64, 71877 T65, 71878 T66, 71879 T67, 71880 T68, 71881 T69, 71882 T70, 71883 T71, 71884 T72, 71885 T73, 71886 T74, 71887 T75, 71888 T76, 71889 T77, 71890 T78, 71891 T79, 71892 T80, 71893 T81, 71894 T82, 71895 T83, 71896 T84, 71897 T85, 71898 T86, 71899 T87, 71900 T88, 71901 T89, 71902 T90, 71903 T91, 71904 T92, 71905 T93, 71906 T94, 71907 T95, 71908 T96, 71909 T97, 71910 T98, 71911 T99, 71912 T100, 71913 T101, 71914 T102, 71915 T103, 71916 T104, 71917 T105, 71918 T106, 71919 T107, 71920 T108, 71921 T109, 71922 T110, 71923 T111, 71924 T112, 71925 T113, 71926 T114, 71927 T115, 71928 T116, 71929 T117, 71930 T118, 71931 T119, 71932 T120, 71933 T121, 71934 T122, 71935 T123, 71936 NullType, 71937 NullType, 71938 NullType, 71939 NullType> FunctorType; 71940 71941 FunctorType functor_; 71942 71943 functionImplementation_(const FunctorType &functor) : 71944 functor_(functor) 71945 { 71946 } 71947 71948 typedef std::tr1::function<Event ( 71949 const EnqueueArgs&, 71950 T0, 71951 T1, 71952 T2, 71953 T3, 71954 T4, 71955 T5, 71956 T6, 71957 T7, 71958 T8, 71959 T9, 71960 T10, 71961 T11, 71962 T12, 71963 T13, 71964 T14, 71965 T15, 71966 T16, 71967 T17, 71968 T18, 71969 T19, 71970 T20, 71971 T21, 71972 T22, 71973 T23, 71974 T24, 71975 T25, 71976 T26, 71977 T27, 71978 T28, 71979 T29, 71980 T30, 71981 T31, 71982 T32, 71983 T33, 71984 T34, 71985 T35, 71986 T36, 71987 T37, 71988 T38, 71989 T39, 71990 T40, 71991 T41, 71992 T42, 71993 T43, 71994 T44, 71995 T45, 71996 T46, 71997 T47, 71998 T48, 71999 T49, 72000 T50, 72001 T51, 72002 T52, 72003 T53, 72004 T54, 72005 T55, 72006 T56, 72007 T57, 72008 T58, 72009 T59, 72010 T60, 72011 T61, 72012 T62, 72013 T63, 72014 T64, 72015 T65, 72016 T66, 72017 T67, 72018 T68, 72019 T69, 72020 T70, 72021 T71, 72022 T72, 72023 T73, 72024 T74, 72025 T75, 72026 T76, 72027 T77, 72028 T78, 72029 T79, 72030 T80, 72031 T81, 72032 T82, 72033 T83, 72034 T84, 72035 T85, 72036 T86, 72037 T87, 72038 T88, 72039 T89, 72040 T90, 72041 T91, 72042 T92, 72043 T93, 72044 T94, 72045 T95, 72046 T96, 72047 T97, 72048 T98, 72049 T99, 72050 T100, 72051 T101, 72052 T102, 72053 T103, 72054 T104, 72055 T105, 72056 T106, 72057 T107, 72058 T108, 72059 T109, 72060 T110, 72061 T111, 72062 T112, 72063 T113, 72064 T114, 72065 T115, 72066 T116, 72067 T117, 72068 T118, 72069 T119, 72070 T120, 72071 T121, 72072 T122, 72073 T123)> type_; 72074 72075 Event operator()(const EnqueueArgs& enqueueArgs, 72076 T0 arg0, 72077 T1 arg1, 72078 T2 arg2, 72079 T3 arg3, 72080 T4 arg4, 72081 T5 arg5, 72082 T6 arg6, 72083 T7 arg7, 72084 T8 arg8, 72085 T9 arg9, 72086 T10 arg10, 72087 T11 arg11, 72088 T12 arg12, 72089 T13 arg13, 72090 T14 arg14, 72091 T15 arg15, 72092 T16 arg16, 72093 T17 arg17, 72094 T18 arg18, 72095 T19 arg19, 72096 T20 arg20, 72097 T21 arg21, 72098 T22 arg22, 72099 T23 arg23, 72100 T24 arg24, 72101 T25 arg25, 72102 T26 arg26, 72103 T27 arg27, 72104 T28 arg28, 72105 T29 arg29, 72106 T30 arg30, 72107 T31 arg31, 72108 T32 arg32, 72109 T33 arg33, 72110 T34 arg34, 72111 T35 arg35, 72112 T36 arg36, 72113 T37 arg37, 72114 T38 arg38, 72115 T39 arg39, 72116 T40 arg40, 72117 T41 arg41, 72118 T42 arg42, 72119 T43 arg43, 72120 T44 arg44, 72121 T45 arg45, 72122 T46 arg46, 72123 T47 arg47, 72124 T48 arg48, 72125 T49 arg49, 72126 T50 arg50, 72127 T51 arg51, 72128 T52 arg52, 72129 T53 arg53, 72130 T54 arg54, 72131 T55 arg55, 72132 T56 arg56, 72133 T57 arg57, 72134 T58 arg58, 72135 T59 arg59, 72136 T60 arg60, 72137 T61 arg61, 72138 T62 arg62, 72139 T63 arg63, 72140 T64 arg64, 72141 T65 arg65, 72142 T66 arg66, 72143 T67 arg67, 72144 T68 arg68, 72145 T69 arg69, 72146 T70 arg70, 72147 T71 arg71, 72148 T72 arg72, 72149 T73 arg73, 72150 T74 arg74, 72151 T75 arg75, 72152 T76 arg76, 72153 T77 arg77, 72154 T78 arg78, 72155 T79 arg79, 72156 T80 arg80, 72157 T81 arg81, 72158 T82 arg82, 72159 T83 arg83, 72160 T84 arg84, 72161 T85 arg85, 72162 T86 arg86, 72163 T87 arg87, 72164 T88 arg88, 72165 T89 arg89, 72166 T90 arg90, 72167 T91 arg91, 72168 T92 arg92, 72169 T93 arg93, 72170 T94 arg94, 72171 T95 arg95, 72172 T96 arg96, 72173 T97 arg97, 72174 T98 arg98, 72175 T99 arg99, 72176 T100 arg100, 72177 T101 arg101, 72178 T102 arg102, 72179 T103 arg103, 72180 T104 arg104, 72181 T105 arg105, 72182 T106 arg106, 72183 T107 arg107, 72184 T108 arg108, 72185 T109 arg109, 72186 T110 arg110, 72187 T111 arg111, 72188 T112 arg112, 72189 T113 arg113, 72190 T114 arg114, 72191 T115 arg115, 72192 T116 arg116, 72193 T117 arg117, 72194 T118 arg118, 72195 T119 arg119, 72196 T120 arg120, 72197 T121 arg121, 72198 T122 arg122, 72199 T123 arg123) 72200 { 72201 return functor_( 72202 enqueueArgs, 72203 arg0, 72204 arg1, 72205 arg2, 72206 arg3, 72207 arg4, 72208 arg5, 72209 arg6, 72210 arg7, 72211 arg8, 72212 arg9, 72213 arg10, 72214 arg11, 72215 arg12, 72216 arg13, 72217 arg14, 72218 arg15, 72219 arg16, 72220 arg17, 72221 arg18, 72222 arg19, 72223 arg20, 72224 arg21, 72225 arg22, 72226 arg23, 72227 arg24, 72228 arg25, 72229 arg26, 72230 arg27, 72231 arg28, 72232 arg29, 72233 arg30, 72234 arg31, 72235 arg32, 72236 arg33, 72237 arg34, 72238 arg35, 72239 arg36, 72240 arg37, 72241 arg38, 72242 arg39, 72243 arg40, 72244 arg41, 72245 arg42, 72246 arg43, 72247 arg44, 72248 arg45, 72249 arg46, 72250 arg47, 72251 arg48, 72252 arg49, 72253 arg50, 72254 arg51, 72255 arg52, 72256 arg53, 72257 arg54, 72258 arg55, 72259 arg56, 72260 arg57, 72261 arg58, 72262 arg59, 72263 arg60, 72264 arg61, 72265 arg62, 72266 arg63, 72267 arg64, 72268 arg65, 72269 arg66, 72270 arg67, 72271 arg68, 72272 arg69, 72273 arg70, 72274 arg71, 72275 arg72, 72276 arg73, 72277 arg74, 72278 arg75, 72279 arg76, 72280 arg77, 72281 arg78, 72282 arg79, 72283 arg80, 72284 arg81, 72285 arg82, 72286 arg83, 72287 arg84, 72288 arg85, 72289 arg86, 72290 arg87, 72291 arg88, 72292 arg89, 72293 arg90, 72294 arg91, 72295 arg92, 72296 arg93, 72297 arg94, 72298 arg95, 72299 arg96, 72300 arg97, 72301 arg98, 72302 arg99, 72303 arg100, 72304 arg101, 72305 arg102, 72306 arg103, 72307 arg104, 72308 arg105, 72309 arg106, 72310 arg107, 72311 arg108, 72312 arg109, 72313 arg110, 72314 arg111, 72315 arg112, 72316 arg113, 72317 arg114, 72318 arg115, 72319 arg116, 72320 arg117, 72321 arg118, 72322 arg119, 72323 arg120, 72324 arg121, 72325 arg122, 72326 arg123); 72327 } 72328 72329 operator type_ () 72330 { 72331 return type_(*this); 72332 } 72333 72334 }; 72335 72336 template< 72337 typename T0, 72338 typename T1, 72339 typename T2, 72340 typename T3, 72341 typename T4, 72342 typename T5, 72343 typename T6, 72344 typename T7, 72345 typename T8, 72346 typename T9, 72347 typename T10, 72348 typename T11, 72349 typename T12, 72350 typename T13, 72351 typename T14, 72352 typename T15, 72353 typename T16, 72354 typename T17, 72355 typename T18, 72356 typename T19, 72357 typename T20, 72358 typename T21, 72359 typename T22, 72360 typename T23, 72361 typename T24, 72362 typename T25, 72363 typename T26, 72364 typename T27, 72365 typename T28, 72366 typename T29, 72367 typename T30, 72368 typename T31, 72369 typename T32, 72370 typename T33, 72371 typename T34, 72372 typename T35, 72373 typename T36, 72374 typename T37, 72375 typename T38, 72376 typename T39, 72377 typename T40, 72378 typename T41, 72379 typename T42, 72380 typename T43, 72381 typename T44, 72382 typename T45, 72383 typename T46, 72384 typename T47, 72385 typename T48, 72386 typename T49, 72387 typename T50, 72388 typename T51, 72389 typename T52, 72390 typename T53, 72391 typename T54, 72392 typename T55, 72393 typename T56, 72394 typename T57, 72395 typename T58, 72396 typename T59, 72397 typename T60, 72398 typename T61, 72399 typename T62, 72400 typename T63, 72401 typename T64, 72402 typename T65, 72403 typename T66, 72404 typename T67, 72405 typename T68, 72406 typename T69, 72407 typename T70, 72408 typename T71, 72409 typename T72, 72410 typename T73, 72411 typename T74, 72412 typename T75, 72413 typename T76, 72414 typename T77, 72415 typename T78, 72416 typename T79, 72417 typename T80, 72418 typename T81, 72419 typename T82, 72420 typename T83, 72421 typename T84, 72422 typename T85, 72423 typename T86, 72424 typename T87, 72425 typename T88, 72426 typename T89, 72427 typename T90, 72428 typename T91, 72429 typename T92, 72430 typename T93, 72431 typename T94, 72432 typename T95, 72433 typename T96, 72434 typename T97, 72435 typename T98, 72436 typename T99, 72437 typename T100, 72438 typename T101, 72439 typename T102, 72440 typename T103, 72441 typename T104, 72442 typename T105, 72443 typename T106, 72444 typename T107, 72445 typename T108, 72446 typename T109, 72447 typename T110, 72448 typename T111, 72449 typename T112, 72450 typename T113, 72451 typename T114, 72452 typename T115, 72453 typename T116, 72454 typename T117, 72455 typename T118, 72456 typename T119, 72457 typename T120, 72458 typename T121, 72459 typename T122, 72460 typename T123, 72461 typename T124> 72462 struct functionImplementation_< 72463 T0, 72464 T1, 72465 T2, 72466 T3, 72467 T4, 72468 T5, 72469 T6, 72470 T7, 72471 T8, 72472 T9, 72473 T10, 72474 T11, 72475 T12, 72476 T13, 72477 T14, 72478 T15, 72479 T16, 72480 T17, 72481 T18, 72482 T19, 72483 T20, 72484 T21, 72485 T22, 72486 T23, 72487 T24, 72488 T25, 72489 T26, 72490 T27, 72491 T28, 72492 T29, 72493 T30, 72494 T31, 72495 T32, 72496 T33, 72497 T34, 72498 T35, 72499 T36, 72500 T37, 72501 T38, 72502 T39, 72503 T40, 72504 T41, 72505 T42, 72506 T43, 72507 T44, 72508 T45, 72509 T46, 72510 T47, 72511 T48, 72512 T49, 72513 T50, 72514 T51, 72515 T52, 72516 T53, 72517 T54, 72518 T55, 72519 T56, 72520 T57, 72521 T58, 72522 T59, 72523 T60, 72524 T61, 72525 T62, 72526 T63, 72527 T64, 72528 T65, 72529 T66, 72530 T67, 72531 T68, 72532 T69, 72533 T70, 72534 T71, 72535 T72, 72536 T73, 72537 T74, 72538 T75, 72539 T76, 72540 T77, 72541 T78, 72542 T79, 72543 T80, 72544 T81, 72545 T82, 72546 T83, 72547 T84, 72548 T85, 72549 T86, 72550 T87, 72551 T88, 72552 T89, 72553 T90, 72554 T91, 72555 T92, 72556 T93, 72557 T94, 72558 T95, 72559 T96, 72560 T97, 72561 T98, 72562 T99, 72563 T100, 72564 T101, 72565 T102, 72566 T103, 72567 T104, 72568 T105, 72569 T106, 72570 T107, 72571 T108, 72572 T109, 72573 T110, 72574 T111, 72575 T112, 72576 T113, 72577 T114, 72578 T115, 72579 T116, 72580 T117, 72581 T118, 72582 T119, 72583 T120, 72584 T121, 72585 T122, 72586 T123, 72587 T124, 72588 NullType, 72589 NullType, 72590 NullType> 72591 { 72592 typedef detail::KernelFunctorGlobal< 72593 T0, 72594 T1, 72595 T2, 72596 T3, 72597 T4, 72598 T5, 72599 T6, 72600 T7, 72601 T8, 72602 T9, 72603 T10, 72604 T11, 72605 T12, 72606 T13, 72607 T14, 72608 T15, 72609 T16, 72610 T17, 72611 T18, 72612 T19, 72613 T20, 72614 T21, 72615 T22, 72616 T23, 72617 T24, 72618 T25, 72619 T26, 72620 T27, 72621 T28, 72622 T29, 72623 T30, 72624 T31, 72625 T32, 72626 T33, 72627 T34, 72628 T35, 72629 T36, 72630 T37, 72631 T38, 72632 T39, 72633 T40, 72634 T41, 72635 T42, 72636 T43, 72637 T44, 72638 T45, 72639 T46, 72640 T47, 72641 T48, 72642 T49, 72643 T50, 72644 T51, 72645 T52, 72646 T53, 72647 T54, 72648 T55, 72649 T56, 72650 T57, 72651 T58, 72652 T59, 72653 T60, 72654 T61, 72655 T62, 72656 T63, 72657 T64, 72658 T65, 72659 T66, 72660 T67, 72661 T68, 72662 T69, 72663 T70, 72664 T71, 72665 T72, 72666 T73, 72667 T74, 72668 T75, 72669 T76, 72670 T77, 72671 T78, 72672 T79, 72673 T80, 72674 T81, 72675 T82, 72676 T83, 72677 T84, 72678 T85, 72679 T86, 72680 T87, 72681 T88, 72682 T89, 72683 T90, 72684 T91, 72685 T92, 72686 T93, 72687 T94, 72688 T95, 72689 T96, 72690 T97, 72691 T98, 72692 T99, 72693 T100, 72694 T101, 72695 T102, 72696 T103, 72697 T104, 72698 T105, 72699 T106, 72700 T107, 72701 T108, 72702 T109, 72703 T110, 72704 T111, 72705 T112, 72706 T113, 72707 T114, 72708 T115, 72709 T116, 72710 T117, 72711 T118, 72712 T119, 72713 T120, 72714 T121, 72715 T122, 72716 T123, 72717 T124, 72718 NullType, 72719 NullType, 72720 NullType> FunctorType; 72721 72722 FunctorType functor_; 72723 72724 functionImplementation_(const FunctorType &functor) : 72725 functor_(functor) 72726 { 72727 } 72728 72729 typedef std::tr1::function<Event ( 72730 const EnqueueArgs&, 72731 T0, 72732 T1, 72733 T2, 72734 T3, 72735 T4, 72736 T5, 72737 T6, 72738 T7, 72739 T8, 72740 T9, 72741 T10, 72742 T11, 72743 T12, 72744 T13, 72745 T14, 72746 T15, 72747 T16, 72748 T17, 72749 T18, 72750 T19, 72751 T20, 72752 T21, 72753 T22, 72754 T23, 72755 T24, 72756 T25, 72757 T26, 72758 T27, 72759 T28, 72760 T29, 72761 T30, 72762 T31, 72763 T32, 72764 T33, 72765 T34, 72766 T35, 72767 T36, 72768 T37, 72769 T38, 72770 T39, 72771 T40, 72772 T41, 72773 T42, 72774 T43, 72775 T44, 72776 T45, 72777 T46, 72778 T47, 72779 T48, 72780 T49, 72781 T50, 72782 T51, 72783 T52, 72784 T53, 72785 T54, 72786 T55, 72787 T56, 72788 T57, 72789 T58, 72790 T59, 72791 T60, 72792 T61, 72793 T62, 72794 T63, 72795 T64, 72796 T65, 72797 T66, 72798 T67, 72799 T68, 72800 T69, 72801 T70, 72802 T71, 72803 T72, 72804 T73, 72805 T74, 72806 T75, 72807 T76, 72808 T77, 72809 T78, 72810 T79, 72811 T80, 72812 T81, 72813 T82, 72814 T83, 72815 T84, 72816 T85, 72817 T86, 72818 T87, 72819 T88, 72820 T89, 72821 T90, 72822 T91, 72823 T92, 72824 T93, 72825 T94, 72826 T95, 72827 T96, 72828 T97, 72829 T98, 72830 T99, 72831 T100, 72832 T101, 72833 T102, 72834 T103, 72835 T104, 72836 T105, 72837 T106, 72838 T107, 72839 T108, 72840 T109, 72841 T110, 72842 T111, 72843 T112, 72844 T113, 72845 T114, 72846 T115, 72847 T116, 72848 T117, 72849 T118, 72850 T119, 72851 T120, 72852 T121, 72853 T122, 72854 T123, 72855 T124)> type_; 72856 72857 Event operator()(const EnqueueArgs& enqueueArgs, 72858 T0 arg0, 72859 T1 arg1, 72860 T2 arg2, 72861 T3 arg3, 72862 T4 arg4, 72863 T5 arg5, 72864 T6 arg6, 72865 T7 arg7, 72866 T8 arg8, 72867 T9 arg9, 72868 T10 arg10, 72869 T11 arg11, 72870 T12 arg12, 72871 T13 arg13, 72872 T14 arg14, 72873 T15 arg15, 72874 T16 arg16, 72875 T17 arg17, 72876 T18 arg18, 72877 T19 arg19, 72878 T20 arg20, 72879 T21 arg21, 72880 T22 arg22, 72881 T23 arg23, 72882 T24 arg24, 72883 T25 arg25, 72884 T26 arg26, 72885 T27 arg27, 72886 T28 arg28, 72887 T29 arg29, 72888 T30 arg30, 72889 T31 arg31, 72890 T32 arg32, 72891 T33 arg33, 72892 T34 arg34, 72893 T35 arg35, 72894 T36 arg36, 72895 T37 arg37, 72896 T38 arg38, 72897 T39 arg39, 72898 T40 arg40, 72899 T41 arg41, 72900 T42 arg42, 72901 T43 arg43, 72902 T44 arg44, 72903 T45 arg45, 72904 T46 arg46, 72905 T47 arg47, 72906 T48 arg48, 72907 T49 arg49, 72908 T50 arg50, 72909 T51 arg51, 72910 T52 arg52, 72911 T53 arg53, 72912 T54 arg54, 72913 T55 arg55, 72914 T56 arg56, 72915 T57 arg57, 72916 T58 arg58, 72917 T59 arg59, 72918 T60 arg60, 72919 T61 arg61, 72920 T62 arg62, 72921 T63 arg63, 72922 T64 arg64, 72923 T65 arg65, 72924 T66 arg66, 72925 T67 arg67, 72926 T68 arg68, 72927 T69 arg69, 72928 T70 arg70, 72929 T71 arg71, 72930 T72 arg72, 72931 T73 arg73, 72932 T74 arg74, 72933 T75 arg75, 72934 T76 arg76, 72935 T77 arg77, 72936 T78 arg78, 72937 T79 arg79, 72938 T80 arg80, 72939 T81 arg81, 72940 T82 arg82, 72941 T83 arg83, 72942 T84 arg84, 72943 T85 arg85, 72944 T86 arg86, 72945 T87 arg87, 72946 T88 arg88, 72947 T89 arg89, 72948 T90 arg90, 72949 T91 arg91, 72950 T92 arg92, 72951 T93 arg93, 72952 T94 arg94, 72953 T95 arg95, 72954 T96 arg96, 72955 T97 arg97, 72956 T98 arg98, 72957 T99 arg99, 72958 T100 arg100, 72959 T101 arg101, 72960 T102 arg102, 72961 T103 arg103, 72962 T104 arg104, 72963 T105 arg105, 72964 T106 arg106, 72965 T107 arg107, 72966 T108 arg108, 72967 T109 arg109, 72968 T110 arg110, 72969 T111 arg111, 72970 T112 arg112, 72971 T113 arg113, 72972 T114 arg114, 72973 T115 arg115, 72974 T116 arg116, 72975 T117 arg117, 72976 T118 arg118, 72977 T119 arg119, 72978 T120 arg120, 72979 T121 arg121, 72980 T122 arg122, 72981 T123 arg123, 72982 T124 arg124) 72983 { 72984 return functor_( 72985 enqueueArgs, 72986 arg0, 72987 arg1, 72988 arg2, 72989 arg3, 72990 arg4, 72991 arg5, 72992 arg6, 72993 arg7, 72994 arg8, 72995 arg9, 72996 arg10, 72997 arg11, 72998 arg12, 72999 arg13, 73000 arg14, 73001 arg15, 73002 arg16, 73003 arg17, 73004 arg18, 73005 arg19, 73006 arg20, 73007 arg21, 73008 arg22, 73009 arg23, 73010 arg24, 73011 arg25, 73012 arg26, 73013 arg27, 73014 arg28, 73015 arg29, 73016 arg30, 73017 arg31, 73018 arg32, 73019 arg33, 73020 arg34, 73021 arg35, 73022 arg36, 73023 arg37, 73024 arg38, 73025 arg39, 73026 arg40, 73027 arg41, 73028 arg42, 73029 arg43, 73030 arg44, 73031 arg45, 73032 arg46, 73033 arg47, 73034 arg48, 73035 arg49, 73036 arg50, 73037 arg51, 73038 arg52, 73039 arg53, 73040 arg54, 73041 arg55, 73042 arg56, 73043 arg57, 73044 arg58, 73045 arg59, 73046 arg60, 73047 arg61, 73048 arg62, 73049 arg63, 73050 arg64, 73051 arg65, 73052 arg66, 73053 arg67, 73054 arg68, 73055 arg69, 73056 arg70, 73057 arg71, 73058 arg72, 73059 arg73, 73060 arg74, 73061 arg75, 73062 arg76, 73063 arg77, 73064 arg78, 73065 arg79, 73066 arg80, 73067 arg81, 73068 arg82, 73069 arg83, 73070 arg84, 73071 arg85, 73072 arg86, 73073 arg87, 73074 arg88, 73075 arg89, 73076 arg90, 73077 arg91, 73078 arg92, 73079 arg93, 73080 arg94, 73081 arg95, 73082 arg96, 73083 arg97, 73084 arg98, 73085 arg99, 73086 arg100, 73087 arg101, 73088 arg102, 73089 arg103, 73090 arg104, 73091 arg105, 73092 arg106, 73093 arg107, 73094 arg108, 73095 arg109, 73096 arg110, 73097 arg111, 73098 arg112, 73099 arg113, 73100 arg114, 73101 arg115, 73102 arg116, 73103 arg117, 73104 arg118, 73105 arg119, 73106 arg120, 73107 arg121, 73108 arg122, 73109 arg123, 73110 arg124); 73111 } 73112 73113 operator type_ () 73114 { 73115 return type_(*this); 73116 } 73117 73118 }; 73119 73120 template< 73121 typename T0, 73122 typename T1, 73123 typename T2, 73124 typename T3, 73125 typename T4, 73126 typename T5, 73127 typename T6, 73128 typename T7, 73129 typename T8, 73130 typename T9, 73131 typename T10, 73132 typename T11, 73133 typename T12, 73134 typename T13, 73135 typename T14, 73136 typename T15, 73137 typename T16, 73138 typename T17, 73139 typename T18, 73140 typename T19, 73141 typename T20, 73142 typename T21, 73143 typename T22, 73144 typename T23, 73145 typename T24, 73146 typename T25, 73147 typename T26, 73148 typename T27, 73149 typename T28, 73150 typename T29, 73151 typename T30, 73152 typename T31, 73153 typename T32, 73154 typename T33, 73155 typename T34, 73156 typename T35, 73157 typename T36, 73158 typename T37, 73159 typename T38, 73160 typename T39, 73161 typename T40, 73162 typename T41, 73163 typename T42, 73164 typename T43, 73165 typename T44, 73166 typename T45, 73167 typename T46, 73168 typename T47, 73169 typename T48, 73170 typename T49, 73171 typename T50, 73172 typename T51, 73173 typename T52, 73174 typename T53, 73175 typename T54, 73176 typename T55, 73177 typename T56, 73178 typename T57, 73179 typename T58, 73180 typename T59, 73181 typename T60, 73182 typename T61, 73183 typename T62, 73184 typename T63, 73185 typename T64, 73186 typename T65, 73187 typename T66, 73188 typename T67, 73189 typename T68, 73190 typename T69, 73191 typename T70, 73192 typename T71, 73193 typename T72, 73194 typename T73, 73195 typename T74, 73196 typename T75, 73197 typename T76, 73198 typename T77, 73199 typename T78, 73200 typename T79, 73201 typename T80, 73202 typename T81, 73203 typename T82, 73204 typename T83, 73205 typename T84, 73206 typename T85, 73207 typename T86, 73208 typename T87, 73209 typename T88, 73210 typename T89, 73211 typename T90, 73212 typename T91, 73213 typename T92, 73214 typename T93, 73215 typename T94, 73216 typename T95, 73217 typename T96, 73218 typename T97, 73219 typename T98, 73220 typename T99, 73221 typename T100, 73222 typename T101, 73223 typename T102, 73224 typename T103, 73225 typename T104, 73226 typename T105, 73227 typename T106, 73228 typename T107, 73229 typename T108, 73230 typename T109, 73231 typename T110, 73232 typename T111, 73233 typename T112, 73234 typename T113, 73235 typename T114, 73236 typename T115, 73237 typename T116, 73238 typename T117, 73239 typename T118, 73240 typename T119, 73241 typename T120, 73242 typename T121, 73243 typename T122, 73244 typename T123, 73245 typename T124, 73246 typename T125> 73247 struct functionImplementation_< 73248 T0, 73249 T1, 73250 T2, 73251 T3, 73252 T4, 73253 T5, 73254 T6, 73255 T7, 73256 T8, 73257 T9, 73258 T10, 73259 T11, 73260 T12, 73261 T13, 73262 T14, 73263 T15, 73264 T16, 73265 T17, 73266 T18, 73267 T19, 73268 T20, 73269 T21, 73270 T22, 73271 T23, 73272 T24, 73273 T25, 73274 T26, 73275 T27, 73276 T28, 73277 T29, 73278 T30, 73279 T31, 73280 T32, 73281 T33, 73282 T34, 73283 T35, 73284 T36, 73285 T37, 73286 T38, 73287 T39, 73288 T40, 73289 T41, 73290 T42, 73291 T43, 73292 T44, 73293 T45, 73294 T46, 73295 T47, 73296 T48, 73297 T49, 73298 T50, 73299 T51, 73300 T52, 73301 T53, 73302 T54, 73303 T55, 73304 T56, 73305 T57, 73306 T58, 73307 T59, 73308 T60, 73309 T61, 73310 T62, 73311 T63, 73312 T64, 73313 T65, 73314 T66, 73315 T67, 73316 T68, 73317 T69, 73318 T70, 73319 T71, 73320 T72, 73321 T73, 73322 T74, 73323 T75, 73324 T76, 73325 T77, 73326 T78, 73327 T79, 73328 T80, 73329 T81, 73330 T82, 73331 T83, 73332 T84, 73333 T85, 73334 T86, 73335 T87, 73336 T88, 73337 T89, 73338 T90, 73339 T91, 73340 T92, 73341 T93, 73342 T94, 73343 T95, 73344 T96, 73345 T97, 73346 T98, 73347 T99, 73348 T100, 73349 T101, 73350 T102, 73351 T103, 73352 T104, 73353 T105, 73354 T106, 73355 T107, 73356 T108, 73357 T109, 73358 T110, 73359 T111, 73360 T112, 73361 T113, 73362 T114, 73363 T115, 73364 T116, 73365 T117, 73366 T118, 73367 T119, 73368 T120, 73369 T121, 73370 T122, 73371 T123, 73372 T124, 73373 T125, 73374 NullType, 73375 NullType> 73376 { 73377 typedef detail::KernelFunctorGlobal< 73378 T0, 73379 T1, 73380 T2, 73381 T3, 73382 T4, 73383 T5, 73384 T6, 73385 T7, 73386 T8, 73387 T9, 73388 T10, 73389 T11, 73390 T12, 73391 T13, 73392 T14, 73393 T15, 73394 T16, 73395 T17, 73396 T18, 73397 T19, 73398 T20, 73399 T21, 73400 T22, 73401 T23, 73402 T24, 73403 T25, 73404 T26, 73405 T27, 73406 T28, 73407 T29, 73408 T30, 73409 T31, 73410 T32, 73411 T33, 73412 T34, 73413 T35, 73414 T36, 73415 T37, 73416 T38, 73417 T39, 73418 T40, 73419 T41, 73420 T42, 73421 T43, 73422 T44, 73423 T45, 73424 T46, 73425 T47, 73426 T48, 73427 T49, 73428 T50, 73429 T51, 73430 T52, 73431 T53, 73432 T54, 73433 T55, 73434 T56, 73435 T57, 73436 T58, 73437 T59, 73438 T60, 73439 T61, 73440 T62, 73441 T63, 73442 T64, 73443 T65, 73444 T66, 73445 T67, 73446 T68, 73447 T69, 73448 T70, 73449 T71, 73450 T72, 73451 T73, 73452 T74, 73453 T75, 73454 T76, 73455 T77, 73456 T78, 73457 T79, 73458 T80, 73459 T81, 73460 T82, 73461 T83, 73462 T84, 73463 T85, 73464 T86, 73465 T87, 73466 T88, 73467 T89, 73468 T90, 73469 T91, 73470 T92, 73471 T93, 73472 T94, 73473 T95, 73474 T96, 73475 T97, 73476 T98, 73477 T99, 73478 T100, 73479 T101, 73480 T102, 73481 T103, 73482 T104, 73483 T105, 73484 T106, 73485 T107, 73486 T108, 73487 T109, 73488 T110, 73489 T111, 73490 T112, 73491 T113, 73492 T114, 73493 T115, 73494 T116, 73495 T117, 73496 T118, 73497 T119, 73498 T120, 73499 T121, 73500 T122, 73501 T123, 73502 T124, 73503 T125, 73504 NullType, 73505 NullType> FunctorType; 73506 73507 FunctorType functor_; 73508 73509 functionImplementation_(const FunctorType &functor) : 73510 functor_(functor) 73511 { 73512 } 73513 73514 typedef std::tr1::function<Event ( 73515 const EnqueueArgs&, 73516 T0, 73517 T1, 73518 T2, 73519 T3, 73520 T4, 73521 T5, 73522 T6, 73523 T7, 73524 T8, 73525 T9, 73526 T10, 73527 T11, 73528 T12, 73529 T13, 73530 T14, 73531 T15, 73532 T16, 73533 T17, 73534 T18, 73535 T19, 73536 T20, 73537 T21, 73538 T22, 73539 T23, 73540 T24, 73541 T25, 73542 T26, 73543 T27, 73544 T28, 73545 T29, 73546 T30, 73547 T31, 73548 T32, 73549 T33, 73550 T34, 73551 T35, 73552 T36, 73553 T37, 73554 T38, 73555 T39, 73556 T40, 73557 T41, 73558 T42, 73559 T43, 73560 T44, 73561 T45, 73562 T46, 73563 T47, 73564 T48, 73565 T49, 73566 T50, 73567 T51, 73568 T52, 73569 T53, 73570 T54, 73571 T55, 73572 T56, 73573 T57, 73574 T58, 73575 T59, 73576 T60, 73577 T61, 73578 T62, 73579 T63, 73580 T64, 73581 T65, 73582 T66, 73583 T67, 73584 T68, 73585 T69, 73586 T70, 73587 T71, 73588 T72, 73589 T73, 73590 T74, 73591 T75, 73592 T76, 73593 T77, 73594 T78, 73595 T79, 73596 T80, 73597 T81, 73598 T82, 73599 T83, 73600 T84, 73601 T85, 73602 T86, 73603 T87, 73604 T88, 73605 T89, 73606 T90, 73607 T91, 73608 T92, 73609 T93, 73610 T94, 73611 T95, 73612 T96, 73613 T97, 73614 T98, 73615 T99, 73616 T100, 73617 T101, 73618 T102, 73619 T103, 73620 T104, 73621 T105, 73622 T106, 73623 T107, 73624 T108, 73625 T109, 73626 T110, 73627 T111, 73628 T112, 73629 T113, 73630 T114, 73631 T115, 73632 T116, 73633 T117, 73634 T118, 73635 T119, 73636 T120, 73637 T121, 73638 T122, 73639 T123, 73640 T124, 73641 T125)> type_; 73642 73643 Event operator()(const EnqueueArgs& enqueueArgs, 73644 T0 arg0, 73645 T1 arg1, 73646 T2 arg2, 73647 T3 arg3, 73648 T4 arg4, 73649 T5 arg5, 73650 T6 arg6, 73651 T7 arg7, 73652 T8 arg8, 73653 T9 arg9, 73654 T10 arg10, 73655 T11 arg11, 73656 T12 arg12, 73657 T13 arg13, 73658 T14 arg14, 73659 T15 arg15, 73660 T16 arg16, 73661 T17 arg17, 73662 T18 arg18, 73663 T19 arg19, 73664 T20 arg20, 73665 T21 arg21, 73666 T22 arg22, 73667 T23 arg23, 73668 T24 arg24, 73669 T25 arg25, 73670 T26 arg26, 73671 T27 arg27, 73672 T28 arg28, 73673 T29 arg29, 73674 T30 arg30, 73675 T31 arg31, 73676 T32 arg32, 73677 T33 arg33, 73678 T34 arg34, 73679 T35 arg35, 73680 T36 arg36, 73681 T37 arg37, 73682 T38 arg38, 73683 T39 arg39, 73684 T40 arg40, 73685 T41 arg41, 73686 T42 arg42, 73687 T43 arg43, 73688 T44 arg44, 73689 T45 arg45, 73690 T46 arg46, 73691 T47 arg47, 73692 T48 arg48, 73693 T49 arg49, 73694 T50 arg50, 73695 T51 arg51, 73696 T52 arg52, 73697 T53 arg53, 73698 T54 arg54, 73699 T55 arg55, 73700 T56 arg56, 73701 T57 arg57, 73702 T58 arg58, 73703 T59 arg59, 73704 T60 arg60, 73705 T61 arg61, 73706 T62 arg62, 73707 T63 arg63, 73708 T64 arg64, 73709 T65 arg65, 73710 T66 arg66, 73711 T67 arg67, 73712 T68 arg68, 73713 T69 arg69, 73714 T70 arg70, 73715 T71 arg71, 73716 T72 arg72, 73717 T73 arg73, 73718 T74 arg74, 73719 T75 arg75, 73720 T76 arg76, 73721 T77 arg77, 73722 T78 arg78, 73723 T79 arg79, 73724 T80 arg80, 73725 T81 arg81, 73726 T82 arg82, 73727 T83 arg83, 73728 T84 arg84, 73729 T85 arg85, 73730 T86 arg86, 73731 T87 arg87, 73732 T88 arg88, 73733 T89 arg89, 73734 T90 arg90, 73735 T91 arg91, 73736 T92 arg92, 73737 T93 arg93, 73738 T94 arg94, 73739 T95 arg95, 73740 T96 arg96, 73741 T97 arg97, 73742 T98 arg98, 73743 T99 arg99, 73744 T100 arg100, 73745 T101 arg101, 73746 T102 arg102, 73747 T103 arg103, 73748 T104 arg104, 73749 T105 arg105, 73750 T106 arg106, 73751 T107 arg107, 73752 T108 arg108, 73753 T109 arg109, 73754 T110 arg110, 73755 T111 arg111, 73756 T112 arg112, 73757 T113 arg113, 73758 T114 arg114, 73759 T115 arg115, 73760 T116 arg116, 73761 T117 arg117, 73762 T118 arg118, 73763 T119 arg119, 73764 T120 arg120, 73765 T121 arg121, 73766 T122 arg122, 73767 T123 arg123, 73768 T124 arg124, 73769 T125 arg125) 73770 { 73771 return functor_( 73772 enqueueArgs, 73773 arg0, 73774 arg1, 73775 arg2, 73776 arg3, 73777 arg4, 73778 arg5, 73779 arg6, 73780 arg7, 73781 arg8, 73782 arg9, 73783 arg10, 73784 arg11, 73785 arg12, 73786 arg13, 73787 arg14, 73788 arg15, 73789 arg16, 73790 arg17, 73791 arg18, 73792 arg19, 73793 arg20, 73794 arg21, 73795 arg22, 73796 arg23, 73797 arg24, 73798 arg25, 73799 arg26, 73800 arg27, 73801 arg28, 73802 arg29, 73803 arg30, 73804 arg31, 73805 arg32, 73806 arg33, 73807 arg34, 73808 arg35, 73809 arg36, 73810 arg37, 73811 arg38, 73812 arg39, 73813 arg40, 73814 arg41, 73815 arg42, 73816 arg43, 73817 arg44, 73818 arg45, 73819 arg46, 73820 arg47, 73821 arg48, 73822 arg49, 73823 arg50, 73824 arg51, 73825 arg52, 73826 arg53, 73827 arg54, 73828 arg55, 73829 arg56, 73830 arg57, 73831 arg58, 73832 arg59, 73833 arg60, 73834 arg61, 73835 arg62, 73836 arg63, 73837 arg64, 73838 arg65, 73839 arg66, 73840 arg67, 73841 arg68, 73842 arg69, 73843 arg70, 73844 arg71, 73845 arg72, 73846 arg73, 73847 arg74, 73848 arg75, 73849 arg76, 73850 arg77, 73851 arg78, 73852 arg79, 73853 arg80, 73854 arg81, 73855 arg82, 73856 arg83, 73857 arg84, 73858 arg85, 73859 arg86, 73860 arg87, 73861 arg88, 73862 arg89, 73863 arg90, 73864 arg91, 73865 arg92, 73866 arg93, 73867 arg94, 73868 arg95, 73869 arg96, 73870 arg97, 73871 arg98, 73872 arg99, 73873 arg100, 73874 arg101, 73875 arg102, 73876 arg103, 73877 arg104, 73878 arg105, 73879 arg106, 73880 arg107, 73881 arg108, 73882 arg109, 73883 arg110, 73884 arg111, 73885 arg112, 73886 arg113, 73887 arg114, 73888 arg115, 73889 arg116, 73890 arg117, 73891 arg118, 73892 arg119, 73893 arg120, 73894 arg121, 73895 arg122, 73896 arg123, 73897 arg124, 73898 arg125); 73899 } 73900 73901 operator type_ () 73902 { 73903 return type_(*this); 73904 } 73905 73906 }; 73907 73908 template< 73909 typename T0, 73910 typename T1, 73911 typename T2, 73912 typename T3, 73913 typename T4, 73914 typename T5, 73915 typename T6, 73916 typename T7, 73917 typename T8, 73918 typename T9, 73919 typename T10, 73920 typename T11, 73921 typename T12, 73922 typename T13, 73923 typename T14, 73924 typename T15, 73925 typename T16, 73926 typename T17, 73927 typename T18, 73928 typename T19, 73929 typename T20, 73930 typename T21, 73931 typename T22, 73932 typename T23, 73933 typename T24, 73934 typename T25, 73935 typename T26, 73936 typename T27, 73937 typename T28, 73938 typename T29, 73939 typename T30, 73940 typename T31, 73941 typename T32, 73942 typename T33, 73943 typename T34, 73944 typename T35, 73945 typename T36, 73946 typename T37, 73947 typename T38, 73948 typename T39, 73949 typename T40, 73950 typename T41, 73951 typename T42, 73952 typename T43, 73953 typename T44, 73954 typename T45, 73955 typename T46, 73956 typename T47, 73957 typename T48, 73958 typename T49, 73959 typename T50, 73960 typename T51, 73961 typename T52, 73962 typename T53, 73963 typename T54, 73964 typename T55, 73965 typename T56, 73966 typename T57, 73967 typename T58, 73968 typename T59, 73969 typename T60, 73970 typename T61, 73971 typename T62, 73972 typename T63, 73973 typename T64, 73974 typename T65, 73975 typename T66, 73976 typename T67, 73977 typename T68, 73978 typename T69, 73979 typename T70, 73980 typename T71, 73981 typename T72, 73982 typename T73, 73983 typename T74, 73984 typename T75, 73985 typename T76, 73986 typename T77, 73987 typename T78, 73988 typename T79, 73989 typename T80, 73990 typename T81, 73991 typename T82, 73992 typename T83, 73993 typename T84, 73994 typename T85, 73995 typename T86, 73996 typename T87, 73997 typename T88, 73998 typename T89, 73999 typename T90, 74000 typename T91, 74001 typename T92, 74002 typename T93, 74003 typename T94, 74004 typename T95, 74005 typename T96, 74006 typename T97, 74007 typename T98, 74008 typename T99, 74009 typename T100, 74010 typename T101, 74011 typename T102, 74012 typename T103, 74013 typename T104, 74014 typename T105, 74015 typename T106, 74016 typename T107, 74017 typename T108, 74018 typename T109, 74019 typename T110, 74020 typename T111, 74021 typename T112, 74022 typename T113, 74023 typename T114, 74024 typename T115, 74025 typename T116, 74026 typename T117, 74027 typename T118, 74028 typename T119, 74029 typename T120, 74030 typename T121, 74031 typename T122, 74032 typename T123, 74033 typename T124, 74034 typename T125, 74035 typename T126> 74036 struct functionImplementation_< 74037 T0, 74038 T1, 74039 T2, 74040 T3, 74041 T4, 74042 T5, 74043 T6, 74044 T7, 74045 T8, 74046 T9, 74047 T10, 74048 T11, 74049 T12, 74050 T13, 74051 T14, 74052 T15, 74053 T16, 74054 T17, 74055 T18, 74056 T19, 74057 T20, 74058 T21, 74059 T22, 74060 T23, 74061 T24, 74062 T25, 74063 T26, 74064 T27, 74065 T28, 74066 T29, 74067 T30, 74068 T31, 74069 T32, 74070 T33, 74071 T34, 74072 T35, 74073 T36, 74074 T37, 74075 T38, 74076 T39, 74077 T40, 74078 T41, 74079 T42, 74080 T43, 74081 T44, 74082 T45, 74083 T46, 74084 T47, 74085 T48, 74086 T49, 74087 T50, 74088 T51, 74089 T52, 74090 T53, 74091 T54, 74092 T55, 74093 T56, 74094 T57, 74095 T58, 74096 T59, 74097 T60, 74098 T61, 74099 T62, 74100 T63, 74101 T64, 74102 T65, 74103 T66, 74104 T67, 74105 T68, 74106 T69, 74107 T70, 74108 T71, 74109 T72, 74110 T73, 74111 T74, 74112 T75, 74113 T76, 74114 T77, 74115 T78, 74116 T79, 74117 T80, 74118 T81, 74119 T82, 74120 T83, 74121 T84, 74122 T85, 74123 T86, 74124 T87, 74125 T88, 74126 T89, 74127 T90, 74128 T91, 74129 T92, 74130 T93, 74131 T94, 74132 T95, 74133 T96, 74134 T97, 74135 T98, 74136 T99, 74137 T100, 74138 T101, 74139 T102, 74140 T103, 74141 T104, 74142 T105, 74143 T106, 74144 T107, 74145 T108, 74146 T109, 74147 T110, 74148 T111, 74149 T112, 74150 T113, 74151 T114, 74152 T115, 74153 T116, 74154 T117, 74155 T118, 74156 T119, 74157 T120, 74158 T121, 74159 T122, 74160 T123, 74161 T124, 74162 T125, 74163 T126, 74164 NullType> 74165 { 74166 typedef detail::KernelFunctorGlobal< 74167 T0, 74168 T1, 74169 T2, 74170 T3, 74171 T4, 74172 T5, 74173 T6, 74174 T7, 74175 T8, 74176 T9, 74177 T10, 74178 T11, 74179 T12, 74180 T13, 74181 T14, 74182 T15, 74183 T16, 74184 T17, 74185 T18, 74186 T19, 74187 T20, 74188 T21, 74189 T22, 74190 T23, 74191 T24, 74192 T25, 74193 T26, 74194 T27, 74195 T28, 74196 T29, 74197 T30, 74198 T31, 74199 T32, 74200 T33, 74201 T34, 74202 T35, 74203 T36, 74204 T37, 74205 T38, 74206 T39, 74207 T40, 74208 T41, 74209 T42, 74210 T43, 74211 T44, 74212 T45, 74213 T46, 74214 T47, 74215 T48, 74216 T49, 74217 T50, 74218 T51, 74219 T52, 74220 T53, 74221 T54, 74222 T55, 74223 T56, 74224 T57, 74225 T58, 74226 T59, 74227 T60, 74228 T61, 74229 T62, 74230 T63, 74231 T64, 74232 T65, 74233 T66, 74234 T67, 74235 T68, 74236 T69, 74237 T70, 74238 T71, 74239 T72, 74240 T73, 74241 T74, 74242 T75, 74243 T76, 74244 T77, 74245 T78, 74246 T79, 74247 T80, 74248 T81, 74249 T82, 74250 T83, 74251 T84, 74252 T85, 74253 T86, 74254 T87, 74255 T88, 74256 T89, 74257 T90, 74258 T91, 74259 T92, 74260 T93, 74261 T94, 74262 T95, 74263 T96, 74264 T97, 74265 T98, 74266 T99, 74267 T100, 74268 T101, 74269 T102, 74270 T103, 74271 T104, 74272 T105, 74273 T106, 74274 T107, 74275 T108, 74276 T109, 74277 T110, 74278 T111, 74279 T112, 74280 T113, 74281 T114, 74282 T115, 74283 T116, 74284 T117, 74285 T118, 74286 T119, 74287 T120, 74288 T121, 74289 T122, 74290 T123, 74291 T124, 74292 T125, 74293 T126, 74294 NullType> FunctorType; 74295 74296 FunctorType functor_; 74297 74298 functionImplementation_(const FunctorType &functor) : 74299 functor_(functor) 74300 { 74301 } 74302 74303 typedef std::tr1::function<Event ( 74304 const EnqueueArgs&, 74305 T0, 74306 T1, 74307 T2, 74308 T3, 74309 T4, 74310 T5, 74311 T6, 74312 T7, 74313 T8, 74314 T9, 74315 T10, 74316 T11, 74317 T12, 74318 T13, 74319 T14, 74320 T15, 74321 T16, 74322 T17, 74323 T18, 74324 T19, 74325 T20, 74326 T21, 74327 T22, 74328 T23, 74329 T24, 74330 T25, 74331 T26, 74332 T27, 74333 T28, 74334 T29, 74335 T30, 74336 T31, 74337 T32, 74338 T33, 74339 T34, 74340 T35, 74341 T36, 74342 T37, 74343 T38, 74344 T39, 74345 T40, 74346 T41, 74347 T42, 74348 T43, 74349 T44, 74350 T45, 74351 T46, 74352 T47, 74353 T48, 74354 T49, 74355 T50, 74356 T51, 74357 T52, 74358 T53, 74359 T54, 74360 T55, 74361 T56, 74362 T57, 74363 T58, 74364 T59, 74365 T60, 74366 T61, 74367 T62, 74368 T63, 74369 T64, 74370 T65, 74371 T66, 74372 T67, 74373 T68, 74374 T69, 74375 T70, 74376 T71, 74377 T72, 74378 T73, 74379 T74, 74380 T75, 74381 T76, 74382 T77, 74383 T78, 74384 T79, 74385 T80, 74386 T81, 74387 T82, 74388 T83, 74389 T84, 74390 T85, 74391 T86, 74392 T87, 74393 T88, 74394 T89, 74395 T90, 74396 T91, 74397 T92, 74398 T93, 74399 T94, 74400 T95, 74401 T96, 74402 T97, 74403 T98, 74404 T99, 74405 T100, 74406 T101, 74407 T102, 74408 T103, 74409 T104, 74410 T105, 74411 T106, 74412 T107, 74413 T108, 74414 T109, 74415 T110, 74416 T111, 74417 T112, 74418 T113, 74419 T114, 74420 T115, 74421 T116, 74422 T117, 74423 T118, 74424 T119, 74425 T120, 74426 T121, 74427 T122, 74428 T123, 74429 T124, 74430 T125, 74431 T126)> type_; 74432 74433 Event operator()(const EnqueueArgs& enqueueArgs, 74434 T0 arg0, 74435 T1 arg1, 74436 T2 arg2, 74437 T3 arg3, 74438 T4 arg4, 74439 T5 arg5, 74440 T6 arg6, 74441 T7 arg7, 74442 T8 arg8, 74443 T9 arg9, 74444 T10 arg10, 74445 T11 arg11, 74446 T12 arg12, 74447 T13 arg13, 74448 T14 arg14, 74449 T15 arg15, 74450 T16 arg16, 74451 T17 arg17, 74452 T18 arg18, 74453 T19 arg19, 74454 T20 arg20, 74455 T21 arg21, 74456 T22 arg22, 74457 T23 arg23, 74458 T24 arg24, 74459 T25 arg25, 74460 T26 arg26, 74461 T27 arg27, 74462 T28 arg28, 74463 T29 arg29, 74464 T30 arg30, 74465 T31 arg31, 74466 T32 arg32, 74467 T33 arg33, 74468 T34 arg34, 74469 T35 arg35, 74470 T36 arg36, 74471 T37 arg37, 74472 T38 arg38, 74473 T39 arg39, 74474 T40 arg40, 74475 T41 arg41, 74476 T42 arg42, 74477 T43 arg43, 74478 T44 arg44, 74479 T45 arg45, 74480 T46 arg46, 74481 T47 arg47, 74482 T48 arg48, 74483 T49 arg49, 74484 T50 arg50, 74485 T51 arg51, 74486 T52 arg52, 74487 T53 arg53, 74488 T54 arg54, 74489 T55 arg55, 74490 T56 arg56, 74491 T57 arg57, 74492 T58 arg58, 74493 T59 arg59, 74494 T60 arg60, 74495 T61 arg61, 74496 T62 arg62, 74497 T63 arg63, 74498 T64 arg64, 74499 T65 arg65, 74500 T66 arg66, 74501 T67 arg67, 74502 T68 arg68, 74503 T69 arg69, 74504 T70 arg70, 74505 T71 arg71, 74506 T72 arg72, 74507 T73 arg73, 74508 T74 arg74, 74509 T75 arg75, 74510 T76 arg76, 74511 T77 arg77, 74512 T78 arg78, 74513 T79 arg79, 74514 T80 arg80, 74515 T81 arg81, 74516 T82 arg82, 74517 T83 arg83, 74518 T84 arg84, 74519 T85 arg85, 74520 T86 arg86, 74521 T87 arg87, 74522 T88 arg88, 74523 T89 arg89, 74524 T90 arg90, 74525 T91 arg91, 74526 T92 arg92, 74527 T93 arg93, 74528 T94 arg94, 74529 T95 arg95, 74530 T96 arg96, 74531 T97 arg97, 74532 T98 arg98, 74533 T99 arg99, 74534 T100 arg100, 74535 T101 arg101, 74536 T102 arg102, 74537 T103 arg103, 74538 T104 arg104, 74539 T105 arg105, 74540 T106 arg106, 74541 T107 arg107, 74542 T108 arg108, 74543 T109 arg109, 74544 T110 arg110, 74545 T111 arg111, 74546 T112 arg112, 74547 T113 arg113, 74548 T114 arg114, 74549 T115 arg115, 74550 T116 arg116, 74551 T117 arg117, 74552 T118 arg118, 74553 T119 arg119, 74554 T120 arg120, 74555 T121 arg121, 74556 T122 arg122, 74557 T123 arg123, 74558 T124 arg124, 74559 T125 arg125, 74560 T126 arg126) 74561 { 74562 return functor_( 74563 enqueueArgs, 74564 arg0, 74565 arg1, 74566 arg2, 74567 arg3, 74568 arg4, 74569 arg5, 74570 arg6, 74571 arg7, 74572 arg8, 74573 arg9, 74574 arg10, 74575 arg11, 74576 arg12, 74577 arg13, 74578 arg14, 74579 arg15, 74580 arg16, 74581 arg17, 74582 arg18, 74583 arg19, 74584 arg20, 74585 arg21, 74586 arg22, 74587 arg23, 74588 arg24, 74589 arg25, 74590 arg26, 74591 arg27, 74592 arg28, 74593 arg29, 74594 arg30, 74595 arg31, 74596 arg32, 74597 arg33, 74598 arg34, 74599 arg35, 74600 arg36, 74601 arg37, 74602 arg38, 74603 arg39, 74604 arg40, 74605 arg41, 74606 arg42, 74607 arg43, 74608 arg44, 74609 arg45, 74610 arg46, 74611 arg47, 74612 arg48, 74613 arg49, 74614 arg50, 74615 arg51, 74616 arg52, 74617 arg53, 74618 arg54, 74619 arg55, 74620 arg56, 74621 arg57, 74622 arg58, 74623 arg59, 74624 arg60, 74625 arg61, 74626 arg62, 74627 arg63, 74628 arg64, 74629 arg65, 74630 arg66, 74631 arg67, 74632 arg68, 74633 arg69, 74634 arg70, 74635 arg71, 74636 arg72, 74637 arg73, 74638 arg74, 74639 arg75, 74640 arg76, 74641 arg77, 74642 arg78, 74643 arg79, 74644 arg80, 74645 arg81, 74646 arg82, 74647 arg83, 74648 arg84, 74649 arg85, 74650 arg86, 74651 arg87, 74652 arg88, 74653 arg89, 74654 arg90, 74655 arg91, 74656 arg92, 74657 arg93, 74658 arg94, 74659 arg95, 74660 arg96, 74661 arg97, 74662 arg98, 74663 arg99, 74664 arg100, 74665 arg101, 74666 arg102, 74667 arg103, 74668 arg104, 74669 arg105, 74670 arg106, 74671 arg107, 74672 arg108, 74673 arg109, 74674 arg110, 74675 arg111, 74676 arg112, 74677 arg113, 74678 arg114, 74679 arg115, 74680 arg116, 74681 arg117, 74682 arg118, 74683 arg119, 74684 arg120, 74685 arg121, 74686 arg122, 74687 arg123, 74688 arg124, 74689 arg125, 74690 arg126); 74691 } 74692 74693 operator type_ () 74694 { 74695 return type_(*this); 74696 } 74697 74698 }; 74699 74700 74701 74702 74703 74704 } // namespace detail 74705 74706 //---------------------------------------------------------------------------------------------- 74707 74708 template < 74709 typename T0, typename T1 = detail::NullType, typename T2 = detail::NullType, 74710 typename T3 = detail::NullType, typename T4 = detail::NullType, 74711 typename T5 = detail::NullType, typename T6 = detail::NullType, 74712 typename T7 = detail::NullType, typename T8 = detail::NullType, 74713 typename T9 = detail::NullType, typename T10 = detail::NullType, 74714 typename T11 = detail::NullType, typename T12 = detail::NullType, 74715 typename T13 = detail::NullType, typename T14 = detail::NullType, 74716 typename T15 = detail::NullType, typename T16 = detail::NullType, 74717 typename T17 = detail::NullType, typename T18 = detail::NullType, 74718 typename T19 = detail::NullType, typename T20 = detail::NullType, 74719 typename T21 = detail::NullType, typename T22 = detail::NullType, 74720 typename T23 = detail::NullType, typename T24 = detail::NullType, 74721 typename T25 = detail::NullType, typename T26 = detail::NullType, 74722 typename T27 = detail::NullType, typename T28 = detail::NullType, 74723 typename T29 = detail::NullType, typename T30 = detail::NullType, 74724 typename T31 = detail::NullType, typename T32 = detail::NullType, 74725 typename T33 = detail::NullType, typename T34 = detail::NullType, 74726 typename T35 = detail::NullType, typename T36 = detail::NullType, 74727 typename T37 = detail::NullType, typename T38 = detail::NullType, 74728 typename T39 = detail::NullType, typename T40 = detail::NullType, 74729 typename T41 = detail::NullType, typename T42 = detail::NullType, 74730 typename T43 = detail::NullType, typename T44 = detail::NullType, 74731 typename T45 = detail::NullType, typename T46 = detail::NullType, 74732 typename T47 = detail::NullType, typename T48 = detail::NullType, 74733 typename T49 = detail::NullType, typename T50 = detail::NullType, 74734 typename T51 = detail::NullType, typename T52 = detail::NullType, 74735 typename T53 = detail::NullType, typename T54 = detail::NullType, 74736 typename T55 = detail::NullType, typename T56 = detail::NullType, 74737 typename T57 = detail::NullType, typename T58 = detail::NullType, 74738 typename T59 = detail::NullType, typename T60 = detail::NullType, 74739 typename T61 = detail::NullType, typename T62 = detail::NullType, 74740 typename T63 = detail::NullType, typename T64 = detail::NullType, 74741 typename T65 = detail::NullType, typename T66 = detail::NullType, 74742 typename T67 = detail::NullType, typename T68 = detail::NullType, 74743 typename T69 = detail::NullType, typename T70 = detail::NullType, 74744 typename T71 = detail::NullType, typename T72 = detail::NullType, 74745 typename T73 = detail::NullType, typename T74 = detail::NullType, 74746 typename T75 = detail::NullType, typename T76 = detail::NullType, 74747 typename T77 = detail::NullType, typename T78 = detail::NullType, 74748 typename T79 = detail::NullType, typename T80 = detail::NullType, 74749 typename T81 = detail::NullType, typename T82 = detail::NullType, 74750 typename T83 = detail::NullType, typename T84 = detail::NullType, 74751 typename T85 = detail::NullType, typename T86 = detail::NullType, 74752 typename T87 = detail::NullType, typename T88 = detail::NullType, 74753 typename T89 = detail::NullType, typename T90 = detail::NullType, 74754 typename T91 = detail::NullType, typename T92 = detail::NullType, 74755 typename T93 = detail::NullType, typename T94 = detail::NullType, 74756 typename T95 = detail::NullType, typename T96 = detail::NullType, 74757 typename T97 = detail::NullType, typename T98 = detail::NullType, 74758 typename T99 = detail::NullType, typename T100 = detail::NullType, 74759 typename T101 = detail::NullType, typename T102 = detail::NullType, 74760 typename T103 = detail::NullType, typename T104 = detail::NullType, 74761 typename T105 = detail::NullType, typename T106 = detail::NullType, 74762 typename T107 = detail::NullType, typename T108 = detail::NullType, 74763 typename T109 = detail::NullType, typename T110 = detail::NullType, 74764 typename T111 = detail::NullType, typename T112 = detail::NullType, 74765 typename T113 = detail::NullType, typename T114 = detail::NullType, 74766 typename T115 = detail::NullType, typename T116 = detail::NullType, 74767 typename T117 = detail::NullType, typename T118 = detail::NullType, 74768 typename T119 = detail::NullType, typename T120 = detail::NullType, 74769 typename T121 = detail::NullType, typename T122 = detail::NullType, 74770 typename T123 = detail::NullType, typename T124 = detail::NullType, 74771 typename T125 = detail::NullType, typename T126 = detail::NullType, 74772 typename T127 = detail::NullType> 74773 struct make_kernel : 74774 public detail::functionImplementation_< 74775 T0, T1, T2, T3, 74776 T4, T5, T6, T7, 74777 T8, T9, T10, T11, 74778 T12, T13, T14, T15, 74779 T16, T17, T18, T19, 74780 T20, T21, T22, T23, 74781 T24, T25, T26, T27, 74782 T28, T29, T30, T31, 74783 T32, T33, T34, T35, 74784 T36, T37, T38, T39, 74785 T40, T41, T42, T43, 74786 T44, T45, T46, T47, 74787 T48, T49, T50, T51, 74788 T52, T53, T54, T55, 74789 T56, T57, T58, T59, 74790 T60, T61, T62, T63, 74791 T64, T65, T66, T67, 74792 T68, T69, T70, T71, 74793 T72, T73, T74, T75, 74794 T76, T77, T78, T79, 74795 T80, T81, T82, T83, 74796 T84, T85, T86, T87, 74797 T88, T89, T90, T91, 74798 T92, T93, T94, T95, 74799 T96, T97, T98, T99, 74800 T100, T101, T102, T103, 74801 T104, T105, T106, T107, 74802 T108, T109, T110, T111, 74803 T112, T113, T114, T115, 74804 T116, T117, T118, T119, 74805 T120, T121, T122, T123, 74806 T124, T125, T126, T127> 74807 { 74808 public: 74809 typedef detail::KernelFunctorGlobal< 74810 T0, T1, T2, T3, 74811 T4, T5, T6, T7, 74812 T8, T9, T10, T11, 74813 T12, T13, T14, T15, 74814 T16, T17, T18, T19, 74815 T20, T21, T22, T23, 74816 T24, T25, T26, T27, 74817 T28, T29, T30, T31, 74818 T32, T33, T34, T35, 74819 T36, T37, T38, T39, 74820 T40, T41, T42, T43, 74821 T44, T45, T46, T47, 74822 T48, T49, T50, T51, 74823 T52, T53, T54, T55, 74824 T56, T57, T58, T59, 74825 T60, T61, T62, T63, 74826 T64, T65, T66, T67, 74827 T68, T69, T70, T71, 74828 T72, T73, T74, T75, 74829 T76, T77, T78, T79, 74830 T80, T81, T82, T83, 74831 T84, T85, T86, T87, 74832 T88, T89, T90, T91, 74833 T92, T93, T94, T95, 74834 T96, T97, T98, T99, 74835 T100, T101, T102, T103, 74836 T104, T105, T106, T107, 74837 T108, T109, T110, T111, 74838 T112, T113, T114, T115, 74839 T116, T117, T118, T119, 74840 T120, T121, T122, T123, 74841 T124, T125, T126, T127> FunctorType; 74842 74843 make_kernel( 74844 const Program& program, 74845 const STRING_CLASS name, 74846 cl_int * err = NULL) : 74847 detail::functionImplementation_< 74848 T0, T1, T2, T3, 74849 T4, T5, T6, T7, 74850 T8, T9, T10, T11, 74851 T12, T13, T14, T15, 74852 T16, T17, T18, T19, 74853 T20, T21, T22, T23, 74854 T24, T25, T26, T27, 74855 T28, T29, T30, T31, 74856 T32, T33, T34, T35, 74857 T36, T37, T38, T39, 74858 T40, T41, T42, T43, 74859 T44, T45, T46, T47, 74860 T48, T49, T50, T51, 74861 T52, T53, T54, T55, 74862 T56, T57, T58, T59, 74863 T60, T61, T62, T63, 74864 T64, T65, T66, T67, 74865 T68, T69, T70, T71, 74866 T72, T73, T74, T75, 74867 T76, T77, T78, T79, 74868 T80, T81, T82, T83, 74869 T84, T85, T86, T87, 74870 T88, T89, T90, T91, 74871 T92, T93, T94, T95, 74872 T96, T97, T98, T99, 74873 T100, T101, T102, T103, 74874 T104, T105, T106, T107, 74875 T108, T109, T110, T111, 74876 T112, T113, T114, T115, 74877 T116, T117, T118, T119, 74878 T120, T121, T122, T123, 74879 T124, T125, T126, T127>( 74880 FunctorType(program, name, err)) 74881 {} 74882 74883 make_kernel( 74884 const Kernel kernel, 74885 cl_int * err = NULL) : 74886 detail::functionImplementation_< 74887 T0, T1, T2, T3, 74888 T4, T5, T6, T7, 74889 T8, T9, T10, T11, 74890 T12, T13, T14, T15, 74891 T16, T17, T18, T19, 74892 T20, T21, T22, T23, 74893 T24, T25, T26, T27, 74894 T28, T29, T30, T31, 74895 T32, T33, T34, T35, 74896 T36, T37, T38, T39, 74897 T40, T41, T42, T43, 74898 T44, T45, T46, T47, 74899 T48, T49, T50, T51, 74900 T52, T53, T54, T55, 74901 T56, T57, T58, T59, 74902 T60, T61, T62, T63, 74903 T64, T65, T66, T67, 74904 T68, T69, T70, T71, 74905 T72, T73, T74, T75, 74906 T76, T77, T78, T79, 74907 T80, T81, T82, T83, 74908 T84, T85, T86, T87, 74909 T88, T89, T90, T91, 74910 T92, T93, T94, T95, 74911 T96, T97, T98, T99, 74912 T100, T101, T102, T103, 74913 T104, T105, T106, T107, 74914 T108, T109, T110, T111, 74915 T112, T113, T114, T115, 74916 T116, T117, T118, T119, 74917 T120, T121, T122, T123, 74918 T124, T125, T126, T127>( 74919 FunctorType(kernel, err)) 74920 {} 74921 }; 74922 74923 #endif 74924 74925 //---------------------------------------------------------------------------------------------------------------------- 74926 74927 #undef __ERR_STR 74928 #if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) 74929 #undef __GET_DEVICE_INFO_ERR 74930 #undef __GET_PLATFORM_INFO_ERR 74931 #undef __GET_DEVICE_IDS_ERR 74932 #undef __GET_CONTEXT_INFO_ERR 74933 #undef __GET_EVENT_INFO_ERR 74934 #undef __GET_EVENT_PROFILE_INFO_ERR 74935 #undef __GET_MEM_OBJECT_INFO_ERR 74936 #undef __GET_IMAGE_INFO_ERR 74937 #undef __GET_SAMPLER_INFO_ERR 74938 #undef __GET_KERNEL_INFO_ERR 74939 #undef __GET_KERNEL_WORK_GROUP_INFO_ERR 74940 #undef __GET_PROGRAM_INFO_ERR 74941 #undef __GET_PROGRAM_BUILD_INFO_ERR 74942 #undef __GET_COMMAND_QUEUE_INFO_ERR 74943 74944 #undef __CREATE_CONTEXT_ERR 74945 #undef __CREATE_CONTEXT_FROM_TYPE_ERR 74946 #undef __GET_SUPPORTED_IMAGE_FORMATS_ERR 74947 74948 #undef __CREATE_BUFFER_ERR 74949 #undef __CREATE_SUBBUFFER_ERR 74950 #undef __CREATE_IMAGE2D_ERR 74951 #undef __CREATE_IMAGE3D_ERR 74952 #undef __CREATE_SAMPLER_ERR 74953 #undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR 74954 74955 #undef __CREATE_USER_EVENT_ERR 74956 #undef __SET_USER_EVENT_STATUS_ERR 74957 #undef __SET_EVENT_CALLBACK_ERR 74958 74959 #undef __WAIT_FOR_EVENTS_ERR 74960 74961 #undef __CREATE_KERNEL_ERR 74962 #undef __SET_KERNEL_ARGS_ERR 74963 #undef __CREATE_PROGRAM_WITH_SOURCE_ERR 74964 #undef __CREATE_PROGRAM_WITH_BINARY_ERR 74965 #undef __BUILD_PROGRAM_ERR 74966 #undef __CREATE_KERNELS_IN_PROGRAM_ERR 74967 74968 #undef __CREATE_COMMAND_QUEUE_ERR 74969 #undef __SET_COMMAND_QUEUE_PROPERTY_ERR 74970 #undef __ENQUEUE_READ_BUFFER_ERR 74971 #undef __ENQUEUE_WRITE_BUFFER_ERR 74972 #undef __ENQUEUE_READ_BUFFER_RECT_ERR 74973 #undef __ENQUEUE_WRITE_BUFFER_RECT_ERR 74974 #undef __ENQEUE_COPY_BUFFER_ERR 74975 #undef __ENQEUE_COPY_BUFFER_RECT_ERR 74976 #undef __ENQUEUE_READ_IMAGE_ERR 74977 #undef __ENQUEUE_WRITE_IMAGE_ERR 74978 #undef __ENQUEUE_COPY_IMAGE_ERR 74979 #undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR 74980 #undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR 74981 #undef __ENQUEUE_MAP_BUFFER_ERR 74982 #undef __ENQUEUE_MAP_IMAGE_ERR 74983 #undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR 74984 #undef __ENQUEUE_NDRANGE_KERNEL_ERR 74985 #undef __ENQUEUE_TASK_ERR 74986 #undef __ENQUEUE_NATIVE_KERNEL 74987 74988 #undef __UNLOAD_COMPILER_ERR 74989 #endif //__CL_USER_OVERRIDE_ERROR_STRINGS 74990 74991 #undef __GET_INFO_HELPER_WITH_RETAIN 74992 74993 // Extensions 74994 #undef __INIT_CL_EXT_FCN_PTR 74995 #undef __CREATE_SUB_DEVICES 74996 74997 #if defined(USE_CL_DEVICE_FISSION) 74998 #undef __PARAM_NAME_DEVICE_FISSION 74999 #endif // USE_CL_DEVICE_FISSION 75000 75001 #undef __DEFAULT_NOT_INITIALIZED 75002 #undef __DEFAULT_BEING_INITIALIZED 75003 #undef __DEFAULT_INITIALIZED 75004 75005 } // namespace cl 75006 75007 #ifdef _WIN32 75008 #pragma pop_macro("max") 75009 #endif // _WIN32 75010 75011 #endif // CL_HPP_