From 84b995e4ebe0891c91ef9602e785d2fa6eb25c38 Mon Sep 17 00:00:00 2001 From: Marc Rousavy Date: Thu, 20 Jun 2024 10:41:09 +0200 Subject: [PATCH] Rename to .hpp --- .../NitroExample.xcodeproj/project.pbxproj | 2 ++ example/ios/Podfile.lock | 2 +- .../android/cpp-adapter.cpp | 2 +- .../cpp/core/{EnumMapper.h => EnumMapper.hpp} | 0 .../cpp/core/HybridObject.cpp | 6 ++-- .../core/{HybridObject.h => HybridObject.hpp} | 4 +-- .../core/{JSIConverter.h => JSIConverter.hpp} | 14 +++++----- .../{PointerHolder.h => PointerHolder.hpp} | 4 +-- .../cpp/core/Promise.cpp | 2 +- .../cpp/core/{Promise.h => Promise.hpp} | 0 .../cpp/core/PromiseFactory.cpp | 6 ++-- .../{PromiseFactory.h => PromiseFactory.hpp} | 4 +-- .../cpp/react-native-nitro.cpp | 5 +++- ...-native-nitro.h => react-native-nitro.hpp} | 0 ...Dispatcher.h => CallInvokerDispatcher.hpp} | 2 +- .../cpp/threading/Dispatcher.cpp | 4 +-- .../{Dispatcher.h => Dispatcher.hpp} | 0 .../cpp/utils/NitroLogger.hpp | 28 +++++++++++++++++++ .../react-native-nitro-modules.podspec | 3 +- 19 files changed, 61 insertions(+), 27 deletions(-) rename packages/react-native-nitro-modules/cpp/core/{EnumMapper.h => EnumMapper.hpp} (100%) rename packages/react-native-nitro-modules/cpp/core/{HybridObject.h => HybridObject.hpp} (99%) rename packages/react-native-nitro-modules/cpp/core/{JSIConverter.h => JSIConverter.hpp} (98%) rename packages/react-native-nitro-modules/cpp/core/{PointerHolder.h => PointerHolder.hpp} (98%) rename packages/react-native-nitro-modules/cpp/core/{Promise.h => Promise.hpp} (100%) rename packages/react-native-nitro-modules/cpp/core/{PromiseFactory.h => PromiseFactory.hpp} (92%) rename packages/react-native-nitro-modules/cpp/{react-native-nitro.h => react-native-nitro.hpp} (100%) rename packages/react-native-nitro-modules/cpp/threading/{CallInvokerDispatcher.h => CallInvokerDispatcher.hpp} (96%) rename packages/react-native-nitro-modules/cpp/threading/{Dispatcher.h => Dispatcher.hpp} (100%) create mode 100644 packages/react-native-nitro-modules/cpp/utils/NitroLogger.hpp diff --git a/example/ios/NitroExample.xcodeproj/project.pbxproj b/example/ios/NitroExample.xcodeproj/project.pbxproj index e4d075a74..587f52d6e 100644 --- a/example/ios/NitroExample.xcodeproj/project.pbxproj +++ b/example/ios/NitroExample.xcodeproj/project.pbxproj @@ -608,6 +608,7 @@ ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native"; SDKROOT = iphoneos; + SWIFT_OBJC_INTEROP_MODE = objcxx; USE_HERMES = true; }; name = Debug; @@ -683,6 +684,7 @@ ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native"; SDKROOT = iphoneos; + SWIFT_OBJC_INTEROP_MODE = objcxx; USE_HERMES = true; VALIDATE_PRODUCT = YES; }; diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 839fa67a1..bf137bca7 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1440,7 +1440,7 @@ SPEC CHECKSUMS: React-jsitracing: 0fa7f78d8fdda794667cb2e6f19c874c1cf31d7e React-logger: 29fa3e048f5f67fe396bc08af7606426d9bd7b5d React-Mapbuffer: bf56147c9775491e53122a94c423ac201417e326 - react-native-nitro-modules: 7ce374898fa9867e18014b6960457c9da17096d2 + react-native-nitro-modules: 9f30e849db461f046b881701efcebd3c2d44f6aa React-nativeconfig: 9f223cd321823afdecf59ed00861ab2d69ee0fc1 React-NativeModulesApple: ff7efaff7098639db5631236cfd91d60abff04c0 React-perflogger: 32ed45d9cee02cf6639acae34251590dccd30994 diff --git a/packages/react-native-nitro-modules/android/cpp-adapter.cpp b/packages/react-native-nitro-modules/android/cpp-adapter.cpp index 22db6b7b6..23df3e0d1 100644 --- a/packages/react-native-nitro-modules/android/cpp-adapter.cpp +++ b/packages/react-native-nitro-modules/android/cpp-adapter.cpp @@ -1,5 +1,5 @@ #include -#include "react-native-nitro.h" +#include "react-native-nitro.hpp" extern "C" JNIEXPORT jdouble JNICALL diff --git a/packages/react-native-nitro-modules/cpp/core/EnumMapper.h b/packages/react-native-nitro-modules/cpp/core/EnumMapper.hpp similarity index 100% rename from packages/react-native-nitro-modules/cpp/core/EnumMapper.h rename to packages/react-native-nitro-modules/cpp/core/EnumMapper.hpp diff --git a/packages/react-native-nitro-modules/cpp/core/HybridObject.cpp b/packages/react-native-nitro-modules/cpp/core/HybridObject.cpp index d794ba9e5..9fe737e7f 100644 --- a/packages/react-native-nitro-modules/cpp/core/HybridObject.cpp +++ b/packages/react-native-nitro-modules/cpp/core/HybridObject.cpp @@ -2,9 +2,9 @@ // Created by Marc Rousavy on 21.02.24. // -#include "HybridObject.h" -#include "JSIConverter.h" -#include "Logger.h" +#include "HybridObject.hpp" +#include "JSIConverter.hpp" +#include "Logger.hpp" namespace margelo { diff --git a/packages/react-native-nitro-modules/cpp/core/HybridObject.h b/packages/react-native-nitro-modules/cpp/core/HybridObject.hpp similarity index 99% rename from packages/react-native-nitro-modules/cpp/core/HybridObject.h rename to packages/react-native-nitro-modules/cpp/core/HybridObject.hpp index 115b88d4e..9fe7b7936 100644 --- a/packages/react-native-nitro-modules/cpp/core/HybridObject.h +++ b/packages/react-native-nitro-modules/cpp/core/HybridObject.hpp @@ -4,8 +4,8 @@ #pragma once -#include "JSIConverter.h" -#include "Logger.h" +#include "JSIConverter.hpp" +#include "NitroLogger.hpp" #include #include #include diff --git a/packages/react-native-nitro-modules/cpp/core/JSIConverter.h b/packages/react-native-nitro-modules/cpp/core/JSIConverter.hpp similarity index 98% rename from packages/react-native-nitro-modules/cpp/core/JSIConverter.h rename to packages/react-native-nitro-modules/cpp/core/JSIConverter.hpp index fadb7e6f9..35b70ea8d 100644 --- a/packages/react-native-nitro-modules/cpp/core/JSIConverter.h +++ b/packages/react-native-nitro-modules/cpp/core/JSIConverter.hpp @@ -4,12 +4,11 @@ #pragma once -#include "EnumMapper.h" -#include "HybridObject.h" -#include "Promise.h" -#include "PromiseFactory.h" -#include "WorkletRuntimeRegistry.h" -#include "threading/Dispatcher.h" +#include "EnumMapper.hpp" +#include "HybridObject.hpp" +#include "Promise.hpp" +#include "PromiseFactory.hpp" +#include "Dispatcher.hpp" #include #include #include @@ -201,7 +200,8 @@ template struct JSIConverter fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Function function = arg.getObject(runtime).getFunction(runtime); - std::shared_ptr sharedFunction = JSIHelper::createSharedJsiFunction(runtime, std::move(function)); + // TODO: Weakify this using a RuntimeWatch so it is safely managed by the Runtime, not by us. + auto sharedFunction = std::make_shared(std::move(function)); return [&runtime, sharedFunction](Args... args) -> ReturnType { jsi::Value result = sharedFunction->call(runtime, JSIConverter>::toJSI(runtime, args)...); if constexpr (std::is_same_v) { diff --git a/packages/react-native-nitro-modules/cpp/core/PointerHolder.h b/packages/react-native-nitro-modules/cpp/core/PointerHolder.hpp similarity index 98% rename from packages/react-native-nitro-modules/cpp/core/PointerHolder.h rename to packages/react-native-nitro-modules/cpp/core/PointerHolder.hpp index bc5478b3c..716512616 100644 --- a/packages/react-native-nitro-modules/cpp/core/PointerHolder.h +++ b/packages/react-native-nitro-modules/cpp/core/PointerHolder.hpp @@ -4,8 +4,8 @@ #pragma once -#include "HybridObject.h" -#include "Logger.h" +#include "HybridObject.hpp" +#include "NitroLogger.hpp" #include #include diff --git a/packages/react-native-nitro-modules/cpp/core/Promise.cpp b/packages/react-native-nitro-modules/cpp/core/Promise.cpp index 078fa8b20..97d2b3d95 100644 --- a/packages/react-native-nitro-modules/cpp/core/Promise.cpp +++ b/packages/react-native-nitro-modules/cpp/core/Promise.cpp @@ -1,4 +1,4 @@ -#include "Promise.h" +#include "Promise.hpp" #include #include #include diff --git a/packages/react-native-nitro-modules/cpp/core/Promise.h b/packages/react-native-nitro-modules/cpp/core/Promise.hpp similarity index 100% rename from packages/react-native-nitro-modules/cpp/core/Promise.h rename to packages/react-native-nitro-modules/cpp/core/Promise.hpp diff --git a/packages/react-native-nitro-modules/cpp/core/PromiseFactory.cpp b/packages/react-native-nitro-modules/cpp/core/PromiseFactory.cpp index b63a0b373..58bf99434 100644 --- a/packages/react-native-nitro-modules/cpp/core/PromiseFactory.cpp +++ b/packages/react-native-nitro-modules/cpp/core/PromiseFactory.cpp @@ -5,9 +5,9 @@ // Created by Marc Rousavy on 11.03.24. // -#include "PromiseFactory.h" -#include "Logger.h" -#include "threading/Dispatcher.h" +#include "PromiseFactory.hpp" +#include "Logger.hpp" +#include "threading/Dispatcher.hpp" namespace margelo { diff --git a/packages/react-native-nitro-modules/cpp/core/PromiseFactory.h b/packages/react-native-nitro-modules/cpp/core/PromiseFactory.hpp similarity index 92% rename from packages/react-native-nitro-modules/cpp/core/PromiseFactory.h rename to packages/react-native-nitro-modules/cpp/core/PromiseFactory.hpp index 8b6531d64..ad0f12964 100644 --- a/packages/react-native-nitro-modules/cpp/core/PromiseFactory.h +++ b/packages/react-native-nitro-modules/cpp/core/PromiseFactory.hpp @@ -7,8 +7,8 @@ #pragma once -#include "Promise.h" -#include "threading/Dispatcher.h" +#include "Promise.hpp" +#include "Dispatcher.hpp" #include #include diff --git a/packages/react-native-nitro-modules/cpp/react-native-nitro.cpp b/packages/react-native-nitro-modules/cpp/react-native-nitro.cpp index acf60dfc0..9d82f4579 100644 --- a/packages/react-native-nitro-modules/cpp/react-native-nitro.cpp +++ b/packages/react-native-nitro-modules/cpp/react-native-nitro.cpp @@ -1,7 +1,10 @@ -#include "react-native-nitro.h" +#include "react-native-nitro.hpp" + +#include namespace nitro { double multiply(double a, double b) { + return a * b; } } diff --git a/packages/react-native-nitro-modules/cpp/react-native-nitro.h b/packages/react-native-nitro-modules/cpp/react-native-nitro.hpp similarity index 100% rename from packages/react-native-nitro-modules/cpp/react-native-nitro.h rename to packages/react-native-nitro-modules/cpp/react-native-nitro.hpp diff --git a/packages/react-native-nitro-modules/cpp/threading/CallInvokerDispatcher.h b/packages/react-native-nitro-modules/cpp/threading/CallInvokerDispatcher.hpp similarity index 96% rename from packages/react-native-nitro-modules/cpp/threading/CallInvokerDispatcher.h rename to packages/react-native-nitro-modules/cpp/threading/CallInvokerDispatcher.hpp index e7f305060..1ae6ebab2 100644 --- a/packages/react-native-nitro-modules/cpp/threading/CallInvokerDispatcher.h +++ b/packages/react-native-nitro-modules/cpp/threading/CallInvokerDispatcher.hpp @@ -4,7 +4,7 @@ #pragma once -#include "Dispatcher.h" +#include "Dispatcher.hpp" #include namespace margelo { diff --git a/packages/react-native-nitro-modules/cpp/threading/Dispatcher.cpp b/packages/react-native-nitro-modules/cpp/threading/Dispatcher.cpp index 4fca79270..8445ff1b1 100644 --- a/packages/react-native-nitro-modules/cpp/threading/Dispatcher.cpp +++ b/packages/react-native-nitro-modules/cpp/threading/Dispatcher.cpp @@ -1,5 +1,5 @@ -#include "Dispatcher.h" -#include "Logger.h" +#include "Dispatcher.hpp" +#include "Logger.hpp" namespace margelo { diff --git a/packages/react-native-nitro-modules/cpp/threading/Dispatcher.h b/packages/react-native-nitro-modules/cpp/threading/Dispatcher.hpp similarity index 100% rename from packages/react-native-nitro-modules/cpp/threading/Dispatcher.h rename to packages/react-native-nitro-modules/cpp/threading/Dispatcher.hpp diff --git a/packages/react-native-nitro-modules/cpp/utils/NitroLogger.hpp b/packages/react-native-nitro-modules/cpp/utils/NitroLogger.hpp new file mode 100644 index 000000000..5b3fb217c --- /dev/null +++ b/packages/react-native-nitro-modules/cpp/utils/NitroLogger.hpp @@ -0,0 +1,28 @@ +// +// Created by Marc Rousavy on 05.03.24. +// + +#pragma once + +#include +#include +#include + +namespace margelo { + +class Logger { +private: + Logger() = delete; + +public: + template inline static void log(const std::string& tag, const std::string& message, Args&&... args) { + try { + std::string formattedMessage = std::format(message, std::forward(args)...); + std::cout << "[" << tag << "] " << formattedMessage << std::endl; + } catch (const std::format_error& e) { + std::cerr << "Formatting error: " << e.what() << std::endl; + } + } +}; + +} // namespace margelo diff --git a/packages/react-native-nitro-modules/react-native-nitro-modules.podspec b/packages/react-native-nitro-modules/react-native-nitro-modules.podspec index 9ff5f6b04..b9fe75612 100644 --- a/packages/react-native-nitro-modules/react-native-nitro-modules.podspec +++ b/packages/react-native-nitro-modules/react-native-nitro-modules.podspec @@ -18,7 +18,8 @@ Pod::Spec.new do |s| s.subspec 'C++-Bindings' do |ss| # VisionCamera Core C++ bindings ss.source_files = [ - "cpp/**/*.{h,c,cpp}" + "cpp/**/*.{h,c}", + "cpp/**/*.{hpp,cpp}" ] ss.public_header_files = [ "cpp/**/*.h"