UNPKG

nitro-codegen

Version:

The code-generator for react-native-nitro-modules.

33 lines (32 loc) 1.23 kB
import { NitroConfig } from '../../config/NitroConfig.js'; import { getHybridObjectName } from '../getHybridObjectName.js'; export function createJNIHybridObjectRegistration({ hybridObjectName, jniClassName, }) { const { JHybridTSpec } = getHybridObjectName(hybridObjectName); const jniNamespace = NitroConfig.getAndroidPackage('c++/jni', jniClassName); return { requiredImports: [ { name: `${JHybridTSpec}.hpp`, language: 'c++', space: 'user' }, { name: 'NitroModules/JNISharedPtr.hpp', language: 'c++', space: 'system', }, { name: 'NitroModules/DefaultConstructableObject.hpp', language: 'c++', space: 'system', }, ], cppCode: ` HybridObjectRegistry::registerHybridObjectConstructor( "${hybridObjectName}", []() -> std::shared_ptr<HybridObject> { static DefaultConstructableObject<${JHybridTSpec}::javaobject> object("${jniNamespace}"); auto instance = object.create(); auto globalRef = jni::make_global(instance); return JNISharedPtr::make_shared_from_jni<${JHybridTSpec}>(globalRef); } ); `.trim(), }; }