nitro-codegen
Version:
The code-generator for react-native-nitro-modules.
60 lines (54 loc) • 1.78 kB
text/typescript
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
}