Commit 4526779b authored by Dominik Charousset's avatar Dominik Charousset

Support CAF_ERROR_CODE_ENUM with one argument

parent 78ec3548
...@@ -23,7 +23,9 @@ ...@@ -23,7 +23,9 @@
#include <utility> #include <utility>
#include "caf/atom.hpp" #include "caf/atom.hpp"
#include "caf/config.hpp"
#include "caf/detail/comparable.hpp" #include "caf/detail/comparable.hpp"
#include "caf/detail/pp.hpp"
#include "caf/fwd.hpp" #include "caf/fwd.hpp"
#include "caf/meta/omittable_if_empty.hpp" #include "caf/meta/omittable_if_empty.hpp"
#include "caf/meta/type_name.hpp" #include "caf/meta/type_name.hpp"
...@@ -71,7 +73,6 @@ template <class T, class U = void> ...@@ -71,7 +73,6 @@ template <class T, class U = void>
using enable_if_has_error_factory_t = using enable_if_has_error_factory_t =
typename std::enable_if<detail::error_factory<T>::specialized, U>::type; typename std::enable_if<detail::error_factory<T>::specialized, U>::type;
/// @private /// @private
template <class T, class U = void> template <class T, class U = void>
using enable_if_can_construct_error_t = typename std::enable_if< using enable_if_can_construct_error_t = typename std::enable_if<
...@@ -111,9 +112,9 @@ class error : detail::comparable<error> { ...@@ -111,9 +112,9 @@ class error : detail::comparable<error> {
public: public:
// -- member types ----------------------------------------------------------- // -- member types -----------------------------------------------------------
using inspect_fun = std::function< using inspect_fun
error(meta::type_name_t, uint8_t&, atom_value&, meta::omittable_if_empty_t, = std::function<error(meta::type_name_t, uint8_t&, atom_value&,
message&)>; meta::omittable_if_empty_t, message&)>;
// -- constructors, destructors, and assignment operators -------------------- // -- constructors, destructors, and assignment operators --------------------
...@@ -290,7 +291,7 @@ enable_if_has_error_factory_t<Code, error> make_error(Code code, Ts&&... xs) { ...@@ -290,7 +291,7 @@ enable_if_has_error_factory_t<Code, error> make_error(Code code, Ts&&... xs) {
} // namespace caf } // namespace caf
#define CAF_ERROR_CODE_ENUM(enum_type, category_name) \ #define CAF_ERROR_CODE_ENUM_2(enum_type, category_name) \
namespace caf { \ namespace caf { \
namespace detail { \ namespace detail { \
template <> \ template <> \
...@@ -304,3 +305,16 @@ enable_if_has_error_factory_t<Code, error> make_error(Code code, Ts&&... xs) { ...@@ -304,3 +305,16 @@ enable_if_has_error_factory_t<Code, error> make_error(Code code, Ts&&... xs) {
}; \ }; \
} \ } \
} }
#define CAF_ERROR_CODE_ENUM_1(type_name) \
CAF_ERROR_CODE_ENUM_2(type_name, #type_name)
#ifdef CAF_MSVC
# define CAF_ERROR_CODE_ENUM(...) \
CAF_PP_CAT(CAF_PP_OVERLOAD(CAF_ERROR_CODE_ENUM_, \
__VA_ARGS__)(__VA_ARGS__), \
CAF_PP_EMPTY())
#else
# define CAF_ERROR_CODE_ENUM(...) \
CAF_PP_OVERLOAD(CAF_ERROR_CODE_ENUM_, __VA_ARGS__)(__VA_ARGS__)
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment