61 using tuple_type = std::tuple<std::int32_t, zstring_view, zstring_view>;
66 ES_API(JNISUPPORT)
static const reflector& instance();
68 [[nodiscard]] ES_API(JNISUPPORT) jfieldID get_field(std::int32_t key)
const;
69 [[nodiscard]] ES_API(JNISUPPORT) jmethodID get_method(std::int32_t key)
const;
71 [[nodiscard]] ES_API(JNISUPPORT) jfieldID add_field(std::int32_t class_key,
const tuple_type& field)
const;
72 [[nodiscard]] ES_API(JNISUPPORT) jmethodID add_method(std::int32_t class_key,
const tuple_type& method)
const;
73 [[nodiscard]] ES_API(JNISUPPORT) jfieldID
74 add_static_field(std::int32_t class_key,
const tuple_type& field)
const;
75 [[nodiscard]] ES_API(JNISUPPORT) jmethodID
76 add_static_method(std::int32_t class_key,
const tuple_type& method)
const;
77 ES_API(JNISUPPORT)
void clear()
const;
79 template <
typename T, detail::enum_tuple Tuple>
80 requires std::is_enum_v<T>
81 jfieldID add_field(T class_key,
const Tuple& field)
const {
82 return add_field(
static_cast<std::int32_t
>(class_key), detail::from_enum_tuple(field));
85 template <
typename T, detail::enum_tuple Tuple>
86 requires std::is_enum_v<T>
87 jmethodID add_method(T class_key,
const Tuple& method)
const {
88 return add_method(
static_cast<std::int32_t
>(class_key), detail::from_enum_tuple(method));
91 template <
typename T, detail::enum_tuple Tuple>
92 requires std::is_enum_v<T>
93 jfieldID add_static_field(T class_key,
const Tuple& field)
const {
94 return add_static_field(
static_cast<std::int32_t
>(class_key), detail::from_enum_tuple(field));
97 template <
typename T, detail::enum_tuple Tuple>
98 requires std::is_enum_v<T>
99 jmethodID add_static_method(T class_key,
const Tuple& method)
const {
100 return add_static_method(
static_cast<std::int32_t
>(class_key), detail::from_enum_tuple(method));
104 requires(std::is_enum_v<T> || std::integral<T>)
105 auto add_fields(T class_key, Args&&... fields)
const {
106 return std::tuple{add_field(class_key, std::forward<Args>(fields))...};
110 requires(std::is_enum_v<T> || std::integral<T>)
111 auto add_methods(T class_key, Args&&... methods)
const {
112 return std::tuple{add_method(class_key, std::forward<Args>(methods))...};
116 requires(std::is_enum_v<T> || std::integral<T>)
117 auto add_static_fields(T class_key, Args&&... fields)
const {
118 return std::tuple{add_static_field(class_key, std::forward<Args>(fields))...};
122 requires(std::is_enum_v<T> || std::integral<T>)
123 auto add_static_methods(T class_key, Args&&... methods)
const {
124 return std::tuple{add_static_method(class_key, std::forward<Args>(methods))...};
132 std::unique_ptr<impl> impl_;