// // Copyright (C) 2011-15 DyND Developers // BSD 2-Clause License, see LICENSE.txt // #pragma once #include namespace dynd { namespace nd { struct view_kernel : base_kernel { void call(array *dst, const array *src) { const ndt::type &dst_tp = dst->get_type(); if (!dst_tp.is_builtin()) { dst_tp.extended()->arrmeta_copy_construct(dst->get()->metadata(), src[0]->metadata(), intrusive_ptr(src[0].get(), true)); } dst->get()->data = src[0]->data; dst->get()->owner = src[0]->owner ? src[0]->owner : intrusive_ptr(src[0].get(), true); } static void resolve_dst_type(char *DYND_UNUSED(static_data), char *DYND_UNUSED(data), ndt::type &dst_tp, intptr_t DYND_UNUSED(nsrc), const ndt::type *src_tp, intptr_t DYND_UNUSED(nkwd), const array *DYND_UNUSED(kwds), const std::map &DYND_UNUSED(tp_vars)) { dst_tp = src_tp[0]; } }; } // namespace dynd::nd } // namespace dynd