diff --git a/packages/react-native-nitro-modules/android/src/main/cpp/core/JAnyMap.hpp b/packages/react-native-nitro-modules/android/src/main/cpp/core/JAnyMap.hpp index f6cf4c357..86e013847 100644 --- a/packages/react-native-nitro-modules/android/src/main/cpp/core/JAnyMap.hpp +++ b/packages/react-native-nitro-modules/android/src/main/cpp/core/JAnyMap.hpp @@ -35,12 +35,12 @@ class JAnyMap final : public jni::HybridClass { static jni::local_ref create(const std::shared_ptr& map) { return newObjectCxxArgs(map); } - /** - * Create a new `JAnyMap` with the given pre-allocated size. - */ - static jni::local_ref create(size_t size) { - return newObjectCxxArgs(size); - } + /** + * Create a new `JAnyMap` with the given pre-allocated size. + */ + static jni::local_ref create(size_t size) { + return newObjectCxxArgs(size); + } private: explicit JAnyMap() { @@ -142,15 +142,15 @@ class JAnyMap final : public jni::HybridClass { void setNull(const jni::alias_ref& key) { _map->put(key, nullptr); } - void setDouble(const jni::alias_ref& key, double value) { - _map->put(key, jni::autobox(value)); - } - void setBoolean(const jni::alias_ref& key, bool value) { - _map->put(key, jni::autobox(value)); - } - void setBigInt(const jni::alias_ref& key, int64_t value) { - _map->put(key, jni::autobox(value)); - } + void setDouble(const jni::alias_ref& key, double value) { + _map->put(key, jni::autobox(value)); + } + void setBoolean(const jni::alias_ref& key, bool value) { + _map->put(key, jni::autobox(value)); + } + void setBigInt(const jni::alias_ref& key, int64_t value) { + _map->put(key, jni::autobox(value)); + } void setString(const jni::alias_ref& key, const jni::alias_ref& value) { _map->put(key, value); } diff --git a/packages/react-native-nitro-modules/android/src/main/cpp/jsi/JSIConverter+JAnyMap.hpp b/packages/react-native-nitro-modules/android/src/main/cpp/jsi/JSIConverter+JAnyMap.hpp index b366fd875..14a7873a4 100644 --- a/packages/react-native-nitro-modules/android/src/main/cpp/jsi/JSIConverter+JAnyMap.hpp +++ b/packages/react-native-nitro-modules/android/src/main/cpp/jsi/JSIConverter+JAnyMap.hpp @@ -12,8 +12,8 @@ struct JSIConverter; #include "AnyMap.hpp" #include "JAnyMap.hpp" -#include "JSIConverter.hpp" #include "JSIConverter+JObject.hpp" +#include "JSIConverter.hpp" #include #include #include @@ -33,10 +33,10 @@ struct JSIConverter final { jni::local_ref map = JAnyMap::create(size); jni::alias_ref> javaMap = map->cthis()->getJavaMap(); for (size_t i = 0; i < size; i++) { - jsi::String prop = properties.getValueAtIndex(runtime, i).asString(runtime); - jsi::Value value = object.getProperty(runtime, prop); - javaMap->put(/* key */ jni::make_jstring(prop.utf8(runtime)), - /* value */ JSIConverter::fromJSI(runtime, value)); + jsi::String prop = properties.getValueAtIndex(runtime, i).asString(runtime); + jsi::Value value = object.getProperty(runtime, prop); + javaMap->put(/* key */ jni::make_jstring(prop.utf8(runtime)), + /* value */ JSIConverter::fromJSI(runtime, value)); } return map; @@ -45,15 +45,16 @@ struct JSIConverter final { jsi::Object object(runtime); auto map = arg->cthis()->getJavaMap(); for (const auto& entry : *map) { - jsi::String key = JSIConverter::toJSI(runtime, entry.first).getString(runtime); - jni::alias_ref value = entry.second; + jsi::String key = JSIConverter::toJSI(runtime, entry.first).getString(runtime); + jni::alias_ref value = entry.second; - object.setProperty(runtime, key, JSIConverter::toJSI(runtime, value)); + object.setProperty(runtime, key, JSIConverter::toJSI(runtime, value)); } return object; } static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { - if (!value.isObject()) return false; + if (!value.isObject()) + return false; jsi::Object object = value.getObject(runtime); return isPlainObject(runtime, object); } diff --git a/packages/react-native-nitro-modules/android/src/main/cpp/jsi/JSIConverter+JObject.hpp b/packages/react-native-nitro-modules/android/src/main/cpp/jsi/JSIConverter+JObject.hpp index 994f19e0d..58ab74b29 100644 --- a/packages/react-native-nitro-modules/android/src/main/cpp/jsi/JSIConverter+JObject.hpp +++ b/packages/react-native-nitro-modules/android/src/main/cpp/jsi/JSIConverter+JObject.hpp @@ -10,11 +10,11 @@ template struct JSIConverter; } // namespace margelo::nitro -#include "JSIConverter.hpp" -#include "JSIConverter+JString.hpp" +#include "JSIConverter+BoxedPrimitives.hpp" #include "JSIConverter+JArrayClass.hpp" #include "JSIConverter+JMap.hpp" -#include "JSIConverter+BoxedPrimitives.hpp" +#include "JSIConverter+JString.hpp" +#include "JSIConverter.hpp" #include #include #include @@ -23,77 +23,78 @@ namespace margelo::nitro { using namespace facebook; -template<> +template <> struct JSIConverter final { - static inline jsi::Value toJSI(jsi::Runtime& runtime, jni::alias_ref boxedValue) { - if (boxedValue->isInstanceOf(jni::JDouble::javaClassStatic())) { - // It's a double - return JSIConverter::toJSI(runtime, jni::static_ref_cast(boxedValue)); - } else if (boxedValue->isInstanceOf(jni::JBoolean::javaClassStatic())) { - // It's a boolean - return JSIConverter::toJSI(runtime, jni::static_ref_cast(boxedValue)); - } else if (boxedValue->isInstanceOf(jni::JLong::javaClassStatic())) { - // It's a long - return JSIConverter::toJSI(runtime, jni::static_ref_cast(boxedValue)); - } else if (boxedValue->isInstanceOf(jni::JString::javaClassStatic())) { - // It's a string - return JSIConverter::toJSI(runtime, jni::static_ref_cast(boxedValue)); - } else if (boxedValue->isInstanceOf(jni::JArrayClass::javaClassStatic())) { - // It's an array - return JSIConverter>::toJSI(runtime, jni::static_ref_cast>(boxedValue)); - } else if (boxedValue->isInstanceOf(jni::JMap::javaClassStatic())) { - // It's a map - return JSIConverter>::toJSI(runtime, jni::static_ref_cast>(boxedValue)); - } else [[unlikely]] { - throw std::runtime_error("Cannot convert \"" + boxedValue->toString() + "\" to jsi::Value!"); - } + static inline jsi::Value toJSI(jsi::Runtime& runtime, jni::alias_ref boxedValue) { + if (boxedValue->isInstanceOf(jni::JDouble::javaClassStatic())) { + // It's a double + return JSIConverter::toJSI(runtime, jni::static_ref_cast(boxedValue)); + } else if (boxedValue->isInstanceOf(jni::JBoolean::javaClassStatic())) { + // It's a boolean + return JSIConverter::toJSI(runtime, jni::static_ref_cast(boxedValue)); + } else if (boxedValue->isInstanceOf(jni::JLong::javaClassStatic())) { + // It's a long + return JSIConverter::toJSI(runtime, jni::static_ref_cast(boxedValue)); + } else if (boxedValue->isInstanceOf(jni::JString::javaClassStatic())) { + // It's a string + return JSIConverter::toJSI(runtime, jni::static_ref_cast(boxedValue)); + } else if (boxedValue->isInstanceOf(jni::JArrayClass::javaClassStatic())) { + // It's an array + return JSIConverter>::toJSI(runtime, jni::static_ref_cast>(boxedValue)); + } else if (boxedValue->isInstanceOf(jni::JMap::javaClassStatic())) { + // It's a map + return JSIConverter>::toJSI( + runtime, jni::static_ref_cast>(boxedValue)); + } else [[unlikely]] { + throw std::runtime_error("Cannot convert \"" + boxedValue->toString() + "\" to jsi::Value!"); } - static inline jni::local_ref fromJSI(jsi::Runtime& runtime, const jsi::Value& value) { - if (JSIConverter::canConvert(runtime, value)) { - // It's a double - return JSIConverter::fromJSI(runtime, value); - } else if (JSIConverter::canConvert(runtime, value)) { - // It's a boolean - return JSIConverter::fromJSI(runtime, value); - } else if (JSIConverter::canConvert(runtime, value)) { - // It's a long - return JSIConverter::fromJSI(runtime, value); - } else if (JSIConverter::canConvert(runtime, value)) { - // It's a string - return JSIConverter::fromJSI(runtime, value); - } else if (JSIConverter>::canConvert(runtime, value)) { - // It's an array - return JSIConverter>::fromJSI(runtime, value); - } else if (JSIConverter>::canConvert(runtime, value)) { - // It's a map + } + static inline jni::local_ref fromJSI(jsi::Runtime& runtime, const jsi::Value& value) { + if (JSIConverter::canConvert(runtime, value)) { + // It's a double + return JSIConverter::fromJSI(runtime, value); + } else if (JSIConverter::canConvert(runtime, value)) { + // It's a boolean + return JSIConverter::fromJSI(runtime, value); + } else if (JSIConverter::canConvert(runtime, value)) { + // It's a long + return JSIConverter::fromJSI(runtime, value); + } else if (JSIConverter::canConvert(runtime, value)) { + // It's a string + return JSIConverter::fromJSI(runtime, value); + } else if (JSIConverter>::canConvert(runtime, value)) { + // It's an array + return JSIConverter>::fromJSI(runtime, value); + } else if (JSIConverter>::canConvert(runtime, value)) { + // It's a map #ifndef NDEBUG - if (!isPlainObject(runtime, value.asObject(runtime))) [[unlikely]] { - std::string stringRepresentation = value.toString(runtime).utf8(runtime); - throw std::runtime_error("Cannot convert \"" + stringRepresentation + "\" to JObject!"); - } + if (!isPlainObject(runtime, value.asObject(runtime))) [[unlikely]] { + std::string stringRepresentation = value.toString(runtime).utf8(runtime); + throw std::runtime_error("Cannot convert \"" + stringRepresentation + "\" to JObject!"); + } #endif - return JSIConverter>::fromJSI(runtime, value); - } else [[unlikely]] { - std::string stringRepresentation = value.toString(runtime).utf8(runtime); - throw std::runtime_error("Cannot convert \"" + stringRepresentation + "\" to JObject!"); - } + return JSIConverter>::fromJSI(runtime, value); + } else [[unlikely]] { + std::string stringRepresentation = value.toString(runtime).utf8(runtime); + throw std::runtime_error("Cannot convert \"" + stringRepresentation + "\" to JObject!"); } - static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { - if (JSIConverter::canConvert(runtime, value)) { - return true; - } else if (JSIConverter::canConvert(runtime, value)) { - return true; - } else if (JSIConverter::canConvert(runtime, value)) { - return true; - } else if (JSIConverter::canConvert(runtime, value)) { - return true; - } else if (JSIConverter>::canConvert(runtime, value)) { - return true; - } else if (JSIConverter>::canConvert(runtime, value)) { - return true; - } - return false; + } + static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { + if (JSIConverter::canConvert(runtime, value)) { + return true; + } else if (JSIConverter::canConvert(runtime, value)) { + return true; + } else if (JSIConverter::canConvert(runtime, value)) { + return true; + } else if (JSIConverter::canConvert(runtime, value)) { + return true; + } else if (JSIConverter>::canConvert(runtime, value)) { + return true; + } else if (JSIConverter>::canConvert(runtime, value)) { + return true; } + return false; + } }; } // namespace margelo::nitro