nitro-codegen
Version:
The code-generator for react-native-nitro-modules.
50 lines (49 loc) • 1.41 kB
JavaScript
import {} from '../SourceFile.js';
export class ArrayType {
itemType;
constructor(itemType) {
this.itemType = itemType;
}
get canBePassedByReference() {
// It's a vector<..>, heavy to copy
return true;
}
get kind() {
return 'array';
}
getCode(language) {
const itemCode = this.itemType.getCode(language);
switch (language) {
case 'c++':
return `std::vector<${itemCode}>`;
case 'swift':
return `[${itemCode}]`;
case 'kotlin':
switch (this.itemType.kind) {
case 'number':
return 'DoubleArray';
case 'boolean':
return 'BooleanArray';
case 'bigint':
return 'LongArray';
default:
return `Array<${itemCode}>`;
}
default:
throw new Error(`Language ${language} is not yet supported for ArrayType!`);
}
}
getExtraFiles() {
return this.itemType.getExtraFiles();
}
getRequiredImports() {
return [
{
language: 'c++',
name: 'vector',
space: 'system',
},
...this.itemType.getRequiredImports(),
];
}
}