#ifndef PYTHONIC_NUMPY_APPEND_HPP #define PYTHONIC_NUMPY_APPEND_HPP #include "pythonic/include/numpy/append.hpp" #include "pythonic/utils/functor.hpp" #include "pythonic/types/ndarray.hpp" #include "pythonic/numpy/asarray.hpp" PYTHONIC_NS_BEGIN namespace numpy { template typename std::enable_if< !types::is_dtype::value, types::ndarray< typename __combined::type>::type, types::pshape>>::type append(types::ndarray const &nto, F const &data) { auto ndata = numpy::functor::asarray{}(data); long nsize = nto.flat_size() + ndata.flat_size(); types::ndarray< typename __combined::type>::type, types::pshape> out(types::pshape(nsize), builtins::None); auto out_back = std::copy(nto.fbegin(), nto.fend(), out.fbegin()); std::copy(ndata.fbegin(), ndata.fend(), out_back); return out; } template typename std::enable_if< types::is_dtype::value, types::ndarray< typename __combined::type>::type, types::pshape>>::type append(types::ndarray const &nto, F const &data) { long nsize = nto.flat_size() + 1; types::ndarray< typename __combined::type>::type, types::pshape> out(types::pshape(nsize), builtins::None); auto out_back = std::copy(nto.fbegin(), nto.fend(), out.fbegin()); *out_back = data; return out; } template types::ndarray::type, typename types::dtype_of::type>::type, types::pshape> append(T const &to, F const &data) { return append(numpy::functor::asarray{}(to), data); } } PYTHONIC_NS_END #endif