diff options
Diffstat (limited to 'include/ocl/core')
| -rw-r--r-- | include/ocl/core/config.hpp | 5 | ||||
| -rw-r--r-- | include/ocl/core/is_same.hpp | 8 | ||||
| -rw-r--r-- | include/ocl/core/option.hpp | 23 |
3 files changed, 25 insertions, 11 deletions
diff --git a/include/ocl/core/config.hpp b/include/ocl/core/config.hpp index a0ddd66..13abae0 100644 --- a/include/ocl/core/config.hpp +++ b/include/ocl/core/config.hpp @@ -31,3 +31,8 @@ #define OCL_DECL #define OCL_EXPORT_DECL #endif + +#ifdef _WIN32 +#define OCL_USE_CRLF_ENDINGS 1 +#define OCL_WINDOWS 1 +#endif
\ No newline at end of file diff --git a/include/ocl/core/is_same.hpp b/include/ocl/core/is_same.hpp index fdf80d7..27a85d0 100644 --- a/include/ocl/core/is_same.hpp +++ b/include/ocl/core/is_same.hpp @@ -15,11 +15,13 @@ namespace ocl template <typename T> struct basic_hash { + using result_type = typename T::result_type; + using type = T; + /// @brief hash from T's result_type. - static typename T::result_type hash() + static result_type hash() { - static T val; - return val.hash(); + return T{}.hash(); } }; diff --git a/include/ocl/core/option.hpp b/include/ocl/core/option.hpp index e333dd5..b5a2778 100644 --- a/include/ocl/core/option.hpp +++ b/include/ocl/core/option.hpp @@ -23,15 +23,17 @@ namespace ocl template <typename char_type = char> struct option final { - explicit option(const return_type& return_type) + option() = delete; + + option(const return_type& return_type) : ret_(return_type) { } ~option() = default; - option& operator=(const option&) = default; - option(const option&) = default; + option& operator=(const option&) = delete; + option(const option&) = delete; option& expect(const char_type* input) { @@ -65,7 +67,7 @@ namespace ocl return tell(std::forward<Lst>(arg)...) ? return_type::okay : return_type::err; } - namespace traits + namespace detail { struct int_eq_teller { @@ -90,26 +92,26 @@ namespace ocl return (a < b); } }; - } // namespace traits + } // namespace detail template <typename... Lst> inline return_type eval_less_than(Lst&&... arg) { - static traits::int_less_than_teller eq; + static detail::int_less_than_teller eq; return eq(std::forward<Lst>(arg)...) ? return_type::okay : return_type::err; } template <typename... Lst> inline return_type eval_eq(Lst&&... arg) { - static traits::int_eq_teller less_than; + static detail::int_eq_teller less_than; return less_than(std::forward<Lst>(arg)...) ? return_type::okay : return_type::err; } template <typename... Lst> inline return_type eval_greater_than(Lst&&... arg) { - static traits::int_greater_than_teller greater_than; + static detail::int_greater_than_teller greater_than; return greater_than(std::forward<Lst>(arg)...) ? return_type::okay : return_type::err; } @@ -122,6 +124,11 @@ namespace ocl { return return_type::err; } + + inline return_type eval_invalid() noexcept + { + return return_type::invalid; + } } // namespace ocl #endif /* ifndef _OCL_OPT_HPP */
\ No newline at end of file |
