Browse Source

platform: added support file for android ndk r17

Michele Caini 5 years ago
parent
commit
a212b054e7
2 changed files with 87 additions and 0 deletions
  1. 1 0
      src/entt/entt.hpp
  2. 86 0
      src/entt/platform/android-ndk-r17.hpp

+ 1 - 0
src/entt/entt.hpp

@@ -30,6 +30,7 @@
 #include "meta/range.hpp"
 #include "meta/range.hpp"
 #include "meta/resolve.hpp"
 #include "meta/resolve.hpp"
 #include "meta/type_traits.hpp"
 #include "meta/type_traits.hpp"
+#include "platform/android-ndk-r17.hpp"
 #include "process/process.hpp"
 #include "process/process.hpp"
 #include "process/scheduler.hpp"
 #include "process/scheduler.hpp"
 #include "resource/cache.hpp"
 #include "resource/cache.hpp"

+ 86 - 0
src/entt/platform/android-ndk-r17.hpp

@@ -0,0 +1,86 @@
+#ifndef ENTT_PLATFORM_ANDROID_NDK_R17_HPP
+#define ENTT_PLATFORM_ANDROID_NDK_R17_HPP
+
+
+/**
+ * @cond TURN_OFF_DOXYGEN
+ * Internal details not to be documented.
+ */
+
+
+#ifdef __ANDROID__
+#include <android/ndk-version.h>
+#if __NDK_MAJOR__ == 17
+
+
+#include <functional>
+#include <type_traits>
+#include <utility>
+
+
+namespace std {
+
+
+namespace detail {
+
+
+template<typename Func, typename... Args>
+constexpr auto is_invocable(int) -> decltype(std::invoke(std::declval<Func>(), std::declval<Args>()...), std::true_type{});
+
+
+template<typename, typename...>
+constexpr std::false_type is_invocable(...);
+
+
+template<typename Ret, typename Func, typename... Args>
+constexpr auto is_invocable_r(int)
+-> std::enable_if_t<decltype(std::is_convertible_v<decltype(std::invoke(std::declval<Func>(), std::declval<Args>()...)), Ret>, std::true_type>;
+
+
+template<typename, typename, typename...>
+constexpr std::false_type is_invocable_r(...);
+
+
+}
+
+
+template<typename Func, typename... Args>
+struct is_invocable: decltype(detail::is_invocable<Func, Args...>(0)) {};
+
+
+template<typename Func, typename... Argsv>
+inline constexpr bool is_invocable_v = std::is_invocable<Func, Args...>::value;
+
+
+template<typename Ret, typename Func, typename... Args>
+struct is_invocable_r: decltype(detail::is_invocable_r<Ret, Func, Args...>(0)) {};
+
+
+template<typename Ret, typename Func, typename... Args>
+inline constexpr bool is_invocable_r_v = std::is_invocable_r<Ret, Func, Args...>::value;
+
+
+template<typename Func, typename...Args>
+struct invoke_result {
+    using type = decltype(std::invoke(std::declval<Func>(), std::declval<Args>()...));
+};
+
+
+template<typename Func, typename... Args>
+using invoke_result_t = typename std::invoke_result<Func, Args...>::type;
+
+
+}
+
+
+#endif
+#endif
+
+
+/**
+ * Internal details not to be documented.
+ * @endcond
+ */
+
+
+#endif