//============================================================================ // Copyright (c) Kitware, Inc. // All rights reserved. // See LICENSE.txt for details. // This software is distributed WITHOUT ANY WARRANTY; without even // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. // // Copyright 2014 Sandia Corporation. // Copyright 2014 UT-Battelle, LLC. // Copyright 2014 Los Alamos National Security. // // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // the U.S. Government retains certain rights in this software. // // Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National // Laboratory (LANL), the U.S. Government retains certain rights in // this software. //============================================================================ $# This file uses the pyexpander macro processing utility to build the $# FunctionInterface facilities that use a variable number of arguments. $# Information, documentation, and downloads for pyexpander can be found at: $# $# http://pyexpander.sourceforge.net/ $# $# To build the source code, execute the following (after installing $# pyexpander, of course): $# $# expander.py DispatcherBaseDetailInvoke.h.in > DispatcherBaseDetailInvoke.h $# $# Ignore the following comment. It is meant for the generated file. // **** DO NOT EDIT THIS FILE!!! **** // This file is automatically generated by FunctionInterfaceDetailPre.h.in #if !defined(vtk_m_worklet_internal_DispatcherBase_h) #error DispatcherBaseDetailInvoke.h must be included from DispatcherBase.h #endif // Note that this file is included from the middle of the DispatcherBase.h // class to provide the implementation of the Invoke method, which requires // variable length template args. If we choose to support C++11 variable // template arguments, then this could all be replaced efficiently with a // single method with a variadic template function that calls // make_FunctionInterface. $py(max_parameters=9)\ $# Python commands used in template expansion. $py( def template_params(num_params, name='T', start=1, default=''): if num_params < start: return '' result = 'typename %s%d%s' % (name, start, default) for param in xrange(start+1, num_params+1): result += ',\n typename %s%d%s' % (name, param, default) return result def function_params(num_params, typename='T', argname='a', start=1): if num_params < start: return '' result = '%s%d %s%d' % (typename, start, argname, start) for param in xrange(start+1, num_params+1): result += ', %s%d %s%d' % (typename, param, argname, param) return result def arg_list(num_params, argname='a', start=1): if num_params < start: return '' result = '%s%d' % (argname, start) for param in xrange(start+1, num_params+1): result += ',%s%d' % (argname, param) return result )\ $# $extend(template_params, function_params, arg_list)\ $for(num_params in xrange(1, max_parameters+1))\ template<$template_params(num_params)> VTKM_CONT_EXPORT void Invoke($function_params(num_params)) const { this->StartInvoke( vtkm::internal::make_FunctionInterface($arg_list(num_params))); } $endfor\