#pragma once #include "language.hpp" #include "c_types.hpp" namespace saw { namespace impl { template struct c_transfer_generater; template struct c_transfer_generater { public: static error_or apply (const lang_c::config& cfg, lang_c::transfer_binding_state& state){ return make_error(); } }; template struct c_transfer_generater, Enc> { private: // Not used currently using ReducedTmplGroup = typename tmpl_reduce>::type; private: template static error_or apply_ele(const lang_c::config& cfg, lang_c::transfer_binding_state& state){ if constexpr ( i < sizeof...(TransTypes)){ { using pType = typename parameter_pack_type::type; auto eov = c_transfer_generater::apply(cfg,state); if(eov.is_error()){ return eov; } } return apply_ele(cfg,state); } return make_void(); } public: static error_or apply(const lang_c::config& cfg, lang_c::transfer_binding_state& state){ return apply_ele<0u>(cfg, state); } }; } }