// // Copyright (C) 2011-15 DyND Developers // BSD 2-Clause License, see LICENSE.txt // #pragma once #include namespace dynd { namespace nd { struct all_kernel : base_strided_kernel { void single(char *dst, char *const *src) { *reinterpret_cast(dst) = *reinterpret_cast(dst) && *reinterpret_cast(src[0]); } void strided(char *dst, intptr_t dst_stride, char *const *src, const intptr_t *src_stride, size_t count) { char *src0 = src[0]; intptr_t src0_stride = src_stride[0]; for (size_t i = 0; i < count; ++i) { *reinterpret_cast(dst) = *reinterpret_cast(dst) && *reinterpret_cast(src0); dst += dst_stride; src0 += src0_stride; } } }; } // namespace dynd::nd namespace ndt { template <> struct traits { static type equivalent() { return type("(bool) -> bool"); } }; } // namespace dynd::ndt } // namespace dynd