UNPKG

nitro-codegen

Version:

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

39 lines (38 loc) 1.18 kB
import {} from '../SourceFile.js'; export class TupleType { itemTypes; constructor(itemTypes) { this.itemTypes = itemTypes; } get canBePassedByReference() { // It's a tuple<..> - heavy to copy return true; } get kind() { return 'tuple'; } getCode(language) { const types = this.itemTypes.map((t) => t.getCode(language)); switch (language) { case 'c++': return `std::tuple<${types.join(', ')}>`; case 'swift': throw new Error(`Tuple (${types.join(', ')}) is not yet supported in Swift due to a Swift bug! See https://github.com/swiftlang/swift/issues/75865`); default: throw new Error(`Language ${language} is not yet supported for TupleType!`); } } getExtraFiles() { return this.itemTypes.flatMap((t) => t.getExtraFiles()); } getRequiredImports() { return [ { language: 'c++', name: 'tuple', space: 'system', }, ...this.itemTypes.flatMap((t) => t.getRequiredImports()), ]; } }