UNPKG

nitro-codegen

Version:

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

60 lines (54 loc) 1.78 kB
import type { Language } from '../getPlatformSpecs.js' import type { SourceFile, SourceImport } from './SourceFile.js' import type { Type } from './types/Type.js' export interface BridgedType< FromLanguage extends Language, ToLanguage extends Language, > { /** * The underlying type that is being bridged between {@linkcode FromLanguage} and {@linkcode ToLanguage} */ readonly type: Type /** * Whether the underlying type has a valid type (is not void or null) */ readonly hasType: boolean /** * Whether this type can be passed by reference */ readonly canBePassedByReference: boolean /** * Whether this bridged type needs special handling, or can just be used as-is */ readonly needsSpecialHandling: boolean /** * Get all imports required for this bridge to work */ getRequiredImports(): SourceImport[] /** * Get all extra files that need to be created for this type, as well as the bridge. */ getExtraFiles(): SourceFile[] /** * Get the code for the type itself in the given language */ getTypeCode(language: FromLanguage | ToLanguage): string /** * Parse the given parameter from the source language to the given target language, in the given language. * For example, to convert an ArrayBuffer from Swift ({@linkcode from}) to C++ ({@linkcode to}) we * have to wrap it in an ArrayBufferHolder in Swift ({@linkcode inLanguage}), and unwrap * it from the ArrayBufferHolder again in C++ ({@linkcode inLanguage}) */ parse( parameterName: string, from: FromLanguage, to: ToLanguage, inLanguage: FromLanguage | ToLanguage ): string parse( parameterName: string, from: ToLanguage, to: FromLanguage, inLanguage: FromLanguage | ToLanguage ): string }