diff --git a/cmake/avendish.cmake b/cmake/avendish.cmake index 43e7be79..a5729393 100644 --- a/cmake/avendish.cmake +++ b/cmake/avendish.cmake @@ -67,6 +67,7 @@ set(AVENDISH_SOURCES "${AVND_SOURCE_DIR}/include/avnd/common/coroutines.hpp" "${AVND_SOURCE_DIR}/include/avnd/common/dummy.hpp" "${AVND_SOURCE_DIR}/include/avnd/common/errors.hpp" + "${AVND_SOURCE_DIR}/include/avnd/common/enum_reflection.hpp" "${AVND_SOURCE_DIR}/include/avnd/common/export.hpp" "${AVND_SOURCE_DIR}/include/avnd/common/for_nth.hpp" "${AVND_SOURCE_DIR}/include/avnd/common/function_reflection.hpp" diff --git a/include/avnd/binding/max/from_atoms.hpp b/include/avnd/binding/max/from_atoms.hpp index a239f729..8c7d16a8 100644 --- a/include/avnd/binding/max/from_atoms.hpp +++ b/include/avnd/binding/max/from_atoms.hpp @@ -1,18 +1,20 @@ #pragma once -#include #include -#include #include +#include +#include +#include + #if !defined(__cpp_lib_to_chars) #include #else #include #endif -#include -#include #include +#include + namespace max { diff --git a/include/avnd/binding/max/to_atoms.hpp b/include/avnd/binding/max/to_atoms.hpp index fa610aac..f2fac221 100644 --- a/include/avnd/binding/max/to_atoms.hpp +++ b/include/avnd/binding/max/to_atoms.hpp @@ -1,11 +1,11 @@ #pragma once #include #include +#include #include #include #include #include -#include namespace max { diff --git a/include/avnd/binding/pd/inputs.hpp b/include/avnd/binding/pd/inputs.hpp index 2c7784de..2685f82a 100644 --- a/include/avnd/binding/pd/inputs.hpp +++ b/include/avnd/binding/pd/inputs.hpp @@ -1,7 +1,7 @@ #pragma once #include #include -#include +#include #if !defined(__cpp_lib_to_chars) #include diff --git a/include/avnd/binding/pd/outputs.hpp b/include/avnd/binding/pd/outputs.hpp index cb422c56..de23e088 100644 --- a/include/avnd/binding/pd/outputs.hpp +++ b/include/avnd/binding/pd/outputs.hpp @@ -3,11 +3,11 @@ /* SPDX-License-Identifier: GPL-3.0-or-later */ #include +#include #include #include #include #include -#include #include #include diff --git a/include/avnd/common/enum_reflection.hpp b/include/avnd/common/enum_reflection.hpp new file mode 100644 index 00000000..8bb021bd --- /dev/null +++ b/include/avnd/common/enum_reflection.hpp @@ -0,0 +1,9 @@ +#pragma once + +#if __has_include() +#include +#elif __has_include() +#include +#else +#error magic_enum is required +#endif diff --git a/include/halp/controls.enums.hpp b/include/halp/controls.enums.hpp index c1293396..a3e4ab10 100644 --- a/include/halp/controls.enums.hpp +++ b/include/halp/controls.enums.hpp @@ -8,6 +8,10 @@ #include #if __has_include() #include +#elif __has_include() +#include +#else +#error magic_enum is required #endif namespace halp @@ -27,7 +31,7 @@ struct enum_t { struct enum_setup { -#if __has_include() +#if MAGIC_ENUM_SUPPORTED decltype(magic_enum::enum_names()) values = magic_enum::enum_names(); #endif Enum init{}; @@ -48,7 +52,7 @@ struct enum_t } auto& operator=(std::string_view t) noexcept { -#if __has_include() +#if MAGIC_ENUM_SUPPORTED if(auto res = magic_enum::enum_cast(t)) value = *res; #endif @@ -70,7 +74,7 @@ struct string_enum_t { struct enum_setup { -#if __has_include() +#if MAGIC_ENUM_SUPPORTED decltype(magic_enum::enum_names()) values = magic_enum::enum_names(); #endif Enum init{}; @@ -91,14 +95,14 @@ struct string_enum_t } auto& operator=(Enum t) noexcept { -#if __has_include() +#if MAGIC_ENUM_SUPPORTED value = magic_enum::enum_name(t); #endif return *this; } auto& operator=(std::integral auto t) noexcept { -#if __has_include() +#if MAGIC_ENUM_SUPPORTED value = magic_enum::enum_name(static_cast(t)); #endif return *this;