#ifndef PYTHONIC_NUMPY_ATLEAST2D_HPP #define PYTHONIC_NUMPY_ATLEAST2D_HPP #include "pythonic/include/numpy/atleast_2d.hpp" #include "pythonic/types/ndarray.hpp" PYTHONIC_NS_BEGIN namespace numpy { template typename std::enable_if< types::is_dtype::value, types::ndarray, std::integral_constant>>>::type atleast_2d(T t) { return {types::pshape, std::integral_constant>(), t}; } template auto atleast_2d(T const &t) -> typename std::enable_if < (!types::is_dtype::value) && T::value<2, types::ndarray< typename T::dtype, types::pshape, typename std::tuple_element< 0, typename T::shape_t>::type>>>::type { return t.reshape(types::pshape< std::integral_constant, typename std::tuple_element<0, typename T::shape_t>::type>( std::integral_constant(), t.template shape<0>())); } template auto atleast_2d(T &&t) -> typename std::enable_if< (!types::is_dtype::type>::type>::value) && std::decay::type::value >= 2, decltype(std::forward(t))>::type { return std::forward(t); } } PYTHONIC_NS_END #endif