| from code_template import CodeTemplate |
| CASE_TEMPLATE = CodeTemplate("""\ |
| return F<${ScalarType}>::${Backend}(the_type,std::forward<Args>(args)...); |
| MACRO_TEMPLATE = CodeTemplate("""\ |
| template<template <typename> class F, typename ... Args> |
| auto dispatch(const Type & the_type, Args&&... args) |
| -> decltype(F<double>::CPU(the_type,std::forward<Args>(args)...)) { |
| runtime_error("dispatch() not implemented for '%s'",the_type.toString()); |
| def create_dispatch(all_types): |
| if typ['Density'] != 'Sparse': |
| cases.append(CASE_TEMPLATE.substitute(typ)) |
| return MACRO_TEMPLATE.substitute(cases=cases) |
| return create_dispatch(all_types) |