#ifndef PYTHONIC_BUILTIN_TYPE_HPP #define PYTHONIC_BUILTIN_TYPE_HPP #include "pythonic/include/builtins/type.hpp" #include "pythonic/utils/functor.hpp" #include "pythonic/builtins/bool_.hpp" #include "pythonic/builtins/int_.hpp" #include "pythonic/builtins/float_.hpp" #include "pythonic/builtins/complex.hpp" #include "pythonic/builtins/set.hpp" #include "pythonic/builtins/str.hpp" #include "pythonic/builtins/list.hpp" #include "pythonic/builtins/dict.hpp" #include "pythonic/builtins/tuple.hpp" #include "pythonic/numpy/array.hpp" #include "pythonic/numpy/byte.hpp" #include "pythonic/numpy/ubyte.hpp" #include "pythonic/numpy/short_.hpp" #include "pythonic/numpy/ushort.hpp" #include "pythonic/numpy/intc.hpp" #include "pythonic/numpy/uintc.hpp" #include "pythonic/numpy/int_.hpp" #include "pythonic/numpy/uint.hpp" #include "pythonic/numpy/longlong.hpp" #include "pythonic/numpy/ulonglong.hpp" #include "pythonic/numpy/float32.hpp" #include "pythonic/numpy/float128.hpp" PYTHONIC_NS_BEGIN namespace builtins { template <> struct type_functor { using type = functor::bool_; }; template <> struct type_functor { using type = functor::float_; }; template <> struct type_functor { using type = functor::str; }; template struct type_functor> { using type = functor::complex; }; template <> struct type_functor { using type = functor::set; }; template struct type_functor> { using type = functor::set; }; template <> struct type_functor { using type = functor::list; }; template struct type_functor> { using type = functor::list; }; template struct type_functor> { using type = functor::list; }; template <> struct type_functor { using type = functor::dict; }; template struct type_functor> { using type = functor::dict; }; template struct type_functor> { using type = functor::tuple; }; template struct type_functor> { using type = functor::tuple; }; template struct type_functor> { using type = numpy::functor::array; }; template <> struct type_functor { using type = numpy::functor::byte; }; template <> struct type_functor { using type = numpy::functor::ubyte; }; template <> struct type_functor { using type = numpy::functor::short_; }; template <> struct type_functor { using type = numpy::functor::ushort; }; template <> struct type_functor { using type = numpy::functor::intc; }; template <> struct type_functor { using type = numpy::functor::uintc; }; template <> struct type_functor { using type = numpy::functor::int_; }; template <> struct type_functor { using type = numpy::functor::uint; }; template <> struct type_functor { using type = numpy::functor::longlong; }; template <> struct type_functor { using type = numpy::functor::ulonglong; }; template <> struct type_functor { using type = numpy::functor::float32; }; template <> struct type_functor { using type = numpy::functor::float128; }; template typename type_functor::type type(T const &) { return {}; } } PYTHONIC_NS_END #endif