nitro-codegen
Version:
The code-generator for react-native-nitro-modules.
51 lines (46 loc) • 1.27 kB
text/typescript
import type { Language } from '../../getPlatformSpecs.js'
import { getForwardDeclaration } from '../c++/getForwardDeclaration.js'
import type { SourceFile, SourceImport } from '../SourceFile.js'
import type { Type, TypeKind } from './Type.js'
export class HybridObjectBaseType implements Type {
constructor() {}
get canBePassedByReference(): boolean {
// It's a shared_ptr<..>, no copy.
return true
}
get kind(): TypeKind {
return 'hybrid-object-base'
}
getCode(language: Language): string {
switch (language) {
case 'c++':
return `std::shared_ptr<HybridObject>`
default:
throw new Error(
`The base type \`HybridObject\` cannot be used directly in ${language} yet. Use a specific derived class of \`HybridObject\` instead!`
)
}
}
getExtraFiles(): SourceFile[] {
return []
}
getRequiredImports(): SourceImport[] {
return [
{
language: 'c++',
name: 'memory',
space: 'system',
},
{
name: `NitroModules/HybridObject.hpp`,
forwardDeclaration: getForwardDeclaration(
'class',
'HybridObject',
'margelo::nitro'
),
language: 'c++',
space: 'system',
},
]
}
}