diff --git a/packages/nitrogen/src/syntax/kotlin/FbjniHybridObject.ts b/packages/nitrogen/src/syntax/kotlin/FbjniHybridObject.ts index 42e62a843c..f59f170396 100644 --- a/packages/nitrogen/src/syntax/kotlin/FbjniHybridObject.ts +++ b/packages/nitrogen/src/syntax/kotlin/FbjniHybridObject.ts @@ -8,15 +8,36 @@ import { getKotlinPropertyAccessors, KotlinInstanceMethod } from './KotlinInstan import { wrapKotlinType } from './wrapKotlinType.js' import { getImportsCode } from '../getImportCode.js' import { createKotlinHybridClassBindings } from './KotlinHybridClassBindings.js' +import type { KotlinHybridObjectType } from './types/KotlinHybridObjectType.js' -export function createFbjniHybridObject(spec: HybridObjectSpec<'kotlin'>): SourceFile[] { +interface FbjniHybridObjectOptions { + spec: HybridObjectSpec<'kotlin'> + hybridObject: KotlinHybridObjectType +} + +export function createFbjniHybridObject({ spec, hybridObject }: FbjniHybridObjectOptions): SourceFile[] { const name = getHybridObjectName(spec.name) const properties = spec.properties const nativeMethods = spec.methods + const nonvirtual = hybridObject.canUseNonvirtualJniCalls const propertyAccessors = properties.flatMap(getKotlinPropertyAccessors) - const propertyDefinitions = propertyAccessors.flatMap((accessor) => accessor.createBridge().cppMethods) - const methodDefinitions = nativeMethods.flatMap((method) => new KotlinInstanceMethod({ method: method }).createBridge().cppMethods) + const propertyDefinitions = propertyAccessors.flatMap((accessor) => accessor.createBridge({ nonvirtual: nonvirtual }).cppMethods) + const methodDefinitions = nativeMethods.flatMap( + (method) => new KotlinInstanceMethod({ method: method }).createBridge({ nonvirtual: nonvirtual }).cppMethods + ) const bindings = createKotlinHybridClassBindings(spec) + let getClassBody: string + if (nonvirtual) { + getClassBody = ` +static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); +static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); +return __class; +`.trim() + } else { + getClassBody = ` +return ${name.JHybridTSpec}::JavaPart::javaClassStatic(); +`.trim() + } const registrations: string[] = [] for (const property of properties) { const accessors = [`&${name.JHybridTSpec}::${property.getGetterName('other')}`] @@ -96,6 +117,7 @@ namespace ${cxxNamespace} { static constexpr auto kJavaDescriptor = "L${cxxPartJniClassDescriptor};"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; @@ -203,6 +225,10 @@ namespace ${cxxNamespace} { return makeCxxInstance(jThis); } + jni::alias_ref ${name.JHybridTSpec}::CxxPart::getClass() { + ${indent(getClassBody, ' ')} + } + std::shared_ptr ${name.JHybridTSpec}::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast<${name.JHybridTSpec}::JavaPart>(javaPart); if (castJavaPart == nullptr) [[unlikely]] { diff --git a/packages/nitrogen/src/syntax/kotlin/KotlinConstructor.ts b/packages/nitrogen/src/syntax/kotlin/KotlinConstructor.ts index 5b5c37e967..2154910999 100644 --- a/packages/nitrogen/src/syntax/kotlin/KotlinConstructor.ts +++ b/packages/nitrogen/src/syntax/kotlin/KotlinConstructor.ts @@ -6,7 +6,7 @@ import { HybridObjectType } from '../types/HybridObjectType.js' import { KotlinNativeHybridObjectType } from './types/KotlinNativeHybridObjectType.js' import { createCppJniCallBody, - createKotlinForwarderBody, + createKotlinBridgeBody, getKotlinImplementation, prepareKotlinMethod, type KotlinMethodBridge, @@ -60,7 +60,7 @@ export class KotlinConstructor extends Constructor { jniMethodLookup: `${this.jniClass}->getStaticMethod`, jniReceiver: this.jniClass, }) - const kotlinBody = createKotlinForwarderBody({ + const kotlinBody = createKotlinBridgeBody({ callable: this.callable, getKotlinInvocation: (args) => `${this.implementationClassName}(${args.join(', ')})`, }) diff --git a/packages/nitrogen/src/syntax/kotlin/KotlinHybridObject.ts b/packages/nitrogen/src/syntax/kotlin/KotlinHybridObject.ts index a2d339b150..a919f3c07b 100644 --- a/packages/nitrogen/src/syntax/kotlin/KotlinHybridObject.ts +++ b/packages/nitrogen/src/syntax/kotlin/KotlinHybridObject.ts @@ -19,6 +19,7 @@ import type { KotlinStaticProperty } from './KotlinStaticProperty.js' import { wrapKotlinType } from './wrapKotlinType.js' import { getImportCode } from '../getImportCode.js' import { getKotlinNativeType } from './getKotlinNativeType.js' +import { KotlinHybridObjectType } from './types/KotlinHybridObjectType.js' export function createKotlinHybridObject(publicSpec: HybridObjectSpec<'kotlin'>): SourceFile[] { const nativeProperties = publicSpec.properties.map((property) => { @@ -29,6 +30,7 @@ export function createKotlinHybridObject(publicSpec: HybridObjectSpec<'kotlin'>) ...publicSpec, properties: nativeProperties, } + const hybridObject = new KotlinHybridObjectType(new HybridObjectType(spec)) const name = getHybridObjectName(spec.name) const properties = spec.properties.map(getKotlinPropertyCode).join('\n\n') const methods = spec.methods.map(getKotlinMethodCode).join('\n\n') @@ -40,6 +42,7 @@ export function createKotlinHybridObject(publicSpec: HybridObjectSpec<'kotlin'>) }) .join('\n\n') const bridgeCompanion = getKotlinCompanion(spec) + const cxxPartMembers = getKotlinCxxPartMembers({ spec: spec, hybridObject: hybridObject }) const extraImports: SourceImport[] = [ ...spec.properties.flatMap((p) => p.getRequiredImports('kotlin')), @@ -48,6 +51,7 @@ export function createKotlinHybridObject(publicSpec: HybridObjectSpec<'kotlin'>) ...spec.staticMethods.flatMap((m) => m.getRequiredImports('kotlin')), ...(spec.constructor?.getRequiredImports('kotlin') ?? []), ...bridgeCompanion.imports, + ...cxxPartMembers.imports, ...spec.baseTypes.flatMap((b) => new HybridObjectType(b).getRequiredImports('kotlin')), { name: 'com.margelo.nitro.core.HybridObject', @@ -124,9 +128,7 @@ abstract class ${name.HybridTSpec}: ${supertypes} { @DoNotStrip @Keep protected open class CxxPart(javaPart: ${name.HybridTSpec}): ${cxxPartBase}(javaPart) { - // C++ ${name.JHybridTSpec}::CxxPart::initHybrid(...) - @FastNative - external override fun initHybrid(): HybridData + ${indent(cxxPartMembers.code, ' ')} } override fun createCxxPart(): CxxPart { return CxxPart(this) @@ -147,7 +149,7 @@ abstract class ${name.HybridTSpec}: ${supertypes} { `.trim() // 2. Create C++ (fbjni) bindings - const cppFiles = createFbjniHybridObject(spec) + const cppFiles = createFbjniHybridObject({ spec: spec, hybridObject: hybridObject }) // 3. Create enums or structs in Kotlin const nativeTypes = getAllTypes(spec) @@ -181,8 +183,39 @@ interface KotlinCompanionGroup { callables: (KotlinConstructor | KotlinStaticMethod | KotlinStaticProperty)[] } +interface KotlinCxxPartMembersOptions { + spec: HybridObjectSpec<'kotlin'> + hybridObject: KotlinHybridObjectType +} + +function getKotlinCxxPartMembers({ spec, hybridObject }: KotlinCxxPartMembersOptions): KotlinCompanion { + const name = getHybridObjectName(spec.name) + const initHybridCode = ` +// C++ ${name.JHybridTSpec}::CxxPart::initHybrid(...) +@FastNative +external override fun initHybrid(): HybridData +`.trim() + const sections = [initHybridCode] + const imports: SourceImport[] = [] + if (hybridObject.canUseNonvirtualJniCalls) { + const implementation = getKotlinImplementation(spec) + imports.push(implementation.kotlinImport) + // A class literal keeps the implementation reachable after R8 renaming. + const implementationClassCode = ` +companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = ${implementation.className}::class.java +} +`.trim() + sections.push(implementationClassCode) + } + return { code: sections.join('\n\n'), imports: imports } +} + /** - * The companion object holds the forwarders JNI calls to construct the class or call its static methods. + * The companion object holds the bridges JNI calls to construct the class or call its static methods. * They let Kotlin check the implementation at compile time, keep it from being stripped by R8, * and expose actual JVM static methods through `@JvmStatic`. * TODO: Remove the Kotlin-side conversions (`convert(..., { in: 'kotlin' })`, for `UInt64` @@ -211,7 +244,7 @@ protected const val TAG = "${name.HybridTSpec}" // Only static members require a companion; instance-only specs may have no configured implementation. if (spec.staticMethods.length > 0 || spec.staticProperties.length > 0) { const implementation = getKotlinImplementation(spec) - // Check the configured companion's contract; forwarders still call it directly. + // Check the configured companion's contract; bridges still call it directly. const companionRequirement = ` private val implementationCompanion: Companion get() = ${implementation.className} @@ -219,18 +252,18 @@ private val implementationCompanion: Companion sections.push(companionRequirement) } for (const group of groups) { - const forwarders = group.callables + const bridges = group.callables .flatMap((callable) => callable.createBridge().kotlinMethods) .map(({ method, body }) => method.getDefinition('kotlin', { body: body })) const groupCode = ` // ${group.comment} -${forwarders.join('\n\n')} +${bridges.join('\n\n')} `.trim() sections.push(groupCode) } const imports: SourceImport[] = [] if (groups.length > 0) { - // The forwarders call the implementation by its class name. + // The bridges call the implementation by its class name. imports.push(getKotlinImplementation(spec).kotlinImport) } return { code: sections.join('\n\n'), imports: imports } @@ -238,29 +271,29 @@ ${forwarders.join('\n\n')} function getKotlinMethodCode(method: InstanceMethod): string { const kotlinMethod = new KotlinInstanceMethod({ method: method }) - // Without a forwarder, JNI calls the abstract member directly. + // Without a bridge, JNI calls the abstract member directly. const declaration = new InstanceMethod(method.name, method.returnType, method.parameters, { - doNotStrip: !kotlinMethod.needsKotlinForwarder, + doNotStrip: !kotlinMethod.needsKotlinBridge, pureVirtual: true, }) - const forwarders = kotlinMethod + const bridges = kotlinMethod .createBridge() - .kotlinMethods.map(({ method: forwarder, body }) => forwarder.getDefinition('kotlin', { body: body })) - return [declaration.getDeclaration('kotlin'), ...forwarders].join('\n\n') + .kotlinMethods.map(({ method: bridge, body }) => bridge.getDefinition('kotlin', { body: body })) + return [declaration.getDeclaration('kotlin'), ...bridges].join('\n\n') } function getKotlinPropertyCode(property: Property): string { const accessors = getKotlinPropertyAccessors(property) - // Without forwarders, JNI calls the abstract accessors directly. - const isCalledFromJni = accessors.every((accessor) => !accessor.needsKotlinForwarder) + // Without bridges, JNI calls the abstract accessors directly. + const isCalledFromJni = accessors.every((accessor) => !accessor.needsKotlinBridge) const declaration = property.getCode('kotlin', { doNotStrip: isCalledFromJni, virtual: true, }) - const forwarders = accessors + const bridges = accessors .flatMap((accessor) => accessor.createBridge().kotlinMethods) .map(({ method, body }) => method.getDefinition('kotlin', { body: body })) - return [declaration, ...forwarders].join('\n\n') + return [declaration, ...bridges].join('\n\n') } function getImplementedInterfaceImport(implementedInterface: KotlinImplementedInterface): SourceImport<'kotlin'> { diff --git a/packages/nitrogen/src/syntax/kotlin/KotlinInstanceMethod.ts b/packages/nitrogen/src/syntax/kotlin/KotlinInstanceMethod.ts index 4a8511dd02..58866f87bb 100644 --- a/packages/nitrogen/src/syntax/kotlin/KotlinInstanceMethod.ts +++ b/packages/nitrogen/src/syntax/kotlin/KotlinInstanceMethod.ts @@ -3,7 +3,7 @@ import { Parameter } from '../Parameter.js' import type { Property } from '../Property.js' import { createCppJniCallBody, - createKotlinForwarderBody, + createKotlinBridgeBody, prepareKotlinMethod, type KotlinMethodBridge, type KotlinMethodDefinition, @@ -21,9 +21,13 @@ interface KotlinInstanceMethodOptions { accessor?: KotlinAccessor } +interface KotlinInstanceBridgeOptions { + nonvirtual?: boolean +} + /** * The Kotlin member that C++ calls through JNI. - * If values need conversion, this is a private `_cxx` forwarder; + * If values need conversion, this is a private `_cxx` bridge; * otherwise JNI calls the public abstract member directly. */ export class KotlinInstanceMethod extends InstanceMethod { @@ -70,25 +74,30 @@ export class KotlinInstanceMethod extends InstanceMethod { this.callable = callable } - /** Whether JNI calls a private forwarder instead of the public member. */ - get needsKotlinForwarder(): boolean { + /** Whether JNI calls a private bridge instead of the public member. */ + get needsKotlinBridge(): boolean { return this.callable.needsKotlinConversion } - createBridge(): KotlinMethodBridge { + createBridge({ nonvirtual = false }: KotlinInstanceBridgeOptions = {}): KotlinMethodBridge { const nativeMethod = this.nativeMethod const cppMethod = new InstanceMethod(nativeMethod.name, nativeMethod.returnType, nativeMethod.parameters, { generated: true, }) + const isNonvirtual = nonvirtual || this.needsKotlinBridge + const jniMethod = isNonvirtual ? 'getNonvirtualMethod' : 'getMethod' + const jniMethodLookup = `CxxPart::getClass()->${jniMethod}` + const jniDeclaringClass = isNonvirtual ? 'CxxPart::getClass()' : undefined const cppBody = createCppJniCallBody({ callable: this.callable, jvmName: this.name, - jniMethodLookup: '_javaPart->javaClassStatic()->getMethod', + jniMethodLookup: jniMethodLookup, jniReceiver: '_javaPart', + jniDeclaringClass: jniDeclaringClass, }) const kotlinMethods: KotlinMethodDefinition[] = [] - if (this.needsKotlinForwarder) { - kotlinMethods.push({ method: this, body: this.getKotlinForwarderBody() }) + if (this.needsKotlinBridge) { + kotlinMethods.push({ method: this, body: this.getKotlinBridgeBody() }) } return { kotlinMethods: kotlinMethods, @@ -96,9 +105,9 @@ export class KotlinInstanceMethod extends InstanceMethod { } } - private getKotlinForwarderBody(): string { + private getKotlinBridgeBody(): string { if (this.accessor == null) { - return createKotlinForwarderBody({ + return createKotlinBridgeBody({ callable: this.callable, getKotlinInvocation: (args) => `${this.nativeMethod.name}(${args.join(', ')})`, }) diff --git a/packages/nitrogen/src/syntax/kotlin/KotlinMethodHelpers.ts b/packages/nitrogen/src/syntax/kotlin/KotlinMethodHelpers.ts index 9278e7669b..44eecf28e4 100644 --- a/packages/nitrogen/src/syntax/kotlin/KotlinMethodHelpers.ts +++ b/packages/nitrogen/src/syntax/kotlin/KotlinMethodHelpers.ts @@ -52,13 +52,13 @@ export function prepareKotlinMethod(nativeMethod: Method): KotlinMethodInfo { } } -interface KotlinForwarderBodyOptions { +interface KotlinBridgeBodyOptions { callable: KotlinMethodInfo getKotlinInvocation: (args: string[]) => string } -/** Kotlin forwarders convert JNI values to the public API and back. */ -export function createKotlinForwarderBody({ callable, getKotlinInvocation }: KotlinForwarderBodyOptions): string { +/** Kotlin bridges convert JNI values to the public API and back. */ +export function createKotlinBridgeBody({ callable, getKotlinInvocation }: KotlinBridgeBodyOptions): string { const kotlinArguments = callable.parameters.map((parameter) => parameter.type.convert(parameter.native.type.escapedName, { from: 'c++', @@ -87,10 +87,12 @@ interface CppJniCallBodyOptions { callable: KotlinMethodInfo /** The JVM method C++ calls, e.g. `addNumbers_cxx`. */ jvmName: string - /** Looks up the fbjni method, e.g. `_javaPart->javaClassStatic()->getMethod`. */ + /** Looks up the fbjni method, e.g. `CxxPart::getClass()->getMethod`. */ jniMethodLookup: string /** The Java instance, or the class for static methods. */ jniReceiver: string + /** The lookup class passed to fbjni's nonvirtual invocation. */ + jniDeclaringClass?: string } /** @@ -98,7 +100,13 @@ interface CppJniCallBodyOptions { * The caller must already be attached to the JVM. * Generated locals use the reserved `__` prefix, so they cannot shadow parameters. */ -export function createCppJniCallBody({ callable, jvmName, jniMethodLookup, jniReceiver }: CppJniCallBodyOptions): string { +export function createCppJniCallBody({ + callable, + jvmName, + jniMethodLookup, + jniReceiver, + jniDeclaringClass, +}: CppJniCallBodyOptions): string { const jniReturnType = callable.returnType.getCode('c++', { context: 'return', }) @@ -107,16 +115,19 @@ export function createCppJniCallBody({ callable, jvmName, jniMethodLookup, jniRe return `${type} /* ${parameter.native.name} */` }) const jniSignature = `${jniReturnType}(${jniParameterTypes.join(', ')})` - const jniArguments = [ - jniReceiver, + const jniArguments = [jniReceiver] + if (jniDeclaringClass != null) { + jniArguments.push(jniDeclaringClass) + } + jniArguments.push( ...callable.parameters.map((parameter) => parameter.type.convert(parameter.native.type.escapedName, { from: 'c++', to: 'kotlin', in: 'c++', }) - ), - ] + ) + ) if (callable.nativeMethod.returnType.kind === 'void') { return ` static const auto __method = ${jniMethodLookup}<${jniSignature}>("${jvmName}"); diff --git a/packages/nitrogen/src/syntax/kotlin/KotlinStaticMethod.ts b/packages/nitrogen/src/syntax/kotlin/KotlinStaticMethod.ts index 8df1dd86d5..c1d10829d3 100644 --- a/packages/nitrogen/src/syntax/kotlin/KotlinStaticMethod.ts +++ b/packages/nitrogen/src/syntax/kotlin/KotlinStaticMethod.ts @@ -3,7 +3,7 @@ import { StaticMethod } from '../StaticMethod.js' import { getHybridObjectName } from '../getHybridObjectName.js' import { createCppJniCallBody, - createKotlinForwarderBody, + createKotlinBridgeBody, getKotlinImplementation, prepareKotlinMethod, type KotlinMethodBridge, @@ -17,7 +17,7 @@ interface KotlinStaticMethodOptions { } /** - * The companion forwarder C++ calls through JNI. + * The companion bridge C++ calls through JNI. * It calls the static method on the Kotlin implementation's companion object. */ export class KotlinStaticMethod extends StaticMethod { @@ -52,7 +52,7 @@ export class KotlinStaticMethod extends StaticMethod { jniMethodLookup: `${this.jniClass}->getStaticMethod`, jniReceiver: this.jniClass, }) - const kotlinBody = createKotlinForwarderBody({ + const kotlinBody = createKotlinBridgeBody({ callable: this.callable, getKotlinInvocation: (args) => `${this.implementationClassName}.${nativeMethod.name}(${args.join(', ')})`, }) diff --git a/packages/nitrogen/src/syntax/kotlin/KotlinStaticProperty.ts b/packages/nitrogen/src/syntax/kotlin/KotlinStaticProperty.ts index ae290c5346..6743538317 100644 --- a/packages/nitrogen/src/syntax/kotlin/KotlinStaticProperty.ts +++ b/packages/nitrogen/src/syntax/kotlin/KotlinStaticProperty.ts @@ -6,7 +6,7 @@ import { StaticProperty } from '../StaticProperty.js' import { getHybridObjectName } from '../getHybridObjectName.js' import { createCppJniCallBody, - createKotlinForwarderBody, + createKotlinBridgeBody, getKotlinImplementation, prepareKotlinMethod, type KotlinMethodBridge, @@ -95,7 +95,7 @@ export class KotlinStaticProperty extends StaticProperty { jniMethodLookup: `${this.jniClass}->getStaticMethod`, jniReceiver: this.jniClass, }) - const kotlinBody = createKotlinForwarderBody({ + const kotlinBody = createKotlinBridgeBody({ callable: callable, getKotlinInvocation: getKotlinInvocation, }) diff --git a/packages/nitrogen/src/syntax/kotlin/types/KotlinHybridObjectType.ts b/packages/nitrogen/src/syntax/kotlin/types/KotlinHybridObjectType.ts index 006ff0dba5..03b2661592 100644 --- a/packages/nitrogen/src/syntax/kotlin/types/KotlinHybridObjectType.ts +++ b/packages/nitrogen/src/syntax/kotlin/types/KotlinHybridObjectType.ts @@ -13,6 +13,14 @@ export class KotlinHybridObjectType extends HybridObjectType implements KotlinTy super(type.hybridObjectName, type.platforms, type.baseTypes, type.sourceConfig) } + /** An exact implementation can skip JVM virtual dispatch for its direct members. */ + get canUseNonvirtualJniCalls(): boolean { + const android = this.platforms.android + return ( + android?.language === 'kotlin' && android.implementation != null && !android.allowInheritance && !android.allowMultipleImplementations + ) + } + /** The C++ class holding the Kotlin instance, e.g. `JHybridImageSpec`. */ get jniName(): string { const name = getHybridObjectName(this.hybridObjectName) diff --git a/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp b/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp index 412f32dee9..15fd0cda78 100644 --- a/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp +++ b/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp @@ -44,6 +44,12 @@ namespace margelo::nitro::test::external { return makeCxxInstance(jThis); } + jni::alias_ref JHybridTestViewSpec::CxxPart::getClass() { + static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); + static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); + return __class; + } + std::shared_ptr JHybridTestViewSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -60,17 +66,17 @@ namespace margelo::nitro::test::external { // Properties bool JHybridTestViewSpec::getIsBlue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("isBlue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("isBlue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridTestViewSpec::setIsBlue(bool isBlue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setBlue"); - __method(_javaPart, isBlue); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setBlue"); + __method(_javaPart, CxxPart::getClass(), isBlue); } Callback JHybridTestViewSpec::getSomeCallback() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getSomeCallback_cxx"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getSomeCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() -> Callback { if (__result->isInstanceOf(JCallback_void_cxx::javaClassStatic())) [[likely]] { auto downcast = jni::static_ref_cast(__result); @@ -82,18 +88,18 @@ namespace margelo::nitro::test::external { }(); } void JHybridTestViewSpec::setSomeCallback(const Callback& someCallback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* someCallback */)>("setSomeCallback_cxx"); - __method(_javaPart, JCallback_void_cxx::fromCpp(someCallback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* someCallback */)>("setSomeCallback_cxx"); + __method(_javaPart, CxxPart::getClass(), JCallback_void_cxx::fromCpp(someCallback)); } // Methods void JHybridTestViewSpec::someMethod() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("someMethod"); - __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("someMethod"); + __method(_javaPart, CxxPart::getClass()); } std::string JHybridTestViewSpec::getModuleName() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getModuleName"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getModuleName"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toStdString(); } diff --git a/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridTestViewSpec.hpp b/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridTestViewSpec.hpp index 6d8daf3510..d259359693 100644 --- a/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridTestViewSpec.hpp +++ b/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridTestViewSpec.hpp @@ -35,6 +35,7 @@ namespace margelo::nitro::test::external { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/external/HybridTestViewSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/kotlin/com/margelo/nitro/test/external/HybridTestViewSpec.kt b/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/kotlin/com/margelo/nitro/test/external/HybridTestViewSpec.kt index b8089511fb..8d205b53c2 100644 --- a/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/kotlin/com/margelo/nitro/test/external/HybridTestViewSpec.kt +++ b/tests/react-native/packages/react-native-nitro-test-external/nitrogen/generated/android/kotlin/com/margelo/nitro/test/external/HybridTestViewSpec.kt @@ -11,6 +11,7 @@ import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip import dalvik.annotation.optimization.FastNative +import com.margelo.nitro.test.external.HybridTestView import com.margelo.nitro.core.HybridObject import com.margelo.nitro.views.HybridView @@ -68,6 +69,13 @@ abstract class HybridTestViewSpec: HybridView() { // C++ JHybridTestViewSpec::CxxPart::initHybrid(...) @FastNative external override fun initHybrid(): HybridData + + companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = HybridTestView::class.java + } } override fun createCxxPart(): CxxPart { return CxxPart(this) diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridBenchmarkObjectSwiftKotlinSpec.cpp b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridBenchmarkObjectSwiftKotlinSpec.cpp index 2c4bc096ea..80b477c1b5 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridBenchmarkObjectSwiftKotlinSpec.cpp +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridBenchmarkObjectSwiftKotlinSpec.cpp @@ -80,6 +80,12 @@ namespace margelo::nitro::test { return makeCxxInstance(jThis); } + jni::alias_ref JHybridBenchmarkObjectSwiftKotlinSpec::CxxPart::getClass() { + static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); + static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); + return __class; + } + std::shared_ptr JHybridBenchmarkObjectSwiftKotlinSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -96,38 +102,38 @@ namespace margelo::nitro::test { // Properties double JHybridBenchmarkObjectSwiftKotlinSpec::getNumberValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getNumberValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getNumberValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } void JHybridBenchmarkObjectSwiftKotlinSpec::setNumberValue(double numberValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setNumberValue"); - __method(_javaPart, numberValue); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setNumberValue"); + __method(_javaPart, CxxPart::getClass(), numberValue); } std::shared_ptr JHybridBenchmarkObjectSwiftKotlinSpec::getThisObject() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getThisObject"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getThisObject"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridBenchmarkObjectSwiftKotlinSpec(); } // Methods void JHybridBenchmarkObjectSwiftKotlinSpec::simpleFunc() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("simpleFunc"); - __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("simpleFunc"); + __method(_javaPart, CxxPart::getClass()); } double JHybridBenchmarkObjectSwiftKotlinSpec::addNumbers(double a, double b) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("addNumbers"); - auto __result = __method(_javaPart, a, b); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("addNumbers"); + auto __result = __method(_javaPart, CxxPart::getClass(), a, b); return __result; } std::string JHybridBenchmarkObjectSwiftKotlinSpec::addStrings(const std::string& a, const std::string& b) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* a */, jni::alias_ref /* b */)>("addStrings"); - auto __result = __method(_javaPart, jni::make_jstring(a), jni::make_jstring(b)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* a */, jni::alias_ref /* b */)>("addStrings"); + auto __result = __method(_javaPart, CxxPart::getClass(), jni::make_jstring(a), jni::make_jstring(b)); return __result->toStdString(); } std::vector JHybridBenchmarkObjectSwiftKotlinSpec::bounceNumbers(const std::vector& array) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* array */)>("bounceNumbers"); - auto __result = __method(_javaPart, [&]() { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* array */)>("bounceNumbers"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&]() { size_t __size = array.size(); jni::local_ref __array = jni::JArrayDouble::newArray(__size); __array->setRegion(0, __size, array.data()); @@ -141,13 +147,13 @@ namespace margelo::nitro::test { }(); } CarKotlin JHybridBenchmarkObjectSwiftKotlinSpec::bounceCar(const CarKotlin& car) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* car */)>("bounceCar"); - auto __result = __method(_javaPart, JCar::fromCpp(car)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* car */)>("bounceCar"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCar::fromCpp(car)); return __result->toCpp(); } std::unordered_map JHybridBenchmarkObjectSwiftKotlinSpec::bounceSimpleMap(const std::unordered_map& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* map */)>("bounceSimpleMap"); - auto __result = __method(_javaPart, [&](const auto& __input) -> jni::local_ref> { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* map */)>("bounceSimpleMap"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](const auto& __input) -> jni::local_ref> { auto __map = jni::JHashMap::create(__input.size()); for (const auto& __entry : __input) { __map->put(jni::make_jstring(__entry.first), jni::JDouble::valueOf(__entry.second)); @@ -164,33 +170,33 @@ namespace margelo::nitro::test { }(__result); } std::string JHybridBenchmarkObjectSwiftKotlinSpec::tryOptionalParams(double num, bool boo, const std::optional& str) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(double /* num */, jboolean /* boo */, jni::alias_ref /* str */)>("tryOptionalParams"); - auto __result = __method(_javaPart, num, boo, str.has_value() ? jni::make_jstring(str.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(double /* num */, jboolean /* boo */, jni::alias_ref /* str */)>("tryOptionalParams"); + auto __result = __method(_javaPart, CxxPart::getClass(), num, boo, str.has_value() ? jni::make_jstring(str.value()) : nullptr); return __result->toStdString(); } std::variant JHybridBenchmarkObjectSwiftKotlinSpec::passVariant(const std::variant, std::vector, double, std::string>& either) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* either */)>("passVariant"); - auto __result = __method(_javaPart, JVariant_Boolean_DoubleArray_Array_String__Double_String::fromCpp(either)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* either */)>("passVariant"); + auto __result = __method(_javaPart, CxxPart::getClass(), JVariant_Boolean_DoubleArray_Array_String__Double_String::fromCpp(either)); return __result->toCpp(); } ArrayBuffer JHybridBenchmarkObjectSwiftKotlinSpec::bounceArrayBuffer(const ArrayBuffer& buffer) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* buffer */)>("bounceArrayBuffer"); - auto __result = __method(_javaPart, JArrayBuffer::wrap(buffer)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* buffer */)>("bounceArrayBuffer"); + auto __result = __method(_javaPart, CxxPart::getClass(), JArrayBuffer::wrap(buffer)); return __result->cthis()->getArrayBuffer(); } ArrayBuffer JHybridBenchmarkObjectSwiftKotlinSpec::copyBuffer(const ArrayBuffer& buffer) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* buffer */)>("copyBuffer"); - auto __result = __method(_javaPart, JArrayBuffer::wrap(buffer)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* buffer */)>("copyBuffer"); + auto __result = __method(_javaPart, CxxPart::getClass(), JArrayBuffer::wrap(buffer)); return __result->cthis()->getArrayBuffer(); } double JHybridBenchmarkObjectSwiftKotlinSpec::callbackSync(const Callback& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* callback */)>("callbackSync_cxx"); - auto __result = __method(_javaPart, JCallback_double_cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* callback */)>("callbackSync_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_double_cxx::fromCpp(callback)); return __result; } Promise JHybridBenchmarkObjectSwiftKotlinSpec::promiseReturnsInstantly() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("promiseReturnsInstantly"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("promiseReturnsInstantly"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -212,8 +218,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridBenchmarkObjectSwiftKotlinSpec::createPendingPromise() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createPendingPromise"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createPendingPromise"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -235,12 +241,12 @@ namespace margelo::nitro::test { }(); } void JHybridBenchmarkObjectSwiftKotlinSpec::resolvePendingPromiseOnWorker() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("resolvePendingPromiseOnWorker"); - __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("resolvePendingPromiseOnWorker"); + __method(_javaPart, CxxPart::getClass()); } std::shared_ptr JHybridBenchmarkObjectSwiftKotlinSpec::newBenchmarkObject() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("newBenchmarkObject"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("newBenchmarkObject"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridBenchmarkObjectSwiftKotlinSpec(); } diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridRecyclableTestViewSpec.cpp b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridRecyclableTestViewSpec.cpp index 736db8f6da..7b85033205 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridRecyclableTestViewSpec.cpp +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridRecyclableTestViewSpec.cpp @@ -42,6 +42,12 @@ namespace margelo::nitro::test { return makeCxxInstance(jThis); } + jni::alias_ref JHybridRecyclableTestViewSpec::CxxPart::getClass() { + static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); + static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); + return __class; + } + std::shared_ptr JHybridRecyclableTestViewSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -58,43 +64,43 @@ namespace margelo::nitro::test { // Properties bool JHybridRecyclableTestViewSpec::getIsBlue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("isBlue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("isBlue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridRecyclableTestViewSpec::setIsBlue(bool isBlue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setBlue"); - __method(_javaPart, isBlue); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setBlue"); + __method(_javaPart, CxxPart::getClass(), isBlue); } std::optional JHybridRecyclableTestViewSpec::getNativeDefaultValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getNativeDefaultValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getNativeDefaultValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt; } void JHybridRecyclableTestViewSpec::setNativeDefaultValue(const std::optional& nativeDefaultValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* nativeDefaultValue */)>("setNativeDefaultValue"); - __method(_javaPart, nativeDefaultValue.has_value() ? jni::JDouble::valueOf(nativeDefaultValue.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* nativeDefaultValue */)>("setNativeDefaultValue"); + __method(_javaPart, CxxPart::getClass(), nativeDefaultValue.has_value() ? jni::JDouble::valueOf(nativeDefaultValue.value()) : nullptr); } // Methods double JHybridRecyclableTestViewSpec::getInvalidLifecycleOrderCount() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getInvalidLifecycleOrderCount"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getInvalidLifecycleOrderCount"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } double JHybridRecyclableTestViewSpec::getOnDropViewCount() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getOnDropViewCount"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getOnDropViewCount"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } double JHybridRecyclableTestViewSpec::getPrepareForRecycleCount() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getPrepareForRecycleCount"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getPrepareForRecycleCount"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } double JHybridRecyclableTestViewSpec::getNativeDefaultValueSetterCallCount() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getNativeDefaultValueSetterCallCount"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getNativeDefaultValueSetterCallCount"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp index 489fbe161e..bbb5338cce 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp @@ -54,6 +54,12 @@ namespace margelo::nitro::test { return makeCxxInstance(jThis); } + jni::alias_ref JHybridTestViewSpec::CxxPart::getClass() { + static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); + static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); + return __class; + } + std::shared_ptr JHybridTestViewSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -70,44 +76,44 @@ namespace margelo::nitro::test { // Properties bool JHybridTestViewSpec::getIsBlue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("isBlue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("isBlue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridTestViewSpec::setIsBlue(bool isBlue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setBlue"); - __method(_javaPart, isBlue); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setBlue"); + __method(_javaPart, CxxPart::getClass(), isBlue); } bool JHybridTestViewSpec::getHasBeenCalled() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getHasBeenCalled"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getHasBeenCalled"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridTestViewSpec::setHasBeenCalled(bool hasBeenCalled) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setHasBeenCalled"); - __method(_javaPart, hasBeenCalled); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setHasBeenCalled"); + __method(_javaPart, CxxPart::getClass(), hasBeenCalled); } int64_t JHybridTestViewSpec::getInt64Value() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getInt64Value"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getInt64Value"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } void JHybridTestViewSpec::setInt64Value(int64_t int64Value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setInt64Value"); - __method(_javaPart, int64Value); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setInt64Value"); + __method(_javaPart, CxxPart::getClass(), int64Value); } ColorScheme JHybridTestViewSpec::getColorScheme() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getColorScheme"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getColorScheme"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toCpp(); } void JHybridTestViewSpec::setColorScheme(ColorScheme colorScheme) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* colorScheme */)>("setColorScheme"); - __method(_javaPart, JColorScheme::fromCpp(colorScheme)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* colorScheme */)>("setColorScheme"); + __method(_javaPart, CxxPart::getClass(), JColorScheme::fromCpp(colorScheme)); } Callback JHybridTestViewSpec::getSomeCallback() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getSomeCallback_cxx"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getSomeCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() -> Callback { if (__result->isInstanceOf(JCallback_void_cxx::javaClassStatic())) [[likely]] { auto downcast = jni::static_ref_cast(__result); @@ -119,43 +125,43 @@ namespace margelo::nitro::test { }(); } void JHybridTestViewSpec::setSomeCallback(const Callback& someCallback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* someCallback */)>("setSomeCallback_cxx"); - __method(_javaPart, JCallback_void_cxx::fromCpp(someCallback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* someCallback */)>("setSomeCallback_cxx"); + __method(_javaPart, CxxPart::getClass(), JCallback_void_cxx::fromCpp(someCallback)); } std::optional JHybridTestViewSpec::getNativeDefaultValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getNativeDefaultValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getNativeDefaultValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt; } void JHybridTestViewSpec::setNativeDefaultValue(const std::optional& nativeDefaultValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* nativeDefaultValue */)>("setNativeDefaultValue"); - __method(_javaPart, nativeDefaultValue.has_value() ? jni::JDouble::valueOf(nativeDefaultValue.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* nativeDefaultValue */)>("setNativeDefaultValue"); + __method(_javaPart, CxxPart::getClass(), nativeDefaultValue.has_value() ? jni::JDouble::valueOf(nativeDefaultValue.value()) : nullptr); } // Methods bool JHybridTestViewSpec::getIsViewBlue(const std::shared_ptr& view) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* view */)>("getIsViewBlue"); - auto __result = __method(_javaPart, view->getJavaPart()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* view */)>("getIsViewBlue"); + auto __result = __method(_javaPart, CxxPart::getClass(), view->getJavaPart()); return static_cast(__result); } double JHybridTestViewSpec::getOnDropViewCount() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getOnDropViewCount"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getOnDropViewCount"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } double JHybridTestViewSpec::getIsBlueSetterCallCount() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getIsBlueSetterCallCount"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getIsBlueSetterCallCount"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } double JHybridTestViewSpec::getNativeDefaultValueSetterCallCount() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getNativeDefaultValueSetterCallCount"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getNativeDefaultValueSetterCallCount"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } void JHybridTestViewSpec::someMethod() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("someMethod"); - __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("someMethod"); + __method(_javaPart, CxxPart::getClass()); } } // namespace margelo::nitro::test diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridBenchmarkObjectSwiftKotlinSpec.hpp b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridBenchmarkObjectSwiftKotlinSpec.hpp index 725817ec24..48b1a3a058 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridBenchmarkObjectSwiftKotlinSpec.hpp +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridBenchmarkObjectSwiftKotlinSpec.hpp @@ -45,6 +45,7 @@ namespace margelo::nitro::test { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/HybridBenchmarkObjectSwiftKotlinSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridRecyclableTestViewSpec.hpp b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridRecyclableTestViewSpec.hpp index 5589539a7e..9b64d85eee 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridRecyclableTestViewSpec.hpp +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridRecyclableTestViewSpec.hpp @@ -33,6 +33,7 @@ namespace margelo::nitro::test { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/HybridRecyclableTestViewSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridTestViewSpec.hpp b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridTestViewSpec.hpp index f90e66dee9..d5cfe6c123 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridTestViewSpec.hpp +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridTestViewSpec.hpp @@ -39,6 +39,7 @@ namespace margelo::nitro::test { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/HybridTestViewSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridBenchmarkObjectSwiftKotlinSpec.kt b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridBenchmarkObjectSwiftKotlinSpec.kt index 7f6515505f..f4b3ac0e65 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridBenchmarkObjectSwiftKotlinSpec.kt +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridBenchmarkObjectSwiftKotlinSpec.kt @@ -117,6 +117,13 @@ abstract class HybridBenchmarkObjectSwiftKotlinSpec: HybridObject() { // C++ JHybridBenchmarkObjectSwiftKotlinSpec::CxxPart::initHybrid(...) @FastNative external override fun initHybrid(): HybridData + + companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = HybridBenchmarkObjectKotlin::class.java + } } override fun createCxxPart(): CxxPart { return CxxPart(this) diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridRecyclableTestViewSpec.kt b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridRecyclableTestViewSpec.kt index e932e149c3..4f6186e0e9 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridRecyclableTestViewSpec.kt +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridRecyclableTestViewSpec.kt @@ -11,6 +11,7 @@ import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip import dalvik.annotation.optimization.FastNative +import com.margelo.nitro.test.HybridRecyclableTestView import com.margelo.nitro.core.HybridObject import com.margelo.nitro.views.HybridView @@ -68,6 +69,13 @@ abstract class HybridRecyclableTestViewSpec: HybridView() { // C++ JHybridRecyclableTestViewSpec::CxxPart::initHybrid(...) @FastNative external override fun initHybrid(): HybridData + + companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = HybridRecyclableTestView::class.java + } } override fun createCxxPart(): CxxPart { return CxxPart(this) diff --git a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestViewSpec.kt b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestViewSpec.kt index da74b49caa..5a1b2fc410 100644 --- a/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestViewSpec.kt +++ b/tests/react-native/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestViewSpec.kt @@ -11,6 +11,7 @@ import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip import dalvik.annotation.optimization.FastNative +import com.margelo.nitro.test.HybridTestView import com.margelo.nitro.core.HybridObject import com.margelo.nitro.views.HybridView @@ -104,6 +105,13 @@ abstract class HybridTestViewSpec: HybridView() { // C++ JHybridTestViewSpec::CxxPart::initHybrid(...) @FastNative external override fun initHybrid(): HybridData + + companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = HybridTestView::class.java + } } override fun createCxxPart(): CxxPart { return CxxPart(this) diff --git a/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/JHybridBaseSpec.cpp b/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/JHybridBaseSpec.cpp index c771af9e43..70c76185b1 100644 --- a/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/JHybridBaseSpec.cpp +++ b/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/JHybridBaseSpec.cpp @@ -56,6 +56,12 @@ namespace margelo::nitro::test::external { return makeCxxInstance(jThis); } + jni::alias_ref JHybridBaseSpec::CxxPart::getClass() { + static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); + static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); + return __class; + } + std::shared_ptr JHybridBaseSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -72,25 +78,25 @@ namespace margelo::nitro::test::external { // Properties double JHybridBaseSpec::getBaseValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getBaseValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getBaseValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } // Methods SizeKotlin JHybridBaseSpec::bounceSize(const SizeKotlin& size) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* size */)>("bounceSize"); - auto __result = __method(_javaPart, JSize::fromCpp(size)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* size */)>("bounceSize"); + auto __result = __method(_javaPart, CxxPart::getClass(), JSize::fromCpp(size)); return __result->toCpp(); } SizeUnit JHybridBaseSpec::bounceSizeUnit(SizeUnit unit) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* unit */)>("bounceSizeUnit"); - auto __result = __method(_javaPart, JSizeUnit::fromCpp(unit)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* unit */)>("bounceSizeUnit"); + auto __result = __method(_javaPart, CxxPart::getClass(), JSizeUnit::fromCpp(unit)); return __result->toCpp(); } Promise JHybridBaseSpec::mapSize(const SizeKotlin& size, const Callback& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* size */, jni::alias_ref /* callback */)>("mapSize_cxx"); - auto __result = __method(_javaPart, JSize::fromCpp(size), JCallback_SizeKotlin_SizeKotlin_cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* size */, jni::alias_ref /* callback */)>("mapSize_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JSize::fromCpp(size), JCallback_SizeKotlin_SizeKotlin_cxx::fromCpp(callback)); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { diff --git a/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/JHybridSomeExternalObjectSpec.cpp b/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/JHybridSomeExternalObjectSpec.cpp index 15c8a894c2..214ffb1a76 100644 --- a/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/JHybridSomeExternalObjectSpec.cpp +++ b/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/JHybridSomeExternalObjectSpec.cpp @@ -46,6 +46,10 @@ namespace margelo::nitro::test::external { return makeCxxInstance(jThis); } + jni::alias_ref JHybridSomeExternalObjectSpec::CxxPart::getClass() { + return JHybridSomeExternalObjectSpec::JavaPart::javaClassStatic(); + } + std::shared_ptr JHybridSomeExternalObjectSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -65,13 +69,13 @@ namespace margelo::nitro::test::external { // Methods std::string JHybridSomeExternalObjectSpec::getValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getValue"); + static const auto __method = CxxPart::getClass()->getMethod()>("getValue"); auto __result = __method(_javaPart); return __result->toStdString(); } OptionalPrimitivesHolderKotlin JHybridSomeExternalObjectSpec::createOptionalPrimitivesHolder(const std::optional& optionalNumber, const std::optional& optionalBoolean, const std::optional& optionalUInt64, const std::optional& optionalInt64) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* optionalNumber */, jni::alias_ref /* optionalBoolean */, jni::alias_ref /* optionalUInt64 */, jni::alias_ref /* optionalInt64 */)>("createOptionalPrimitivesHolder_cxx"); - auto __result = __method(_javaPart, optionalNumber.has_value() ? jni::JDouble::valueOf(optionalNumber.value()) : nullptr, optionalBoolean.has_value() ? jni::JBoolean::valueOf(optionalBoolean.value()) : nullptr, optionalUInt64.has_value() ? jni::JLong::valueOf(optionalUInt64.value()) : nullptr, optionalInt64.has_value() ? jni::JLong::valueOf(optionalInt64.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* optionalNumber */, jni::alias_ref /* optionalBoolean */, jni::alias_ref /* optionalUInt64 */, jni::alias_ref /* optionalInt64 */)>("createOptionalPrimitivesHolder_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), optionalNumber.has_value() ? jni::JDouble::valueOf(optionalNumber.value()) : nullptr, optionalBoolean.has_value() ? jni::JBoolean::valueOf(optionalBoolean.value()) : nullptr, optionalUInt64.has_value() ? jni::JLong::valueOf(optionalUInt64.value()) : nullptr, optionalInt64.has_value() ? jni::JLong::valueOf(optionalInt64.value()) : nullptr); return __result->toCpp(); } diff --git a/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridBaseSpec.hpp b/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridBaseSpec.hpp index 737e81a380..a7e1132e3a 100644 --- a/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridBaseSpec.hpp +++ b/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridBaseSpec.hpp @@ -37,6 +37,7 @@ namespace margelo::nitro::test::external { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/external/HybridBaseSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridSomeExternalObjectSpec.hpp b/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridSomeExternalObjectSpec.hpp index cf0d88cebb..dec80c1119 100644 --- a/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridSomeExternalObjectSpec.hpp +++ b/tests/standalone/nitro-test-external/nitrogen/generated/android/c++/include/NitroTestExternal/private/JHybridSomeExternalObjectSpec.hpp @@ -35,6 +35,7 @@ namespace margelo::nitro::test::external { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/external/HybridSomeExternalObjectSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/standalone/nitro-test-external/nitrogen/generated/android/kotlin/com/margelo/nitro/test/external/HybridBaseSpec.kt b/tests/standalone/nitro-test-external/nitrogen/generated/android/kotlin/com/margelo/nitro/test/external/HybridBaseSpec.kt index eef7ed12c2..cc3668361f 100644 --- a/tests/standalone/nitro-test-external/nitrogen/generated/android/kotlin/com/margelo/nitro/test/external/HybridBaseSpec.kt +++ b/tests/standalone/nitro-test-external/nitrogen/generated/android/kotlin/com/margelo/nitro/test/external/HybridBaseSpec.kt @@ -62,6 +62,13 @@ abstract class HybridBaseSpec: HybridObject() { // C++ JHybridBaseSpec::CxxPart::initHybrid(...) @FastNative external override fun initHybrid(): HybridData + + companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = HybridBase::class.java + } } override fun createCxxPart(): CxxPart { return CxxPart(this) diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridBaseSpec.cpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridBaseSpec.cpp index 6393fbe184..aea6e686e2 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridBaseSpec.cpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridBaseSpec.cpp @@ -72,6 +72,10 @@ namespace margelo::nitro::test { return makeCxxInstance(jThis); } + jni::alias_ref JHybridBaseSpec::CxxPart::getClass() { + return JHybridBaseSpec::JavaPart::javaClassStatic(); + } + std::shared_ptr JHybridBaseSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -88,25 +92,25 @@ namespace margelo::nitro::test { // Properties double JHybridBaseSpec::getBaseValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getBaseValue"); + static const auto __method = CxxPart::getClass()->getMethod("getBaseValue"); auto __result = __method(_javaPart); return __result; } // Methods SizeKotlin JHybridBaseSpec::bounceSize(const SizeKotlin& size) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* size */)>("bounceSize"); + static const auto __method = CxxPart::getClass()->getMethod(jni::alias_ref /* size */)>("bounceSize"); auto __result = __method(_javaPart, JSize::fromCpp(size)); return __result->toCpp(); } SizeUnit JHybridBaseSpec::bounceSizeUnit(SizeUnit unit) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* unit */)>("bounceSizeUnit"); + static const auto __method = CxxPart::getClass()->getMethod(jni::alias_ref /* unit */)>("bounceSizeUnit"); auto __result = __method(_javaPart, JSizeUnit::fromCpp(unit)); return __result->toCpp(); } Promise JHybridBaseSpec::mapSize(const SizeKotlin& size, const Callback& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* size */, jni::alias_ref /* callback */)>("mapSize_cxx"); - auto __result = __method(_javaPart, JSize::fromCpp(size), JCallback_SizeKotlin_SizeKotlin_cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* size */, jni::alias_ref /* callback */)>("mapSize_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JSize::fromCpp(size), JCallback_SizeKotlin_SizeKotlin_cxx::fromCpp(callback)); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridChildSpec.cpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridChildSpec.cpp index 7736f0bae3..59dd340ddd 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridChildSpec.cpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridChildSpec.cpp @@ -54,6 +54,10 @@ namespace margelo::nitro::test { return makeCxxInstance(jThis); } + jni::alias_ref JHybridChildSpec::CxxPart::getClass() { + return JHybridChildSpec::JavaPart::javaClassStatic(); + } + std::shared_ptr JHybridChildSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -70,14 +74,14 @@ namespace margelo::nitro::test { // Properties double JHybridChildSpec::getChildValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getChildValue"); + static const auto __method = CxxPart::getClass()->getMethod("getChildValue"); auto __result = __method(_javaPart); return __result; } // Methods std::variant JHybridChildSpec::bounceVariant(const std::variant& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("bounceVariant"); + static const auto __method = CxxPart::getClass()->getMethod(jni::alias_ref /* variant */)>("bounceVariant"); auto __result = __method(_javaPart, JNamedVariant::fromCpp(variant)); return __result->toCpp(); } diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridGrandchildSpec.cpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridGrandchildSpec.cpp index af25efd4ff..037dfc15b9 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridGrandchildSpec.cpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridGrandchildSpec.cpp @@ -41,6 +41,12 @@ namespace margelo::nitro::test { return makeCxxInstance(jThis); } + jni::alias_ref JHybridGrandchildSpec::CxxPart::getClass() { + static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); + static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); + return __class; + } + std::shared_ptr JHybridGrandchildSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -57,8 +63,8 @@ namespace margelo::nitro::test { // Properties double JHybridGrandchildSpec::getGrandchildValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getGrandchildValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getGrandchildValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridPlatformObjectSpec.cpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridPlatformObjectSpec.cpp index c93fc57580..682f1f88dc 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridPlatformObjectSpec.cpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridPlatformObjectSpec.cpp @@ -42,6 +42,12 @@ namespace margelo::nitro::test { return makeCxxInstance(jThis); } + jni::alias_ref JHybridPlatformObjectSpec::CxxPart::getClass() { + static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); + static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); + return __class; + } + std::shared_ptr JHybridPlatformObjectSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -61,8 +67,8 @@ namespace margelo::nitro::test { // Methods std::string JHybridPlatformObjectSpec::getOSVersion() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getOSVersion"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getOSVersion"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toStdString(); } diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridTestObjectSwiftKotlinSpec.cpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridTestObjectSwiftKotlinSpec.cpp index 47f55d4685..7c0a907923 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridTestObjectSwiftKotlinSpec.cpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/JHybridTestObjectSwiftKotlinSpec.cpp @@ -296,6 +296,12 @@ namespace margelo::nitro::test { return makeCxxInstance(jThis); } + jni::alias_ref JHybridTestObjectSwiftKotlinSpec::CxxPart::getClass() { + static const auto __field = CxxPart::javaClassStatic()->getStaticField("implementationClass_cxx"); + static const auto __class = jni::make_global(CxxPart::javaClassStatic()->getStaticFieldValue(__field)); + return __class; + } + std::shared_ptr JHybridTestObjectSwiftKotlinSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { auto castJavaPart = jni::dynamic_ref_cast(javaPart); if (castJavaPart == nullptr) [[unlikely]] { @@ -312,89 +318,89 @@ namespace margelo::nitro::test { // Properties double JHybridTestObjectSwiftKotlinSpec::getNumberValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getNumberValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getNumberValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } void JHybridTestObjectSwiftKotlinSpec::setNumberValue(double numberValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setNumberValue"); - __method(_javaPart, numberValue); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setNumberValue"); + __method(_javaPart, CxxPart::getClass(), numberValue); } bool JHybridTestObjectSwiftKotlinSpec::getBoolValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getBoolValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getBoolValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridTestObjectSwiftKotlinSpec::setBoolValue(bool boolValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setBoolValue"); - __method(_javaPart, boolValue); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setBoolValue"); + __method(_javaPart, CxxPart::getClass(), boolValue); } std::string JHybridTestObjectSwiftKotlinSpec::getStringValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getStringValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getStringValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toStdString(); } void JHybridTestObjectSwiftKotlinSpec::setStringValue(const std::string& stringValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* stringValue */)>("setStringValue"); - __method(_javaPart, jni::make_jstring(stringValue)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* stringValue */)>("setStringValue"); + __method(_javaPart, CxxPart::getClass(), jni::make_jstring(stringValue)); } int64_t JHybridTestObjectSwiftKotlinSpec::getInt64Value() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getInt64Value"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getInt64Value"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } void JHybridTestObjectSwiftKotlinSpec::setInt64Value(int64_t int64Value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setInt64Value"); - __method(_javaPart, int64Value); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setInt64Value"); + __method(_javaPart, CxxPart::getClass(), int64Value); } uint64_t JHybridTestObjectSwiftKotlinSpec::getUint64Value() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getUint64Value_cxx"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getUint64Value_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridTestObjectSwiftKotlinSpec::setUint64Value(uint64_t uint64Value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setUint64Value_cxx"); - __method(_javaPart, uint64Value); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setUint64Value_cxx"); + __method(_javaPart, CxxPart::getClass(), uint64Value); } nitro::NullType JHybridTestObjectSwiftKotlinSpec::getNullValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getNullValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getNullValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return nitro::null; } void JHybridTestObjectSwiftKotlinSpec::setNullValue(nitro::NullType nullValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* nullValue */)>("setNullValue"); - __method(_javaPart, JNull::null()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* nullValue */)>("setNullValue"); + __method(_javaPart, CxxPart::getClass(), JNull::null()); } std::optional JHybridTestObjectSwiftKotlinSpec::getOptionalString() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getOptionalString"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getOptionalString"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt; } void JHybridTestObjectSwiftKotlinSpec::setOptionalString(const std::optional& optionalString) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* optionalString */)>("setOptionalString"); - __method(_javaPart, optionalString.has_value() ? jni::make_jstring(optionalString.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* optionalString */)>("setOptionalString"); + __method(_javaPart, CxxPart::getClass(), optionalString.has_value() ? jni::make_jstring(optionalString.value()) : nullptr); } std::optional JHybridTestObjectSwiftKotlinSpec::getStringOrUndefined() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getStringOrUndefined"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getStringOrUndefined"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt; } void JHybridTestObjectSwiftKotlinSpec::setStringOrUndefined(const std::optional& stringOrUndefined) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* stringOrUndefined */)>("setStringOrUndefined"); - __method(_javaPart, stringOrUndefined.has_value() ? jni::make_jstring(stringOrUndefined.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* stringOrUndefined */)>("setStringOrUndefined"); + __method(_javaPart, CxxPart::getClass(), stringOrUndefined.has_value() ? jni::make_jstring(stringOrUndefined.value()) : nullptr); } std::variant JHybridTestObjectSwiftKotlinSpec::getStringOrNull() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getStringOrNull"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getStringOrNull"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toCpp(); } void JHybridTestObjectSwiftKotlinSpec::setStringOrNull(const std::variant& stringOrNull) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* stringOrNull */)>("setStringOrNull"); - __method(_javaPart, JVariant_NullType_String::fromCpp(stringOrNull)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* stringOrNull */)>("setStringOrNull"); + __method(_javaPart, CxxPart::getClass(), JVariant_NullType_String::fromCpp(stringOrNull)); } std::optional> JHybridTestObjectSwiftKotlinSpec::getOptionalArray() { - static const auto __method = _javaPart->javaClassStatic()->getMethod>()>("getOptionalArray"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>()>("getOptionalArray"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional([&](auto&& __input) { size_t __size = __input->size(); std::vector __vector; @@ -407,8 +413,8 @@ namespace margelo::nitro::test { }(__result)) : std::nullopt; } void JHybridTestObjectSwiftKotlinSpec::setOptionalArray(const std::optional>& optionalArray) { - static const auto __method = _javaPart->javaClassStatic()->getMethod> /* optionalArray */)>("setOptionalArray"); - __method(_javaPart, optionalArray.has_value() ? [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod> /* optionalArray */)>("setOptionalArray"); + __method(_javaPart, CxxPart::getClass(), optionalArray.has_value() ? [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -420,35 +426,35 @@ namespace margelo::nitro::test { }(optionalArray.value()) : nullptr); } std::optional JHybridTestObjectSwiftKotlinSpec::getOptionalEnum() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getOptionalEnum"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getOptionalEnum"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } void JHybridTestObjectSwiftKotlinSpec::setOptionalEnum(const std::optional& optionalEnum) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* optionalEnum */)>("setOptionalEnum"); - __method(_javaPart, optionalEnum.has_value() ? JPowertrain::fromCpp(optionalEnum.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* optionalEnum */)>("setOptionalEnum"); + __method(_javaPart, CxxPart::getClass(), optionalEnum.has_value() ? JPowertrain::fromCpp(optionalEnum.value()) : nullptr); } std::optional JHybridTestObjectSwiftKotlinSpec::getOptionalOldEnum() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getOptionalOldEnum"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getOptionalOldEnum"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } void JHybridTestObjectSwiftKotlinSpec::setOptionalOldEnum(const std::optional& optionalOldEnum) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* optionalOldEnum */)>("setOptionalOldEnum"); - __method(_javaPart, optionalOldEnum.has_value() ? JOldEnum::fromCpp(optionalOldEnum.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* optionalOldEnum */)>("setOptionalOldEnum"); + __method(_javaPart, CxxPart::getClass(), optionalOldEnum.has_value() ? JOldEnum::fromCpp(optionalOldEnum.value()) : nullptr); } std::optional JHybridTestObjectSwiftKotlinSpec::getOptionalEnumPlusOne() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getOptionalEnumPlusOne"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getOptionalEnumPlusOne"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } void JHybridTestObjectSwiftKotlinSpec::setOptionalEnumPlusOne(const std::optional& optionalEnumPlusOne) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* optionalEnumPlusOne */)>("setOptionalEnumPlusOne"); - __method(_javaPart, optionalEnumPlusOne.has_value() ? JTruckPowertrain::fromCpp(optionalEnumPlusOne.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* optionalEnumPlusOne */)>("setOptionalEnumPlusOne"); + __method(_javaPart, CxxPart::getClass(), optionalEnumPlusOne.has_value() ? JTruckPowertrain::fromCpp(optionalEnumPlusOne.value()) : nullptr); } std::optional> JHybridTestObjectSwiftKotlinSpec::getOptionalCallback() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getOptionalCallback_cxx"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getOptionalCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional([&]() -> Callback { if (__result->isInstanceOf(JCallback_void_double_cxx::javaClassStatic())) [[likely]] { auto downcast = jni::static_ref_cast(__result); @@ -460,106 +466,106 @@ namespace margelo::nitro::test { }()) : std::nullopt; } void JHybridTestObjectSwiftKotlinSpec::setOptionalCallback(const std::optional>& optionalCallback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* optionalCallback */)>("setOptionalCallback_cxx"); - __method(_javaPart, optionalCallback.has_value() ? JCallback_void_double_cxx::fromCpp(optionalCallback.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* optionalCallback */)>("setOptionalCallback_cxx"); + __method(_javaPart, CxxPart::getClass(), optionalCallback.has_value() ? JCallback_void_double_cxx::fromCpp(optionalCallback.value()) : nullptr); } bool JHybridTestObjectSwiftKotlinSpec::getHasBoolean() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getHasBoolean"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getHasBoolean"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } bool JHybridTestObjectSwiftKotlinSpec::getIsBoolean() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("isBoolean"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("isBoolean"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } bool JHybridTestObjectSwiftKotlinSpec::getHasBooleanWritable() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getHasBooleanWritable"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getHasBooleanWritable"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridTestObjectSwiftKotlinSpec::setHasBooleanWritable(bool hasBooleanWritable) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setHasBooleanWritable"); - __method(_javaPart, hasBooleanWritable); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setHasBooleanWritable"); + __method(_javaPart, CxxPart::getClass(), hasBooleanWritable); } bool JHybridTestObjectSwiftKotlinSpec::getIsBooleanWritable() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("isBooleanWritable"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("isBooleanWritable"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridTestObjectSwiftKotlinSpec::setIsBooleanWritable(bool isBooleanWritable) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setBooleanWritable"); - __method(_javaPart, isBooleanWritable); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setBooleanWritable"); + __method(_javaPart, CxxPart::getClass(), isBooleanWritable); } bool JHybridTestObjectSwiftKotlinSpec::getIsolatedBoolean() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("getIsolatedBoolean"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("getIsolatedBoolean"); + auto __result = __method(_javaPart, CxxPart::getClass()); return static_cast(__result); } void JHybridTestObjectSwiftKotlinSpec::setIsolatedBoolean(bool isolatedBoolean) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("setIsolatedBoolean"); - __method(_javaPart, isolatedBoolean); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("setIsolatedBoolean"); + __method(_javaPart, CxxPart::getClass(), isolatedBoolean); } std::string JHybridTestObjectSwiftKotlinSpec::getIsTextValue() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("isTextValue"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("isTextValue"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toStdString(); } void JHybridTestObjectSwiftKotlinSpec::setIsTextValue(const std::string& isTextValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* isTextValue */)>("setTextValue"); - __method(_javaPart, jni::make_jstring(isTextValue)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* isTextValue */)>("setTextValue"); + __method(_javaPart, CxxPart::getClass(), jni::make_jstring(isTextValue)); } std::variant JHybridTestObjectSwiftKotlinSpec::getSomeVariant() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getSomeVariant"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getSomeVariant"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toCpp(); } void JHybridTestObjectSwiftKotlinSpec::setSomeVariant(const std::variant& someVariant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* someVariant */)>("setSomeVariant"); - __method(_javaPart, JVariant_Double_String::fromCpp(someVariant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* someVariant */)>("setSomeVariant"); + __method(_javaPart, CxxPart::getClass(), JVariant_Double_String::fromCpp(someVariant)); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::getThisObject() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getThisObject"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getThisObject"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridTestObjectSwiftKotlinSpec(); } std::optional> JHybridTestObjectSwiftKotlinSpec::getOptionalHybrid() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getOptionalHybrid"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getOptionalHybrid"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result != nullptr ? std::make_optional(__result->getJHybridTestObjectSwiftKotlinSpec()) : std::nullopt; } void JHybridTestObjectSwiftKotlinSpec::setOptionalHybrid(const std::optional>& optionalHybrid) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* optionalHybrid */)>("setOptionalHybrid"); - __method(_javaPart, optionalHybrid.has_value() ? optionalHybrid.value()->getJavaPart() : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* optionalHybrid */)>("setOptionalHybrid"); + __method(_javaPart, CxxPart::getClass(), optionalHybrid.has_value() ? optionalHybrid.value()->getJavaPart() : nullptr); } // Methods void JHybridTestObjectSwiftKotlinSpec::simpleFunc() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("simpleFunc"); - __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("simpleFunc"); + __method(_javaPart, CxxPart::getClass()); } double JHybridTestObjectSwiftKotlinSpec::addNumbers(double a, double b) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("addNumbers"); - auto __result = __method(_javaPart, a, b); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("addNumbers"); + auto __result = __method(_javaPart, CxxPart::getClass(), a, b); return __result; } std::string JHybridTestObjectSwiftKotlinSpec::addStrings(const std::string& a, const std::string& b) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* a */, jni::alias_ref /* b */)>("addStrings"); - auto __result = __method(_javaPart, jni::make_jstring(a), jni::make_jstring(b)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* a */, jni::alias_ref /* b */)>("addStrings"); + auto __result = __method(_javaPart, CxxPart::getClass(), jni::make_jstring(a), jni::make_jstring(b)); return __result->toStdString(); } void JHybridTestObjectSwiftKotlinSpec::multipleArguments(double num, const std::string& str, bool boo) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* str */, jboolean /* boo */)>("multipleArguments"); - __method(_javaPart, num, jni::make_jstring(str), boo); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* str */, jboolean /* boo */)>("multipleArguments"); + __method(_javaPart, CxxPart::getClass(), num, jni::make_jstring(str), boo); } nitro::NullType JHybridTestObjectSwiftKotlinSpec::bounceNull(nitro::NullType value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* value */)>("bounceNull"); - auto __result = __method(_javaPart, JNull::null()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* value */)>("bounceNull"); + auto __result = __method(_javaPart, CxxPart::getClass(), JNull::null()); return nitro::null; } std::vector JHybridTestObjectSwiftKotlinSpec::bounceStrings(const std::vector& array) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* array */)>("bounceStrings"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* array */)>("bounceStrings"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -581,8 +587,8 @@ namespace margelo::nitro::test { }(__result); } std::vector JHybridTestObjectSwiftKotlinSpec::bounceNumbers(const std::vector& array) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* array */)>("bounceNumbers"); - auto __result = __method(_javaPart, [&]() { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* array */)>("bounceNumbers"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&]() { size_t __size = array.size(); jni::local_ref __array = jni::JArrayDouble::newArray(__size); __array->setRegion(0, __size, array.data()); @@ -596,8 +602,8 @@ namespace margelo::nitro::test { }(); } std::vector JHybridTestObjectSwiftKotlinSpec::bounceStructs(const std::vector& array) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* array */)>("bounceStructs"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* array */)>("bounceStructs"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -619,8 +625,8 @@ namespace margelo::nitro::test { }(__result); } std::vector> JHybridTestObjectSwiftKotlinSpec::bounceNestedArray(const std::vector>& array) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>>(jni::alias_ref>> /* array */)>("bounceNestedArray"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>>(jni::alias_ref>> /* array */)>("bounceNestedArray"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref>> __array = jni::JArrayClass>::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -660,13 +666,13 @@ namespace margelo::nitro::test { }(__result); } PartialPersonKotlin JHybridTestObjectSwiftKotlinSpec::bouncePartialStruct(const PartialPersonKotlin& person) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* person */)>("bouncePartialStruct"); - auto __result = __method(_javaPart, JPartialPerson::fromCpp(person)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* person */)>("bouncePartialStruct"); + auto __result = __method(_javaPart, CxxPart::getClass(), JPartialPerson::fromCpp(person)); return __result->toCpp(); } std::string JHybridTestObjectSwiftKotlinSpec::sumUpAllPassengers(const std::vector& cars) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref> /* cars */)>("sumUpAllPassengers"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref> /* cars */)>("sumUpAllPassengers"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -679,8 +685,8 @@ namespace margelo::nitro::test { return __result->toStdString(); } std::vector JHybridTestObjectSwiftKotlinSpec::bounceEnums(const std::vector& array) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* array */)>("bounceEnums"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* array */)>("bounceEnums"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -702,8 +708,8 @@ namespace margelo::nitro::test { }(__result); } void JHybridTestObjectSwiftKotlinSpec::complexEnumCallback(const std::vector& array, const Callback& /* array */)>& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod> /* array */, jni::alias_ref /* callback */)>("complexEnumCallback_cxx"); - __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod> /* array */, jni::alias_ref /* callback */)>("complexEnumCallback_cxx"); + __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -715,8 +721,8 @@ namespace margelo::nitro::test { }(array), JCallback_void_std__vector_Powertrain__cxx::fromCpp(callback)); } std::vector JHybridTestObjectSwiftKotlinSpec::callEnumArrayCallback(const std::vector& array, const Callback(const std::vector& /* array */)>& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* array */, jni::alias_ref /* callback */)>("callEnumArrayCallback_cxx"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* array */, jni::alias_ref /* callback */)>("callEnumArrayCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -738,8 +744,8 @@ namespace margelo::nitro::test { }(__result); } Callback(const std::vector& /* array */)> JHybridTestObjectSwiftKotlinSpec::getEnumArrayCallback() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getEnumArrayCallback_cxx"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getEnumArrayCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() -> Callback(const std::vector& /* array */)> { if (__result->isInstanceOf(JCallback_std__vector_Powertrain__std__vector_Powertrain__cxx::javaClassStatic())) [[likely]] { auto downcast = jni::static_ref_cast(__result); @@ -751,8 +757,8 @@ namespace margelo::nitro::test { }(); } Promise> JHybridTestObjectSwiftKotlinSpec::callEnumArrayPromiseCallback(const Callback>()>& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* callback */)>("callEnumArrayPromiseCallback_cxx"); - auto __result = __method(_javaPart, JCallback_Promise_std__vector_Powertrain___cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* callback */)>("callEnumArrayPromiseCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_Promise_std__vector_Powertrain___cxx::fromCpp(callback)); return [&]() { auto __promise = Promise>::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -783,8 +789,8 @@ namespace margelo::nitro::test { }(); } Promise> JHybridTestObjectSwiftKotlinSpec::awaitEnumArrayPromise(const Promise>& promise) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* promise */)>("awaitEnumArrayPromise"); - auto __result = __method(_javaPart, [&]() { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* promise */)>("awaitEnumArrayPromise"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&]() { jni::local_ref __localPromise = JPromise::create(); auto __promise = JNISharedPtr::make_shared_from_jni(jni::make_global(__localPromise)); promise.addOnResolvedListener([=](const std::vector& __result) { @@ -845,8 +851,8 @@ namespace margelo::nitro::test { }(); } std::vector>> JHybridTestObjectSwiftKotlinSpec::callNestedStructCallback(const std::vector>>& value, const Callback>>(const std::vector>>& /* value */)>& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>>(jni::alias_ref>> /* value */, jni::alias_ref /* callback */)>("callNestedStructCallback_cxx"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>>(jni::alias_ref>> /* value */, jni::alias_ref /* callback */)>("callNestedStructCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref>> __array = jni::JArrayClass>::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -886,8 +892,8 @@ namespace margelo::nitro::test { }(__result); } std::vector> JHybridTestObjectSwiftKotlinSpec::bounceHybridObjects(const std::vector>& array) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* array */)>("bounceHybridObjects"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* array */)>("bounceHybridObjects"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -909,8 +915,8 @@ namespace margelo::nitro::test { }(__result); } std::vector> JHybridTestObjectSwiftKotlinSpec::bounceFunctions(const std::vector>& functions) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* functions */)>("bounceFunctions_cxx"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* functions */)>("bounceFunctions_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -940,8 +946,8 @@ namespace margelo::nitro::test { }(__result); } std::vector JHybridTestObjectSwiftKotlinSpec::bounceMaps(const std::vector& maps) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* maps */)>("bounceMaps"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* maps */)>("bounceMaps"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -963,8 +969,8 @@ namespace margelo::nitro::test { }(__result); } std::vector> JHybridTestObjectSwiftKotlinSpec::bouncePromises(const std::vector>& promises) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* promises */)>("bouncePromises"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* promises */)>("bouncePromises"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -1025,8 +1031,8 @@ namespace margelo::nitro::test { }(__result); } std::vector JHybridTestObjectSwiftKotlinSpec::bounceArrayBuffers(const std::vector& arrayBuffers) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* arrayBuffers */)>("bounceArrayBuffers"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* arrayBuffers */)>("bounceArrayBuffers"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -1048,8 +1054,8 @@ namespace margelo::nitro::test { }(__result); } std::vector> JHybridTestObjectSwiftKotlinSpec::bounceOptionals(const std::vector>& strings, const std::vector>& arrayBuffers) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* strings */, jni::alias_ref> /* arrayBuffers */)>("bounceOptionals"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* strings */, jni::alias_ref> /* arrayBuffers */)>("bounceOptionals"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -1080,8 +1086,8 @@ namespace margelo::nitro::test { }(__result); } std::vector> JHybridTestObjectSwiftKotlinSpec::bounceNulls(const std::vector>& strings) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* strings */)>("bounceNulls"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* strings */)>("bounceNulls"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -1103,8 +1109,8 @@ namespace margelo::nitro::test { }(__result); } std::vector>> JHybridTestObjectSwiftKotlinSpec::bounceOptionalNulls(const std::vector>>& strings) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* strings */)>("bounceOptionalNulls"); - auto __result = __method(_javaPart, [&](auto&& __input) { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* strings */)>("bounceOptionalNulls"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](auto&& __input) { size_t __size = __input.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { @@ -1126,18 +1132,18 @@ namespace margelo::nitro::test { }(__result); } AnyJSON JHybridTestObjectSwiftKotlinSpec::createMap() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createMap"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createMap"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toCpp(); } AnyJSON JHybridTestObjectSwiftKotlinSpec::mapRoundtrip(const AnyJSON& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* map */)>("mapRoundtrip"); - auto __result = __method(_javaPart, JAnyJSON::create(map)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* map */)>("mapRoundtrip"); + auto __result = __method(_javaPart, CxxPart::getClass(), JAnyJSON::create(map)); return __result->toCpp(); } std::vector JHybridTestObjectSwiftKotlinSpec::getMapKeys(const AnyJSON& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref /* map */)>("getMapKeys"); - auto __result = __method(_javaPart, JAnyJSON::create(map)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref /* map */)>("getMapKeys"); + auto __result = __method(_javaPart, CxxPart::getClass(), JAnyJSON::create(map)); return [&](auto&& __input) { size_t __size = __input->size(); std::vector __vector; @@ -1150,18 +1156,18 @@ namespace margelo::nitro::test { }(__result); } AnyJSON JHybridTestObjectSwiftKotlinSpec::mergeMaps(const AnyJSON& a, const AnyJSON& b) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* a */, jni::alias_ref /* b */)>("mergeMaps"); - auto __result = __method(_javaPart, JAnyJSON::create(a), JAnyJSON::create(b)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* a */, jni::alias_ref /* b */)>("mergeMaps"); + auto __result = __method(_javaPart, CxxPart::getClass(), JAnyJSON::create(a), JAnyJSON::create(b)); return __result->toCpp(); } AnyJSON JHybridTestObjectSwiftKotlinSpec::copyAnyMap(const AnyJSON& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* map */)>("copyAnyMap"); - auto __result = __method(_javaPart, JAnyJSON::create(map)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* map */)>("copyAnyMap"); + auto __result = __method(_javaPart, CxxPart::getClass(), JAnyJSON::create(map)); return __result->toCpp(); } std::unordered_map> JHybridTestObjectSwiftKotlinSpec::bounceMap(const std::unordered_map>& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* map */)>("bounceMap"); - auto __result = __method(_javaPart, [&](const auto& __input) -> jni::local_ref> { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* map */)>("bounceMap"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](const auto& __input) -> jni::local_ref> { auto __map = jni::JHashMap::create(__input.size()); for (const auto& __entry : __input) { __map->put(jni::make_jstring(__entry.first), JVariant_Boolean_Double::fromCpp(__entry.second)); @@ -1178,8 +1184,8 @@ namespace margelo::nitro::test { }(__result); } std::unordered_map JHybridTestObjectSwiftKotlinSpec::bounceSimpleMap(const std::unordered_map& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* map */)>("bounceSimpleMap"); - auto __result = __method(_javaPart, [&](const auto& __input) -> jni::local_ref> { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* map */)>("bounceSimpleMap"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](const auto& __input) -> jni::local_ref> { auto __map = jni::JHashMap::create(__input.size()); for (const auto& __entry : __input) { __map->put(jni::make_jstring(__entry.first), jni::JDouble::valueOf(__entry.second)); @@ -1196,8 +1202,8 @@ namespace margelo::nitro::test { }(__result); } std::unordered_map> JHybridTestObjectSwiftKotlinSpec::bounceOptionalMap(const std::unordered_map>& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* map */)>("bounceOptionalMap"); - auto __result = __method(_javaPart, [&](const auto& __input) -> jni::local_ref> { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* map */)>("bounceOptionalMap"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](const auto& __input) -> jni::local_ref> { auto __map = jni::JHashMap::create(__input.size()); for (const auto& __entry : __input) { __map->put(jni::make_jstring(__entry.first), __entry.second.has_value() ? jni::make_jstring(__entry.second.value()) : nullptr); @@ -1214,8 +1220,8 @@ namespace margelo::nitro::test { }(__result); } std::unordered_map> JHybridTestObjectSwiftKotlinSpec::bounceNullMap(const std::unordered_map>& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* map */)>("bounceNullMap"); - auto __result = __method(_javaPart, [&](const auto& __input) -> jni::local_ref> { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* map */)>("bounceNullMap"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](const auto& __input) -> jni::local_ref> { auto __map = jni::JHashMap::create(__input.size()); for (const auto& __entry : __input) { __map->put(jni::make_jstring(__entry.first), JVariant_NullType_String::fromCpp(__entry.second)); @@ -1232,8 +1238,8 @@ namespace margelo::nitro::test { }(__result); } std::unordered_map>> JHybridTestObjectSwiftKotlinSpec::bounceOptionalNullMap(const std::unordered_map>>& map) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref> /* map */)>("bounceOptionalNullMap"); - auto __result = __method(_javaPart, [&](const auto& __input) -> jni::local_ref> { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref> /* map */)>("bounceOptionalNullMap"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&](const auto& __input) -> jni::local_ref> { auto __map = jni::JHashMap::create(__input.size()); for (const auto& __entry : __input) { __map->put(jni::make_jstring(__entry.first), __entry.second.has_value() ? JVariant_NullType_String::fromCpp(__entry.second.value()) : nullptr); @@ -1250,8 +1256,8 @@ namespace margelo::nitro::test { }(__result); } std::unordered_map JHybridTestObjectSwiftKotlinSpec::extractMap(const MapWrapperKotlin& mapWrapper) { - static const auto __method = _javaPart->javaClassStatic()->getMethod>(jni::alias_ref /* mapWrapper */)>("extractMap"); - auto __result = __method(_javaPart, JMapWrapper::fromCpp(mapWrapper)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod>(jni::alias_ref /* mapWrapper */)>("extractMap"); + auto __result = __method(_javaPart, CxxPart::getClass(), JMapWrapper::fromCpp(mapWrapper)); return [&](const auto& __input) { std::unordered_map __map; __map.reserve(__input->size()); @@ -1262,13 +1268,13 @@ namespace margelo::nitro::test { }(__result); } double JHybridTestObjectSwiftKotlinSpec::funcThatThrows() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("funcThatThrows"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("funcThatThrows"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result; } Promise JHybridTestObjectSwiftKotlinSpec::funcThatThrowsBeforePromise() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("funcThatThrowsBeforePromise"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("funcThatThrowsBeforePromise"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& /* unit */) { @@ -1282,37 +1288,37 @@ namespace margelo::nitro::test { }(); } void JHybridTestObjectSwiftKotlinSpec::throwError(const std::exception_ptr& error) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* error */)>("throwError"); - __method(_javaPart, jni::getJavaExceptionForCppException(error)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* error */)>("throwError"); + __method(_javaPart, CxxPart::getClass(), jni::getJavaExceptionForCppException(error)); } std::string JHybridTestObjectSwiftKotlinSpec::tryOptionalParams(double num, bool boo, const std::optional& str) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(double /* num */, jboolean /* boo */, jni::alias_ref /* str */)>("tryOptionalParams"); - auto __result = __method(_javaPart, num, boo, str.has_value() ? jni::make_jstring(str.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(double /* num */, jboolean /* boo */, jni::alias_ref /* str */)>("tryOptionalParams"); + auto __result = __method(_javaPart, CxxPart::getClass(), num, boo, str.has_value() ? jni::make_jstring(str.value()) : nullptr); return __result->toStdString(); } std::string JHybridTestObjectSwiftKotlinSpec::tryMiddleParam(double num, const std::optional& boo, const std::string& str) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(double /* num */, jni::alias_ref /* boo */, jni::alias_ref /* str */)>("tryMiddleParam"); - auto __result = __method(_javaPart, num, boo.has_value() ? jni::JBoolean::valueOf(boo.value()) : nullptr, jni::make_jstring(str)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(double /* num */, jni::alias_ref /* boo */, jni::alias_ref /* str */)>("tryMiddleParam"); + auto __result = __method(_javaPart, CxxPart::getClass(), num, boo.has_value() ? jni::JBoolean::valueOf(boo.value()) : nullptr, jni::make_jstring(str)); return __result->toStdString(); } std::optional JHybridTestObjectSwiftKotlinSpec::tryOptionalEnum(const std::optional& value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* value */)>("tryOptionalEnum"); - auto __result = __method(_javaPart, value.has_value() ? JPowertrain::fromCpp(value.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* value */)>("tryOptionalEnum"); + auto __result = __method(_javaPart, CxxPart::getClass(), value.has_value() ? JPowertrain::fromCpp(value.value()) : nullptr); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } bool JHybridTestObjectSwiftKotlinSpec::tryTrailingOptional(double num, const std::string& str, const std::optional& boo) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* str */, jni::alias_ref /* boo */)>("tryTrailingOptional"); - auto __result = __method(_javaPart, num, jni::make_jstring(str), boo.has_value() ? jni::JBoolean::valueOf(boo.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* str */, jni::alias_ref /* boo */)>("tryTrailingOptional"); + auto __result = __method(_javaPart, CxxPart::getClass(), num, jni::make_jstring(str), boo.has_value() ? jni::JBoolean::valueOf(boo.value()) : nullptr); return static_cast(__result); } int64_t JHybridTestObjectSwiftKotlinSpec::calculateFibonacciSync(double value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod("calculateFibonacciSync"); - auto __result = __method(_javaPart, value); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("calculateFibonacciSync"); + auto __result = __method(_javaPart, CxxPart::getClass(), value); return __result; } Promise JHybridTestObjectSwiftKotlinSpec::calculateFibonacciAsync(double value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(double /* value */)>("calculateFibonacciAsync"); - auto __result = __method(_javaPart, value); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(double /* value */)>("calculateFibonacciAsync"); + auto __result = __method(_javaPart, CxxPart::getClass(), value); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1334,8 +1340,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::wait(double seconds) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(double /* seconds */)>("wait"); - auto __result = __method(_javaPart, seconds); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(double /* seconds */)>("wait"); + auto __result = __method(_javaPart, CxxPart::getClass(), seconds); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& /* unit */) { @@ -1349,8 +1355,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::promiseThrows() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("promiseThrows"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("promiseThrows"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& /* unit */) { @@ -1364,8 +1370,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::promiseReturnsInstantly() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("promiseReturnsInstantly"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("promiseReturnsInstantly"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1387,8 +1393,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::promiseReturnsInstantlyAsync() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("promiseReturnsInstantlyAsync"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("promiseReturnsInstantlyAsync"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1410,8 +1416,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::createPendingPromise() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createPendingPromise"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createPendingPromise"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1433,12 +1439,12 @@ namespace margelo::nitro::test { }(); } void JHybridTestObjectSwiftKotlinSpec::resolvePendingPromiseOnWorker() { - static const auto __method = _javaPart->javaClassStatic()->getMethod("resolvePendingPromiseOnWorker"); - __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod("resolvePendingPromiseOnWorker"); + __method(_javaPart, CxxPart::getClass()); } Promise JHybridTestObjectSwiftKotlinSpec::promiseThatResolvesVoidInstantly() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("promiseThatResolvesVoidInstantly"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("promiseThatResolvesVoidInstantly"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& /* unit */) { @@ -1452,8 +1458,8 @@ namespace margelo::nitro::test { }(); } Promise> JHybridTestObjectSwiftKotlinSpec::promiseThatResolvesToUndefined() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("promiseThatResolvesToUndefined"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("promiseThatResolvesToUndefined"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise>::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1475,8 +1481,8 @@ namespace margelo::nitro::test { }(); } Promise> JHybridTestObjectSwiftKotlinSpec::awaitNullablePromise() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("awaitNullablePromise"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("awaitNullablePromise"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise>::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1498,8 +1504,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::awaitAndGetPromise(const Promise& promise) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* promise */)>("awaitAndGetPromise"); - auto __result = __method(_javaPart, [&]() { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* promise */)>("awaitAndGetPromise"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&]() { jni::local_ref __localPromise = JPromise::create(); auto __promise = JNISharedPtr::make_shared_from_jni(jni::make_global(__localPromise)); promise.addOnResolvedListener([=](const double& __result) { @@ -1542,8 +1548,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::awaitAndGetComplexPromise(const Promise& promise) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* promise */)>("awaitAndGetComplexPromise"); - auto __result = __method(_javaPart, [&]() { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* promise */)>("awaitAndGetComplexPromise"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&]() { jni::local_ref __localPromise = JPromise::create(); auto __promise = JNISharedPtr::make_shared_from_jni(jni::make_global(__localPromise)); promise.addOnResolvedListener([=](const CarKotlin& __result) { @@ -1586,8 +1592,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::awaitPromise(const Promise& promise) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* promise */)>("awaitPromise"); - auto __result = __method(_javaPart, [&]() { + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* promise */)>("awaitPromise"); + auto __result = __method(_javaPart, CxxPart::getClass(), [&]() { jni::local_ref __localPromise = JPromise::create(); auto __promise = JNISharedPtr::make_shared_from_jni(jni::make_global(__localPromise)); promise.addOnResolvedListener([=]() { @@ -1615,21 +1621,21 @@ namespace margelo::nitro::test { }(); } void JHybridTestObjectSwiftKotlinSpec::callCallback(const Callback& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* callback */)>("callCallback_cxx"); - __method(_javaPart, JCallback_void_cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* callback */)>("callCallback_cxx"); + __method(_javaPart, CxxPart::getClass(), JCallback_void_cxx::fromCpp(callback)); } void JHybridTestObjectSwiftKotlinSpec::callInlineCallback(const InlineCallback& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* callback */)>("callInlineCallback_cxx"); - __method(_javaPart, JCallback_void_cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* callback */)>("callInlineCallback_cxx"); + __method(_javaPart, CxxPart::getClass(), JCallback_void_cxx::fromCpp(callback)); } double JHybridTestObjectSwiftKotlinSpec::callInlineCallbackWithValue(double value, const InlineCallback& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* callback */)>("callInlineCallbackWithValue_cxx"); - auto __result = __method(_javaPart, value, JCallback_double_double_cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* callback */)>("callInlineCallbackWithValue_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), value, JCallback_double_double_cxx::fromCpp(callback)); return __result; } Promise JHybridTestObjectSwiftKotlinSpec::callCallbackThatReturnsPromiseVoid(const Callback()>& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* callback */)>("callCallbackThatReturnsPromiseVoid_cxx"); - auto __result = __method(_javaPart, JCallback_Promise_void__cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* callback */)>("callCallbackThatReturnsPromiseVoid_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_Promise_void__cxx::fromCpp(callback)); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& /* unit */) { @@ -1643,16 +1649,16 @@ namespace margelo::nitro::test { }(); } void JHybridTestObjectSwiftKotlinSpec::callAll(const Callback& first, const Callback& second, const Callback& third) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* first */, jni::alias_ref /* second */, jni::alias_ref /* third */)>("callAll_cxx"); - __method(_javaPart, JCallback_void_cxx::fromCpp(first), JCallback_void_cxx::fromCpp(second), JCallback_void_cxx::fromCpp(third)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* first */, jni::alias_ref /* second */, jni::alias_ref /* third */)>("callAll_cxx"); + __method(_javaPart, CxxPart::getClass(), JCallback_void_cxx::fromCpp(first), JCallback_void_cxx::fromCpp(second), JCallback_void_cxx::fromCpp(third)); } void JHybridTestObjectSwiftKotlinSpec::callWithOptional(const std::optional& value, const Callback& /* maybe */)>& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* value */, jni::alias_ref /* callback */)>("callWithOptional_cxx"); - __method(_javaPart, value.has_value() ? jni::JDouble::valueOf(value.value()) : nullptr, JCallback_void_std__optional_double__cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* value */, jni::alias_ref /* callback */)>("callWithOptional_cxx"); + __method(_javaPart, CxxPart::getClass(), value.has_value() ? jni::JDouble::valueOf(value.value()) : nullptr, JCallback_void_std__optional_double__cxx::fromCpp(callback)); } Promise JHybridTestObjectSwiftKotlinSpec::callSumUpNTimes(const Callback& callback, double n) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* callback */, double /* n */)>("callSumUpNTimes_cxx"); - auto __result = __method(_javaPart, JCallback_double_cxx::fromCpp(callback), n); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* callback */, double /* n */)>("callSumUpNTimes_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_double_cxx::fromCpp(callback), n); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1674,8 +1680,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::callbackAsyncPromise(const Callback()>& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* callback */)>("callbackAsyncPromise_cxx"); - auto __result = __method(_javaPart, JCallback_Promise_double__cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* callback */)>("callbackAsyncPromise_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_Promise_double__cxx::fromCpp(callback)); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1697,8 +1703,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::callbackAsyncPromiseBuffer(const Callback()>& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* callback */)>("callbackAsyncPromiseBuffer_cxx"); - auto __result = __method(_javaPart, JCallback_Promise_ArrayBuffer__cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* callback */)>("callbackAsyncPromiseBuffer_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_Promise_ArrayBuffer__cxx::fromCpp(callback)); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1720,8 +1726,8 @@ namespace margelo::nitro::test { }(); } Callback JHybridTestObjectSwiftKotlinSpec::getComplexCallback() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getComplexCallback_cxx"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getComplexCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() -> Callback { if (__result->isInstanceOf(JCallback_void_double_cxx::javaClassStatic())) [[likely]] { auto downcast = jni::static_ref_cast(__result); @@ -1733,16 +1739,16 @@ namespace margelo::nitro::test { }(); } void JHybridTestObjectSwiftKotlinSpec::twoOptionalCallbacks(double value, const std::optional>& first, const std::optional>& second) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* first */, jni::alias_ref /* second */)>("twoOptionalCallbacks_cxx"); - __method(_javaPart, value, first.has_value() ? JCallback_void_double_cxx::fromCpp(first.value()) : nullptr, second.has_value() ? JCallback_void_std__string_cxx::fromCpp(second.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* first */, jni::alias_ref /* second */)>("twoOptionalCallbacks_cxx"); + __method(_javaPart, CxxPart::getClass(), value, first.has_value() ? JCallback_void_double_cxx::fromCpp(first.value()) : nullptr, second.has_value() ? JCallback_void_std__string_cxx::fromCpp(second.value()) : nullptr); } void JHybridTestObjectSwiftKotlinSpec::errorCallback(const Callback& onError) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* onError */)>("errorCallback_cxx"); - __method(_javaPart, JCallback_void_std__exception_ptr_cxx::fromCpp(onError)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* onError */)>("errorCallback_cxx"); + __method(_javaPart, CxxPart::getClass(), JCallback_void_std__exception_ptr_cxx::fromCpp(onError)); } Callback JHybridTestObjectSwiftKotlinSpec::createNativeCallback(const Callback& wrappingJsCallback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* wrappingJsCallback */)>("createNativeCallback_cxx"); - auto __result = __method(_javaPart, JCallback_void_double_cxx::fromCpp(wrappingJsCallback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* wrappingJsCallback */)>("createNativeCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_void_double_cxx::fromCpp(wrappingJsCallback)); return [&]() -> Callback { if (__result->isInstanceOf(JCallback_void_double_cxx::javaClassStatic())) [[likely]] { auto downcast = jni::static_ref_cast(__result); @@ -1754,8 +1760,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::getValueFromJSCallbackAndWait(const Callback& getValue) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* getValue */)>("getValueFromJSCallbackAndWait_cxx"); - auto __result = __method(_javaPart, JCallback_double_cxx::fromCpp(getValue)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* getValue */)>("getValueFromJSCallbackAndWait_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_double_cxx::fromCpp(getValue)); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1777,8 +1783,8 @@ namespace margelo::nitro::test { }(); } Promise JHybridTestObjectSwiftKotlinSpec::getValueFromJsCallback(const Callback& callback, const Callback& andThenCall) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* callback */, jni::alias_ref /* andThenCall */)>("getValueFromJsCallback_cxx"); - auto __result = __method(_javaPart, JCallback_std__string_cxx::fromCpp(callback), JCallback_void_std__string_cxx::fromCpp(andThenCall)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* callback */, jni::alias_ref /* andThenCall */)>("getValueFromJsCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_std__string_cxx::fromCpp(callback), JCallback_void_std__string_cxx::fromCpp(andThenCall)); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& /* unit */) { @@ -1792,86 +1798,86 @@ namespace margelo::nitro::test { }(); } CarKotlin JHybridTestObjectSwiftKotlinSpec::getCar() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getCar"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getCar"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->toCpp(); } bool JHybridTestObjectSwiftKotlinSpec::isCarElectric(const CarKotlin& car) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* car */)>("isCarElectric"); - auto __result = __method(_javaPart, JCar::fromCpp(car)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* car */)>("isCarElectric"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCar::fromCpp(car)); return static_cast(__result); } bool JHybridTestObjectSwiftKotlinSpec::areCarsEqual(const CarKotlin& a, const CarKotlin& b) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* a */, jni::alias_ref /* b */)>("areCarsEqual"); - auto __result = __method(_javaPart, JCar::fromCpp(a), JCar::fromCpp(b)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* a */, jni::alias_ref /* b */)>("areCarsEqual"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCar::fromCpp(a), JCar::fromCpp(b)); return static_cast(__result); } std::optional JHybridTestObjectSwiftKotlinSpec::getDriver(const CarKotlin& car) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* car */)>("getDriver"); - auto __result = __method(_javaPart, JCar::fromCpp(car)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* car */)>("getDriver"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCar::fromCpp(car)); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } CarKotlin JHybridTestObjectSwiftKotlinSpec::bounceCar(const CarKotlin& car) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* car */)>("bounceCar"); - auto __result = __method(_javaPart, JCar::fromCpp(car)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* car */)>("bounceCar"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCar::fromCpp(car)); return __result->toCpp(); } void JHybridTestObjectSwiftKotlinSpec::jsStyleObjectAsParameters(const JsStyleStructKotlin& params) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* params */)>("jsStyleObjectAsParameters"); - __method(_javaPart, JJsStyleStruct::fromCpp(params)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* params */)>("jsStyleObjectAsParameters"); + __method(_javaPart, CxxPart::getClass(), JJsStyleStruct::fromCpp(params)); } WrappedJsStructKotlin JHybridTestObjectSwiftKotlinSpec::bounceWrappedJsStyleStruct(const WrappedJsStructKotlin& value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* value */)>("bounceWrappedJsStyleStruct"); - auto __result = __method(_javaPart, JWrappedJsStruct::fromCpp(value)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* value */)>("bounceWrappedJsStyleStruct"); + auto __result = __method(_javaPart, CxxPart::getClass(), JWrappedJsStruct::fromCpp(value)); return __result->toCpp(); } OptionalWrapperKotlin JHybridTestObjectSwiftKotlinSpec::bounceOptionalWrapper(const OptionalWrapperKotlin& wrapper) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* wrapper */)>("bounceOptionalWrapper"); - auto __result = __method(_javaPart, JOptionalWrapper::fromCpp(wrapper)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* wrapper */)>("bounceOptionalWrapper"); + auto __result = __method(_javaPart, CxxPart::getClass(), JOptionalWrapper::fromCpp(wrapper)); return __result->toCpp(); } OptionalCallbackKotlin JHybridTestObjectSwiftKotlinSpec::bounceOptionalCallback(const OptionalCallbackKotlin& value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* value */)>("bounceOptionalCallback"); - auto __result = __method(_javaPart, JOptionalCallback::fromCpp(value)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* value */)>("bounceOptionalCallback"); + auto __result = __method(_javaPart, CxxPart::getClass(), JOptionalCallback::fromCpp(value)); return __result->toCpp(); } std::optional JHybridTestObjectSwiftKotlinSpec::bounceOptionalEnumStruct(const std::optional& value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* value */)>("bounceOptionalEnumStruct"); - auto __result = __method(_javaPart, value.has_value() ? JOptionalEnumWrapper::fromCpp(value.value()) : nullptr); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* value */)>("bounceOptionalEnumStruct"); + auto __result = __method(_javaPart, CxxPart::getClass(), value.has_value() ? JOptionalEnumWrapper::fromCpp(value.value()) : nullptr); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } ArrayBuffer JHybridTestObjectSwiftKotlinSpec::createArrayBuffer() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createArrayBuffer"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createArrayBuffer"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->cthis()->getArrayBuffer(); } ArrayBuffer JHybridTestObjectSwiftKotlinSpec::createArrayBufferFromNativeBuffer(bool copy) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jboolean /* copy */)>("createArrayBufferFromNativeBuffer"); - auto __result = __method(_javaPart, copy); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jboolean /* copy */)>("createArrayBufferFromNativeBuffer"); + auto __result = __method(_javaPart, CxxPart::getClass(), copy); return __result->cthis()->getArrayBuffer(); } ArrayBuffer JHybridTestObjectSwiftKotlinSpec::createHardwareBuffer(double width, double height, double layers, HardwareBufferFormat format) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(double /* width */, double /* height */, double /* layers */, jni::alias_ref /* format */)>("createHardwareBuffer"); - auto __result = __method(_javaPart, width, height, layers, JHardwareBufferFormat::fromCpp(format)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(double /* width */, double /* height */, double /* layers */, jni::alias_ref /* format */)>("createHardwareBuffer"); + auto __result = __method(_javaPart, CxxPart::getClass(), width, height, layers, JHardwareBufferFormat::fromCpp(format)); return __result->cthis()->getArrayBuffer(); } ArrayBuffer JHybridTestObjectSwiftKotlinSpec::copyBuffer(const ArrayBuffer& buffer) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* buffer */)>("copyBuffer"); - auto __result = __method(_javaPart, JArrayBuffer::wrap(buffer)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* buffer */)>("copyBuffer"); + auto __result = __method(_javaPart, CxxPart::getClass(), JArrayBuffer::wrap(buffer)); return __result->cthis()->getArrayBuffer(); } double JHybridTestObjectSwiftKotlinSpec::getBufferLastItem(const ArrayBuffer& buffer) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* buffer */)>("getBufferLastItem"); - auto __result = __method(_javaPart, JArrayBuffer::wrap(buffer)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* buffer */)>("getBufferLastItem"); + auto __result = __method(_javaPart, CxxPart::getClass(), JArrayBuffer::wrap(buffer)); return __result; } void JHybridTestObjectSwiftKotlinSpec::setAllValuesTo(const ArrayBuffer& buffer, double value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* buffer */, double /* value */)>("setAllValuesTo"); - __method(_javaPart, JArrayBuffer::wrap(buffer), value); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* buffer */, double /* value */)>("setAllValuesTo"); + __method(_javaPart, CxxPart::getClass(), JArrayBuffer::wrap(buffer), value); } Promise JHybridTestObjectSwiftKotlinSpec::createArrayBufferAsync() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createArrayBufferAsync"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createArrayBufferAsync"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -1893,113 +1899,113 @@ namespace margelo::nitro::test { }(); } ArrayBuffer JHybridTestObjectSwiftKotlinSpec::bounceArrayBuffer(const ArrayBuffer& buffer) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* buffer */)>("bounceArrayBuffer"); - auto __result = __method(_javaPart, JArrayBuffer::wrap(buffer)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* buffer */)>("bounceArrayBuffer"); + auto __result = __method(_javaPart, CxxPart::getClass(), JArrayBuffer::wrap(buffer)); return __result->cthis()->getArrayBuffer(); } std::variant JHybridTestObjectSwiftKotlinSpec::passVariant(const std::variant, std::vector, double, std::string>& either) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* either */)>("passVariant"); - auto __result = __method(_javaPart, JVariant_Boolean_DoubleArray_Array_String__Double_String::fromCpp(either)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* either */)>("passVariant"); + auto __result = __method(_javaPart, CxxPart::getClass(), JVariant_Boolean_DoubleArray_Array_String__Double_String::fromCpp(either)); return __result->toCpp(); } std::variant JHybridTestObjectSwiftKotlinSpec::getVariantEnum(const std::variant& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("getVariantEnum"); - auto __result = __method(_javaPart, JVariant_OldEnum_Boolean::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("getVariantEnum"); + auto __result = __method(_javaPart, CxxPart::getClass(), JVariant_OldEnum_Boolean::fromCpp(variant)); return __result->toCpp(); } std::variant JHybridTestObjectSwiftKotlinSpec::bounceVariantUnionEnum(const std::variant& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("bounceVariantUnionEnum"); - auto __result = __method(_javaPart, JVariant_Powertrain_Car::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("bounceVariantUnionEnum"); + auto __result = __method(_javaPart, CxxPart::getClass(), JVariant_Powertrain_Car::fromCpp(variant)); return __result->toCpp(); } std::variant JHybridTestObjectSwiftKotlinSpec::getVariantWeirdNumbersEnum(const std::variant& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("getVariantWeirdNumbersEnum"); - auto __result = __method(_javaPart, JVariant_WeirdNumbersEnum_Boolean::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("getVariantWeirdNumbersEnum"); + auto __result = __method(_javaPart, CxxPart::getClass(), JVariant_WeirdNumbersEnum_Boolean::fromCpp(variant)); return __result->toCpp(); } std::variant JHybridTestObjectSwiftKotlinSpec::getVariantObjects(const std::variant& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("getVariantObjects"); - auto __result = __method(_javaPart, JVariant_Person_Car::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("getVariantObjects"); + auto __result = __method(_javaPart, CxxPart::getClass(), JVariant_Person_Car::fromCpp(variant)); return __result->toCpp(); } std::variant JHybridTestObjectSwiftKotlinSpec::passNamedVariant(const std::variant& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("passNamedVariant"); - auto __result = __method(_javaPart, JNamedVariant::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("passNamedVariant"); + auto __result = __method(_javaPart, CxxPart::getClass(), JNamedVariant::fromCpp(variant)); return __result->toCpp(); } std::variant, OptionalWrapperKotlin> JHybridTestObjectSwiftKotlinSpec::passAllEmptyObjectVariant(const std::variant, OptionalWrapperKotlin>& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("passAllEmptyObjectVariant"); - auto __result = __method(_javaPart, JVariant_HybridBaseSpec_OptionalWrapper::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("passAllEmptyObjectVariant"); + auto __result = __method(_javaPart, CxxPart::getClass(), JVariant_HybridBaseSpec_OptionalWrapper::fromCpp(variant)); return __result->toCpp(); } std::variant, WrappedJsStructKotlin, Promise, AnyJSON> JHybridTestObjectSwiftKotlinSpec::bounceComplexVariant(const std::variant, WrappedJsStructKotlin, Promise, AnyJSON>& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("bounceComplexVariant"); - auto __result = __method(_javaPart, JCoreTypesVariant::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("bounceComplexVariant"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCoreTypesVariant::fromCpp(variant)); return __result->toCpp(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::createChild() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createChild"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createChild"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridChildSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::createBase() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createBase"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createBase"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridBaseSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::createBaseActualChild() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createBaseActualChild"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createBaseActualChild"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridBaseSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::createGrandchild() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createGrandchild"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createGrandchild"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridGrandchildSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::createChildActualGrandchild() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createChildActualGrandchild"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createChildActualGrandchild"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridChildSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::createBaseActualGrandchild() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createBaseActualGrandchild"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createBaseActualGrandchild"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridBaseSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::bounceGrandchild(const std::shared_ptr& grandchild) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* grandchild */)>("bounceGrandchild"); - auto __result = __method(_javaPart, grandchild->getJavaPart()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* grandchild */)>("bounceGrandchild"); + auto __result = __method(_javaPart, CxxPart::getClass(), grandchild->getJavaPart()); return __result->getJHybridGrandchildSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::bounceChild(const std::shared_ptr& child) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* child */)>("bounceChild"); - auto __result = __method(_javaPart, child->getJavaPart()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* child */)>("bounceChild"); + auto __result = __method(_javaPart, CxxPart::getClass(), child->getJavaPart()); return __result->getJHybridChildSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::bounceBase(const std::shared_ptr& base) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* base */)>("bounceBase"); - auto __result = __method(_javaPart, base->getJavaPart()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* base */)>("bounceBase"); + auto __result = __method(_javaPart, CxxPart::getClass(), base->getJavaPart()); return __result->getJHybridBaseSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::bounceChildBase(const std::shared_ptr& child) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* child */)>("bounceChildBase"); - auto __result = __method(_javaPart, child->getJavaPart()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* child */)>("bounceChildBase"); + auto __result = __method(_javaPart, CxxPart::getClass(), child->getJavaPart()); return __result->getJHybridBaseSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::castBase(const std::shared_ptr& base) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* base */)>("castBase"); - auto __result = __method(_javaPart, base->getJavaPart()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* base */)>("castBase"); + auto __result = __method(_javaPart, CxxPart::getClass(), base->getJavaPart()); return __result->getJHybridChildSpec(); } double JHybridTestObjectSwiftKotlinSpec::callbackSync(const Callback& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod /* callback */)>("callbackSync_cxx"); - auto __result = __method(_javaPart, JCallback_double_cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod /* callback */)>("callbackSync_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_double_cxx::fromCpp(callback)); return __result; } Callback JHybridTestObjectSwiftKotlinSpec::getSyncNumberCallback() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("getSyncNumberCallback_cxx"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("getSyncNumberCallback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() -> Callback { if (__result->isInstanceOf(JCallback_double_cxx::javaClassStatic())) [[likely]] { auto downcast = jni::static_ref_cast(__result); @@ -2011,8 +2017,8 @@ namespace margelo::nitro::test { }(); } Callback JHybridTestObjectSwiftKotlinSpec::bounceSyncInt64Callback(const Callback& callback) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* callback */)>("bounceSyncInt64Callback_cxx"); - auto __result = __method(_javaPart, JCallback_int64_t_int64_t_cxx::fromCpp(callback)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* callback */)>("bounceSyncInt64Callback_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_int64_t_int64_t_cxx::fromCpp(callback)); return [&]() -> Callback { if (__result->isInstanceOf(JCallback_int64_t_int64_t_cxx::javaClassStatic())) [[likely]] { auto downcast = jni::static_ref_cast(__result); @@ -2024,43 +2030,43 @@ namespace margelo::nitro::test { }(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::bounceExternalHybrid(const std::shared_ptr& externalObject) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* externalObject */)>("bounceExternalHybrid"); - auto __result = __method(_javaPart, externalObject->getJavaPart()); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* externalObject */)>("bounceExternalHybrid"); + auto __result = __method(_javaPart, CxxPart::getClass(), externalObject->getJavaPart()); return __result->getJHybridSomeExternalObjectSpec(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::createInternalObject() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("createInternalObject"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("createInternalObject"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridSomeExternalObjectSpec(); } ExternalObjectStructKotlin JHybridTestObjectSwiftKotlinSpec::bounceExternalStruct(const ExternalObjectStructKotlin& externalStruct) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* externalStruct */)>("bounceExternalStruct"); - auto __result = __method(_javaPart, JExternalObjectStruct::fromCpp(externalStruct)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* externalStruct */)>("bounceExternalStruct"); + auto __result = __method(_javaPart, CxxPart::getClass(), JExternalObjectStruct::fromCpp(externalStruct)); return __result->toCpp(); } std::variant, std::string> JHybridTestObjectSwiftKotlinSpec::bounceExternalVariant(const std::variant, std::string>& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("bounceExternalVariant"); - auto __result = __method(_javaPart, JStringOrExternal::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("bounceExternalVariant"); + auto __result = __method(_javaPart, CxxPart::getClass(), JStringOrExternal::fromCpp(variant)); return __result->toCpp(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::createExternalVariantFromFunc(const Callback()>& factory) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* factory */)>("createExternalVariantFromFunc_cxx"); - auto __result = __method(_javaPart, JCallback_std__shared_ptr_margelo__nitro__test__external__JHybridSomeExternalObjectSpec__cxx::fromCpp(factory)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* factory */)>("createExternalVariantFromFunc_cxx"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCallback_std__shared_ptr_margelo__nitro__test__external__JHybridSomeExternalObjectSpec__cxx::fromCpp(factory)); return __result->getJHybridSomeExternalObjectSpec(); } CppOnlyValueKotlin JHybridTestObjectSwiftKotlinSpec::bounceCppOnlyValue(const CppOnlyValueKotlin& value) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* value */)>("bounceCppOnlyValue"); - auto __result = __method(_javaPart, JCppOnlyValue::fromCpp(value)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* value */)>("bounceCppOnlyValue"); + auto __result = __method(_javaPart, CxxPart::getClass(), JCppOnlyValue::fromCpp(value)); return __result->toCpp(); } std::shared_ptr JHybridTestObjectSwiftKotlinSpec::newTestObject() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("newTestObject"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("newTestObject"); + auto __result = __method(_javaPart, CxxPart::getClass()); return __result->getJHybridTestObjectSwiftKotlinSpec(); } Promise> JHybridTestObjectSwiftKotlinSpec::newTestObjectAsync() { - static const auto __method = _javaPart->javaClassStatic()->getMethod()>("newTestObjectAsync"); - auto __result = __method(_javaPart); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod()>("newTestObjectAsync"); + auto __result = __method(_javaPart, CxxPart::getClass()); return [&]() { auto __promise = Promise>::pending(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { @@ -2082,8 +2088,8 @@ namespace margelo::nitro::test { }(); } std::variant, PersonKotlin> JHybridTestObjectSwiftKotlinSpec::getVariantHybrid(const std::variant, PersonKotlin>& variant) { - static const auto __method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* variant */)>("getVariantHybrid"); - auto __result = __method(_javaPart, JVariant_HybridTestObjectSwiftKotlinSpec_Person::fromCpp(variant)); + static const auto __method = CxxPart::getClass()->getNonvirtualMethod(jni::alias_ref /* variant */)>("getVariantHybrid"); + auto __result = __method(_javaPart, CxxPart::getClass(), JVariant_HybridTestObjectSwiftKotlinSpec_Person::fromCpp(variant)); return __result->toCpp(); } diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridBaseSpec.hpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridBaseSpec.hpp index f4963d2511..6d838a620a 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridBaseSpec.hpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridBaseSpec.hpp @@ -42,6 +42,7 @@ namespace margelo::nitro::test { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/HybridBaseSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridChildSpec.hpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridChildSpec.hpp index a5f00d6026..600d0b1e8e 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridChildSpec.hpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridChildSpec.hpp @@ -36,6 +36,7 @@ namespace margelo::nitro::test { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/HybridChildSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridGrandchildSpec.hpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridGrandchildSpec.hpp index 16d722e664..31d9cb1981 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridGrandchildSpec.hpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridGrandchildSpec.hpp @@ -33,6 +33,7 @@ namespace margelo::nitro::test { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/HybridGrandchildSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridPlatformObjectSpec.hpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridPlatformObjectSpec.hpp index 0eeb223ec8..969d69e3ae 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridPlatformObjectSpec.hpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridPlatformObjectSpec.hpp @@ -33,6 +33,7 @@ namespace margelo::nitro::test { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/HybridPlatformObjectSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridTestObjectSwiftKotlinSpec.hpp b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridTestObjectSwiftKotlinSpec.hpp index 56c0fbdd24..c277fc5948 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridTestObjectSwiftKotlinSpec.hpp +++ b/tests/standalone/nitro-test/nitrogen/generated/android/c++/include/NitroTest/private/JHybridTestObjectSwiftKotlinSpec.hpp @@ -72,6 +72,7 @@ namespace margelo::nitro::test { static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/test/HybridTestObjectSwiftKotlinSpec$CxxPart;"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); + static jni::alias_ref getClass(); using HybridBase::HybridBase; protected: std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridGrandchildSpec.kt b/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridGrandchildSpec.kt index 47716c077d..4d25964aa9 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridGrandchildSpec.kt +++ b/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridGrandchildSpec.kt @@ -46,6 +46,13 @@ abstract class HybridGrandchildSpec: HybridChildSpec() { // C++ JHybridGrandchildSpec::CxxPart::initHybrid(...) @FastNative external override fun initHybrid(): HybridData + + companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = HybridGrandchild::class.java + } } override fun createCxxPart(): CxxPart { return CxxPart(this) diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridPlatformObjectSpec.kt b/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridPlatformObjectSpec.kt index 5c71bcadbd..404c87262b 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridPlatformObjectSpec.kt +++ b/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridPlatformObjectSpec.kt @@ -46,6 +46,13 @@ abstract class HybridPlatformObjectSpec: HybridObject() { // C++ JHybridPlatformObjectSpec::CxxPart::initHybrid(...) @FastNative external override fun initHybrid(): HybridData + + companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = HybridPlatformObject::class.java + } } override fun createCxxPart(): CxxPart { return CxxPart(this) diff --git a/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestObjectSwiftKotlinSpec.kt b/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestObjectSwiftKotlinSpec.kt index 383569354b..1cc0c9bdaa 100644 --- a/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestObjectSwiftKotlinSpec.kt +++ b/tests/standalone/nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestObjectSwiftKotlinSpec.kt @@ -799,6 +799,13 @@ abstract class HybridTestObjectSwiftKotlinSpec: HybridObject() { // C++ JHybridTestObjectSwiftKotlinSpec::CxxPart::initHybrid(...) @FastNative external override fun initHybrid(): HybridData + + companion object { + @DoNotStrip + @Keep + @JvmField + val implementationClass_cxx: Class = HybridTestObjectKotlin::class.java + } } override fun createCxxPart(): CxxPart { return CxxPart(this)