intptr_t nd::copy_ck::instantiate( char *DYND_UNUSED(static_data), size_t DYND_UNUSED(data_size), char *DYND_UNUSED(data), void *ckb, intptr_t ckb_offset, const ndt::type &dst_tp, const char *dst_arrmeta, intptr_t DYND_UNUSED(nsrc), const ndt::type *src_tp, const char *const *src_arrmeta, kernel_request_t kernreq, const eval::eval_context *ectx, intptr_t DYND_UNUSED(nkwd), const nd::array *DYND_UNUSED(kwds), const std::map<std::string, ndt::type> &DYND_UNUSED(tp_vars)) { if (dst_tp.is_builtin()) { if (src_tp[0].is_builtin()) { if (dst_tp.extended() == src_tp[0].extended()) { return make_pod_typed_data_assignment_kernel( ckb, ckb_offset, dynd::ndt::detail::builtin_data_sizes [dst_tp.unchecked_get_builtin_type_id()], dynd::ndt::detail::builtin_data_alignments [dst_tp.unchecked_get_builtin_type_id()], kernreq); } else { nd::callable &child = nd::assign::overload(dst_tp, src_tp[0]); return child.get()->instantiate(NULL, 0, NULL, ckb, ckb_offset, dst_tp, dst_arrmeta, 1, src_tp, src_arrmeta, kernreq, ectx, 0, NULL, std::map<std::string, ndt::type>()); } } else { return src_tp[0].extended()->make_assignment_kernel( ckb, ckb_offset, dst_tp, dst_arrmeta, src_tp[0], src_arrmeta[0], kernreq, ectx); } } else { return dst_tp.extended()->make_assignment_kernel( ckb, ckb_offset, dst_tp, dst_arrmeta, src_tp[0], src_arrmeta[0], kernreq, ectx); } }
static intptr_t instantiate_copy( const arrfunc_type_data *self, const arrfunc_type *af_tp, void *ckb, intptr_t ckb_offset, const ndt::type &dst_tp, const char *dst_arrmeta, const ndt::type *src_tp, const char *const *src_arrmeta, kernel_request_t kernreq, const eval::eval_context *ectx, const nd::array &kwds) { if (dst_tp.is_builtin()) { if (src_tp[0].is_builtin()) { if (dst_tp.extended() == src_tp[0].extended()) { return make_pod_typed_data_assignment_kernel( ckb, ckb_offset, detail::builtin_data_sizes[dst_tp.unchecked_get_builtin_type_id()], detail::builtin_data_alignments [dst_tp.unchecked_get_builtin_type_id()], kernreq); } else { return make_builtin_type_assignment_kernel( ckb, ckb_offset, dst_tp.get_type_id(), src_tp[0].get_type_id(), kernreq, ectx->errmode); } } else { return src_tp[0].extended()->make_assignment_kernel( self, af_tp, ckb, ckb_offset, dst_tp, dst_arrmeta, src_tp[0], src_arrmeta[0], kernreq, ectx, kwds); } } else { return dst_tp.extended()->make_assignment_kernel( self, af_tp, ckb, ckb_offset, dst_tp, dst_arrmeta, src_tp[0], src_arrmeta[0], kernreq, ectx, kwds); } }