@idlizer/core 2.1.10-arktscgen-3a → 2.1.10-arktscgen-5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/src/Language.d.ts +0 -1
- package/build/lib/src/Language.js +0 -2
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +15 -2
- package/build/lib/src/LanguageWriters/ArgConvertors.js +75 -19
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +14 -2
- package/build/lib/src/LanguageWriters/LanguageWriter.js +12 -4
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +0 -1
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +2 -4
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +7 -7
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +37 -23
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +9 -5
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -4
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +73 -30
- package/build/lib/src/LanguageWriters/index.d.ts +2 -2
- package/build/lib/src/LanguageWriters/index.js +8 -13
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +4 -0
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +24 -16
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +2 -0
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +7 -1
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +1 -2
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +0 -6
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -0
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +11 -0
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +8 -0
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +75 -27
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +2 -0
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +38 -12
- package/build/lib/src/LibraryInterface.d.ts +0 -1
- package/build/lib/src/config.d.ts +760 -0
- package/build/lib/src/config.js +7 -0
- package/build/lib/src/formatter.js +5 -2
- package/build/lib/src/from-idl/DtsPrinter.js +3 -3
- package/build/lib/src/from-idl/common.js +2 -2
- package/build/lib/src/from-idl/deserialize.d.ts +3 -7
- package/build/lib/src/from-idl/deserialize.js +65 -39
- package/build/lib/src/from-idl/parser.d.ts +1 -1
- package/build/lib/src/from-idl/parser.js +29 -20
- package/build/lib/src/idl.d.ts +12 -1
- package/build/lib/src/idl.js +73 -11
- package/build/lib/src/index.d.ts +3 -5
- package/build/lib/src/index.js +3 -5
- package/build/lib/src/inheritance.d.ts +0 -2
- package/build/lib/src/inheritance.js +0 -17
- package/build/lib/src/languageSpecificKeywords.js +1 -1
- package/build/lib/src/peer-generation/ConflictingDeclarations.d.ts +6 -0
- package/build/lib/src/peer-generation/ConflictingDeclarations.js +43 -0
- package/build/lib/src/peer-generation/LayoutManager.d.ts +2 -0
- package/build/lib/src/peer-generation/LayoutManager.js +15 -0
- package/build/lib/src/peer-generation/Materialized.d.ts +2 -0
- package/build/lib/src/peer-generation/Materialized.js +14 -1
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +0 -3
- package/build/lib/src/peer-generation/PeerLibrary.js +63 -38
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +6 -0
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +15 -3
- package/build/lib/src/peer-generation/isMaterialized.js +1 -1
- package/build/lib/src/peer-generation/modules.d.ts +2 -0
- package/build/lib/src/peer-generation/modules.js +14 -1
- package/build/lib/src/transformers/GenericTransformer.js +70 -5
- package/build/lib/src/transformers/NullTransformer.d.ts +0 -1
- package/build/lib/src/transformers/NullTransformer.js +1 -2
- package/build/lib/src/transformers/OnSerializeTransformer.d.ts +3 -0
- package/build/lib/src/transformers/OnSerializeTransformer.js +19 -0
- package/build/lib/src/util.d.ts +10 -39
- package/build/lib/src/util.js +56 -371
- package/package.json +45 -49
|
@@ -26,7 +26,6 @@ export class Language {
|
|
|
26
26
|
static fromString(name) {
|
|
27
27
|
switch (name) {
|
|
28
28
|
case "arkts": return Language.ARKTS;
|
|
29
|
-
case "java": return Language.JAVA;
|
|
30
29
|
case "ts": return Language.TS;
|
|
31
30
|
case "cangjie": return Language.CJ;
|
|
32
31
|
case "cpp": return Language.CPP;
|
|
@@ -37,7 +36,6 @@ export class Language {
|
|
|
37
36
|
}
|
|
38
37
|
Language.TS = new Language("TS", ".ts");
|
|
39
38
|
Language.ARKTS = new Language("ArkTS", ".ts"); // using .ts for ArkTS until we get rit of tsc preprocessing
|
|
40
|
-
Language.JAVA = new Language("Java", ".java");
|
|
41
39
|
Language.CPP = new Language("C++", ".cc");
|
|
42
40
|
Language.CJ = new Language("CangJie", ".cj");
|
|
43
41
|
Language.KOTLIN = new Language("Kotlin", ".kt");
|
|
@@ -6,7 +6,7 @@ import { LibraryInterface } from "../LibraryInterface";
|
|
|
6
6
|
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
7
7
|
import { PeerLibrary } from "../peer-generation/PeerLibrary";
|
|
8
8
|
import { PeerMethodSignature } from "../peer-generation/PeerMethod";
|
|
9
|
-
export declare function getSerializerName(declaration: idl.IDLEntry): string;
|
|
9
|
+
export declare function getSerializerName(library: LibraryInterface, language: Language, declaration: idl.IDLEntry): string;
|
|
10
10
|
export interface ArgConvertor {
|
|
11
11
|
param: string;
|
|
12
12
|
idlType: idl.IDLType;
|
|
@@ -106,8 +106,9 @@ export declare class NumberConvertor extends BaseArgConvertor {
|
|
|
106
106
|
isPointerType(): boolean;
|
|
107
107
|
}
|
|
108
108
|
export declare class NumericConvertor extends BaseArgConvertor {
|
|
109
|
+
protected library: LibraryInterface;
|
|
109
110
|
private readonly interopNameConvertor;
|
|
110
|
-
constructor(param: string, type: idl.IDLPrimitiveType);
|
|
111
|
+
constructor(library: LibraryInterface, param: string, type: idl.IDLPrimitiveType);
|
|
111
112
|
convertorArg(param: string, writer: LanguageWriter): string;
|
|
112
113
|
convertorSerialize(param: string, value: string, writer: LanguageWriter): LanguageStatement;
|
|
113
114
|
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
|
|
@@ -343,5 +344,17 @@ export declare function generateCallbackKindAccess(callback: idl.IDLCallback, la
|
|
|
343
344
|
export declare function generateCallbackKindValue(callback: idl.IDLCallback): number;
|
|
344
345
|
export declare function generateCallbackAPIArguments(library: LibraryInterface, callback: idl.IDLCallback): string[];
|
|
345
346
|
export declare function maybeTransformManagedCallback(callback: idl.IDLCallback, library: ReferenceResolver): idl.IDLCallback | undefined;
|
|
347
|
+
export declare class TransformOnSerializeConvertor extends BaseArgConvertor {
|
|
348
|
+
protected library: PeerLibrary;
|
|
349
|
+
protected managedDeclaration: idl.IDLEntry;
|
|
350
|
+
protected target: idl.IDLType;
|
|
351
|
+
private targetConvertor;
|
|
352
|
+
constructor(param: string, library: PeerLibrary, managedDeclaration: idl.IDLEntry, target: idl.IDLType);
|
|
353
|
+
isPointerType(): boolean;
|
|
354
|
+
nativeType(): idl.IDLType;
|
|
355
|
+
convertorArg(param: string, writer: LanguageWriter): string;
|
|
356
|
+
convertorSerialize(param: string, value: string, writer: LanguageWriter): LanguageStatement;
|
|
357
|
+
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
|
|
358
|
+
}
|
|
346
359
|
export declare function createOutArgConvertor(library: PeerLibrary, type: idl.IDLType | undefined, otherParams: string[]): ArgConvertor | undefined;
|
|
347
360
|
//# sourceMappingURL=ArgConvertors.d.ts.map
|
|
@@ -17,17 +17,18 @@ import { Language } from "../Language";
|
|
|
17
17
|
import { BlockStatement, PrintHint, StringExpression, MethodModifier, NamedMethodSignature, ProxyStatement, ExpressionStatement } from "./LanguageWriter";
|
|
18
18
|
import { RuntimeType } from "./common";
|
|
19
19
|
import { generatorConfiguration, generatorTypePrefix } from "../config";
|
|
20
|
-
import { capitalize, getExtractor, hashCodeFromString, throwException, warn } from "../util";
|
|
20
|
+
import { capitalize, getExtractor, getTransformer, hashCodeFromString, throwException, warn } from "../util";
|
|
21
21
|
import { UnionRuntimeTypeChecker } from "../peer-generation/unions";
|
|
22
22
|
import { CppConvertor, CppNameConvertor } from "./convertors/CppConvertors";
|
|
23
|
-
import { createEmptyReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
24
23
|
import { PrimitiveTypesInstance } from "../peer-generation/PrimitiveType";
|
|
25
|
-
import { qualifiedName } from "../peer-generation/idl/common";
|
|
26
24
|
import { LayoutNodeRole } from "../peer-generation/LayoutManager";
|
|
27
25
|
import { PeerMethodSignature } from "../peer-generation/PeerMethod";
|
|
28
26
|
import { isInExternalModule } from "../peer-generation/modules";
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
import { isTopLevelConflicted } from "../peer-generation/ConflictingDeclarations";
|
|
28
|
+
export function getSerializerName(library, language, declaration) {
|
|
29
|
+
const qualifier = isTopLevelConflicted(library, language, declaration)
|
|
30
|
+
? "package.namespace.name" : "namespace.name";
|
|
31
|
+
return `${idl.getQualifiedName(declaration, qualifier).split('.').join('_')}_serializer`;
|
|
31
32
|
}
|
|
32
33
|
export function isDirectConvertedType(originalType, library) {
|
|
33
34
|
const debug = false;
|
|
@@ -298,10 +299,11 @@ export class NumberConvertor extends BaseArgConvertor {
|
|
|
298
299
|
}
|
|
299
300
|
}
|
|
300
301
|
export class NumericConvertor extends BaseArgConvertor {
|
|
301
|
-
constructor(param, type) {
|
|
302
|
+
constructor(library, param, type) {
|
|
302
303
|
// check numericPrimitiveTypes.include(type)
|
|
303
304
|
super(type, [RuntimeType.NUMBER], false, false, param);
|
|
304
|
-
this.
|
|
305
|
+
this.library = library;
|
|
306
|
+
this.interopNameConvertor = new CppNameConvertor(this.library);
|
|
305
307
|
}
|
|
306
308
|
convertorArg(param, writer) {
|
|
307
309
|
return param;
|
|
@@ -577,12 +579,12 @@ export class InterfaceConvertor extends BaseArgConvertor {
|
|
|
577
579
|
throw new Error("Must never be used");
|
|
578
580
|
}
|
|
579
581
|
convertorSerialize(param, value, writer) {
|
|
580
|
-
const accessor = getSerializerName(this.declaration);
|
|
582
|
+
const accessor = getSerializerName(this.library, writer.language, this.declaration);
|
|
581
583
|
writer.addFeature(accessor, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
|
|
582
|
-
return writer.makeStatement(writer.makeStaticMethodCall(accessor, 'write', [writer.makeString(`${param}Serializer`), writer.makeString(value)]));
|
|
584
|
+
return writer.makeStatement(writer.makeStaticMethodCall(accessor, 'write', [writer.makeString(`${param}Serializer`), writer.makeString(writer.escapeKeyword(value))]));
|
|
583
585
|
}
|
|
584
586
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
585
|
-
const accessor = getSerializerName(this.declaration);
|
|
587
|
+
const accessor = getSerializerName(this.library, writer.language, this.declaration);
|
|
586
588
|
writer.addFeature(accessor, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
|
|
587
589
|
return assigneer(writer.makeStaticMethodCall(accessor, 'read', [writer.makeString(deserializerName)]));
|
|
588
590
|
}
|
|
@@ -888,7 +890,7 @@ export class OptionConvertor extends BaseArgConvertor {
|
|
|
888
890
|
const bufferType = this.nativeType();
|
|
889
891
|
statements.push(writer.makeAssign(bufferName, bufferType, writer.language === Language.CPP ? undefined : writer.makeNull(this.type), true, false)); // maybe change to generic None
|
|
890
892
|
const thenStatement = new BlockStatement([
|
|
891
|
-
this.typeConvertor.convertorDeserialize(`${bufferName}
|
|
893
|
+
this.typeConvertor.convertorDeserialize(`${bufferName}Opt`, deserializerName, (expr) => {
|
|
892
894
|
const receiver = writer.language === Language.CPP
|
|
893
895
|
? `${bufferName}.value` : bufferName;
|
|
894
896
|
return writer.makeAssign(receiver, undefined, expr, false);
|
|
@@ -1018,11 +1020,10 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
1018
1020
|
this.declaration = declaration;
|
|
1019
1021
|
}
|
|
1020
1022
|
convertorArg(param, writer) {
|
|
1023
|
+
const nameConvertor = this.library.createTypeNameConvertor(Language.CPP);
|
|
1021
1024
|
switch (writer.language) {
|
|
1022
1025
|
case Language.CPP:
|
|
1023
|
-
return `static_cast<${
|
|
1024
|
-
case Language.JAVA:
|
|
1025
|
-
case Language.KOTLIN:
|
|
1026
|
+
return `static_cast<${nameConvertor.convert(this.declaration)}>(${param})`;
|
|
1026
1027
|
case Language.CJ:
|
|
1027
1028
|
return `MaterializedBase.toPeerPtr(${writer.escapeKeyword(param)})`;
|
|
1028
1029
|
default:
|
|
@@ -1034,12 +1035,12 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
1034
1035
|
}
|
|
1035
1036
|
}
|
|
1036
1037
|
convertorSerialize(param, value, printer) {
|
|
1037
|
-
const accessorRoot = getSerializerName(this.declaration);
|
|
1038
|
+
const accessorRoot = getSerializerName(this.library, printer.language, this.declaration);
|
|
1038
1039
|
printer.addFeature(accessorRoot, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
|
|
1039
1040
|
return printer.makeStatement(printer.makeStaticMethodCall(accessorRoot, 'write', [printer.makeString(`${param}Serializer`), printer.makeString(value)]));
|
|
1040
1041
|
}
|
|
1041
1042
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
1042
|
-
const accessorRoot = getSerializerName(this.declaration);
|
|
1043
|
+
const accessorRoot = getSerializerName(this.library, writer.language, this.declaration);
|
|
1043
1044
|
writer.addFeature(accessorRoot, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
|
|
1044
1045
|
const readStatement = writer.makeCast(writer.makeStaticMethodCall(accessorRoot, "read", [writer.makeString(deserializerName)]), this.declaration);
|
|
1045
1046
|
return assigneer(readStatement);
|
|
@@ -1116,8 +1117,10 @@ export class CallbackConvertor extends BaseArgConvertor {
|
|
|
1116
1117
|
writer.makeStatement(writer.makeMethodCall(`${param}Serializer`, "writePointer", [writer.makeCast(new StringExpression(`${value}.callSync`), idl.IDLPointerType, { unsafe: true })]))
|
|
1117
1118
|
], false);
|
|
1118
1119
|
}
|
|
1119
|
-
if (this.isTransformed)
|
|
1120
|
-
|
|
1120
|
+
if (this.isTransformed) {
|
|
1121
|
+
const convertor = this.library.createTypeNameConvertor(Language.CPP);
|
|
1122
|
+
value = `CallbackTransformer.transformFrom${convertor.convert(this.decl)}(${value})`;
|
|
1123
|
+
}
|
|
1121
1124
|
return writer.makeStatement(writer.makeMethodCall(`${param}Serializer`, `holdAndWriteCallback`, [writer.makeString(`${value}`)]));
|
|
1122
1125
|
}
|
|
1123
1126
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer, useSyncVersion = true) {
|
|
@@ -1222,7 +1225,7 @@ function warnCustomObject(type, msg) {
|
|
|
1222
1225
|
}
|
|
1223
1226
|
export const CallbackKind = "CallbackKind";
|
|
1224
1227
|
export function generateCallbackKindName(callback) {
|
|
1225
|
-
return `
|
|
1228
|
+
return `KIND_${callback.name.toUpperCase()}`;
|
|
1226
1229
|
}
|
|
1227
1230
|
export function generateCallbackKindAccess(callback, language) {
|
|
1228
1231
|
const name = generateCallbackKindName(callback);
|
|
@@ -1295,6 +1298,59 @@ class PromiseOutArgConvertor extends BaseArgConvertor {
|
|
|
1295
1298
|
return true;
|
|
1296
1299
|
}
|
|
1297
1300
|
}
|
|
1301
|
+
export class TransformOnSerializeConvertor extends BaseArgConvertor {
|
|
1302
|
+
constructor(param, library, managedDeclaration, target) {
|
|
1303
|
+
const targetConvertor = library.typeConvertor(param, target);
|
|
1304
|
+
super(target, targetConvertor.runtimeTypes, false, targetConvertor.useArray, param);
|
|
1305
|
+
this.library = library;
|
|
1306
|
+
this.managedDeclaration = managedDeclaration;
|
|
1307
|
+
this.target = target;
|
|
1308
|
+
this.targetConvertor = targetConvertor;
|
|
1309
|
+
}
|
|
1310
|
+
isPointerType() {
|
|
1311
|
+
return this.targetConvertor.isPointerType();
|
|
1312
|
+
}
|
|
1313
|
+
nativeType() {
|
|
1314
|
+
return this.targetConvertor.nativeType();
|
|
1315
|
+
}
|
|
1316
|
+
convertorArg(param, writer) {
|
|
1317
|
+
throw new Error("Method not implemented.");
|
|
1318
|
+
}
|
|
1319
|
+
convertorSerialize(param, value, writer) {
|
|
1320
|
+
if (writer.language === Language.CPP) {
|
|
1321
|
+
return this.targetConvertor.convertorSerialize(param, value, writer);
|
|
1322
|
+
}
|
|
1323
|
+
if (idl.isReferenceType(this.target)) {
|
|
1324
|
+
writer.addFeature(this.target);
|
|
1325
|
+
}
|
|
1326
|
+
const transformerInfo = getTransformer(this.library, this.managedDeclaration, this.target);
|
|
1327
|
+
const transformCallExpression = transformerInfo.receiver
|
|
1328
|
+
? writer.makeMethodCall(transformerInfo.receiver, transformerInfo.method, [writer.makeString(value)])
|
|
1329
|
+
: writer.makeFunctionCall(transformerInfo.method, [writer.makeString(value)]);
|
|
1330
|
+
const statements = [
|
|
1331
|
+
writer.makeAssign(`${value}Transformed`, this.target, transformCallExpression, true),
|
|
1332
|
+
this.targetConvertor.convertorSerialize(param, `${value}Transformed`, writer)
|
|
1333
|
+
];
|
|
1334
|
+
return writer.makeBlock(statements, false);
|
|
1335
|
+
}
|
|
1336
|
+
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
1337
|
+
if (writer.language === Language.CPP) {
|
|
1338
|
+
return this.targetConvertor.convertorDeserialize(bufferName, deserializerName, assigneer, writer);
|
|
1339
|
+
}
|
|
1340
|
+
if (idl.isReferenceType(this.target)) {
|
|
1341
|
+
writer.addFeature(this.target);
|
|
1342
|
+
}
|
|
1343
|
+
const targetDeserialize = this.targetConvertor.convertorDeserialize(`${bufferName}D`, deserializerName, (expr) => writer.makeAssign(`${bufferName}Deserialized`, this.target, expr, true), writer);
|
|
1344
|
+
const transformerInfo = getTransformer(this.library, this.target, this.managedDeclaration);
|
|
1345
|
+
const transformCallExpression = transformerInfo.receiver
|
|
1346
|
+
? writer.makeMethodCall(transformerInfo.receiver, transformerInfo.method, [writer.makeString(`${bufferName}Deserialized`)])
|
|
1347
|
+
: writer.makeFunctionCall(transformerInfo.method, [writer.makeString(`${bufferName}Deserialized`)]);
|
|
1348
|
+
return writer.makeBlock([
|
|
1349
|
+
targetDeserialize,
|
|
1350
|
+
assigneer(transformCallExpression)
|
|
1351
|
+
], false);
|
|
1352
|
+
}
|
|
1353
|
+
}
|
|
1298
1354
|
export function createOutArgConvertor(library, type, otherParams) {
|
|
1299
1355
|
if (type && idl.isContainerType(type) && idl.IDLContainerUtils.isPromise(type)) {
|
|
1300
1356
|
const param = (entropy) => `outputArgumentForReturningPromise${entropy || ''}`;
|
|
@@ -146,7 +146,9 @@ export declare enum FieldModifier {
|
|
|
146
146
|
FINAL = 5,
|
|
147
147
|
VOLATILE = 6,
|
|
148
148
|
INTERNAL = 7,
|
|
149
|
-
OVERRIDE = 8
|
|
149
|
+
OVERRIDE = 8,
|
|
150
|
+
GET = 9,
|
|
151
|
+
SET = 10
|
|
150
152
|
}
|
|
151
153
|
export declare enum MethodModifier {
|
|
152
154
|
PUBLIC = 0,
|
|
@@ -244,8 +246,17 @@ export declare abstract class LanguageWriter {
|
|
|
244
246
|
language: Language);
|
|
245
247
|
indentDepth(): number;
|
|
246
248
|
maybeSemicolon(): string;
|
|
247
|
-
features:
|
|
249
|
+
features: ({
|
|
250
|
+
type: "raw";
|
|
251
|
+
feature: string;
|
|
252
|
+
module: string;
|
|
253
|
+
} | {
|
|
254
|
+
type: "idl";
|
|
255
|
+
node: idl.IDLEntry | idl.IDLReferenceType;
|
|
256
|
+
})[];
|
|
257
|
+
addFeature(node: idl.IDLEntry | idl.IDLReferenceType): void;
|
|
248
258
|
addFeature(feature: string, module: string): void;
|
|
259
|
+
abstract get interopModule(): string;
|
|
249
260
|
abstract writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isExport?: boolean): void;
|
|
250
261
|
abstract writeEnum(name: string, members: {
|
|
251
262
|
name: string;
|
|
@@ -272,6 +283,7 @@ export declare abstract class LanguageWriter {
|
|
|
272
283
|
}, initExpr?: LanguageExpression): void;
|
|
273
284
|
abstract writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
274
285
|
abstract writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
286
|
+
abstract writeImports(moduleName: string, importedFeatures: string[], aliases: string[]): void;
|
|
275
287
|
abstract makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression | undefined, isDeclared: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
|
|
276
288
|
abstract makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
277
289
|
abstract makeThrowError(message: string): LanguageStatement;
|
|
@@ -278,8 +278,11 @@ export class LambdaExpression {
|
|
|
278
278
|
if (this.body) {
|
|
279
279
|
writer.writeStatement(new BlockStatement(this.body, isScoped, false));
|
|
280
280
|
}
|
|
281
|
-
writer.features.forEach((
|
|
282
|
-
|
|
281
|
+
writer.features.forEach((feature) => {
|
|
282
|
+
if (feature.type === "raw")
|
|
283
|
+
this.originalWriter.addFeature(feature.feature, feature.module);
|
|
284
|
+
else
|
|
285
|
+
this.originalWriter.addFeature(feature.node);
|
|
283
286
|
});
|
|
284
287
|
return writer.getOutput()
|
|
285
288
|
.map(line => (line.endsWith('{') || line.endsWith('}') || line.endsWith(';')) ? line : `${line};`)
|
|
@@ -304,6 +307,8 @@ export var FieldModifier;
|
|
|
304
307
|
FieldModifier[FieldModifier["VOLATILE"] = 6] = "VOLATILE";
|
|
305
308
|
FieldModifier[FieldModifier["INTERNAL"] = 7] = "INTERNAL";
|
|
306
309
|
FieldModifier[FieldModifier["OVERRIDE"] = 8] = "OVERRIDE";
|
|
310
|
+
FieldModifier[FieldModifier["GET"] = 9] = "GET";
|
|
311
|
+
FieldModifier[FieldModifier["SET"] = 10] = "SET";
|
|
307
312
|
})(FieldModifier || (FieldModifier = {}));
|
|
308
313
|
export var MethodModifier;
|
|
309
314
|
(function (MethodModifier) {
|
|
@@ -421,8 +426,11 @@ export class LanguageWriter {
|
|
|
421
426
|
return this.printer.indentDepth();
|
|
422
427
|
}
|
|
423
428
|
maybeSemicolon() { return ";"; }
|
|
424
|
-
addFeature(
|
|
425
|
-
|
|
429
|
+
addFeature(featureOrNode, module) {
|
|
430
|
+
if (typeof featureOrNode === "string")
|
|
431
|
+
this.features.push({ type: "raw", feature: featureOrNode, module: module });
|
|
432
|
+
else
|
|
433
|
+
this.features.push({ type: "idl", node: featureOrNode });
|
|
426
434
|
}
|
|
427
435
|
// version of makeCast which uses TypeCheck.typeCast<T>(value) call for ETS language writer
|
|
428
436
|
// Use it only if TypeChecker class is added as import to the generated file
|
|
@@ -32,5 +32,4 @@ export declare class CJIDLTypeToForeignStringConvertor extends CJTypeNameConvert
|
|
|
32
32
|
export declare class CJInteropArgConvertor extends InteropArgConvertor {
|
|
33
33
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
34
34
|
}
|
|
35
|
-
export declare function removePoints(s: string): string;
|
|
36
35
|
//# sourceMappingURL=CJConvertors.d.ts.map
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
16
|
import { CJKeywords } from '../../languageSpecificKeywords';
|
|
17
17
|
import { generateSyntheticIdlNodeName } from '../../peer-generation/idl/common';
|
|
18
|
+
import { removePoints } from '../../util';
|
|
18
19
|
import { convertNode, convertType } from '../nameConvertor';
|
|
19
20
|
import { InteropArgConvertor } from './InteropConvertors';
|
|
20
21
|
export class CJTypeNameConvertor {
|
|
@@ -149,7 +150,7 @@ export class CJTypeNameConvertor {
|
|
|
149
150
|
throw new Error(`Unsupported IDL primitive ${idl.DebugUtils.debugPrintType(type)}`);
|
|
150
151
|
}
|
|
151
152
|
callbackType(decl) {
|
|
152
|
-
const params = decl.parameters.map(it => `${CJKeywords.has(it.name) ? it.name.concat("_") : it.name}: ${this.convert(it.type)}`);
|
|
153
|
+
const params = decl.parameters.map(it => `${CJKeywords.has(it.name) ? it.name.concat("_") : it.name}: ${it.isOptional ? "?" : ""}${this.convert(it.type)}`);
|
|
153
154
|
return `((${params.join(", ")}) -> ${this.convert(decl.returnType)})`;
|
|
154
155
|
}
|
|
155
156
|
productType(decl, isTuple, includeFieldNames) {
|
|
@@ -199,7 +200,4 @@ export class CJInteropArgConvertor extends InteropArgConvertor {
|
|
|
199
200
|
return super.convertPrimitiveType(type);
|
|
200
201
|
}
|
|
201
202
|
}
|
|
202
|
-
export function removePoints(s) {
|
|
203
|
-
return s.split(/[\.\-]/g).join('_');
|
|
204
|
-
}
|
|
205
203
|
//# sourceMappingURL=CJConvertors.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as idl from '../../idl';
|
|
2
2
|
import { IdlNameConvertor, NodeConvertor, TypeConvertor } from "../nameConvertor";
|
|
3
3
|
import { InteropArgConvertor } from './InteropConvertors';
|
|
4
|
-
import {
|
|
4
|
+
import { LibraryInterface } from '../../LibraryInterface';
|
|
5
5
|
export interface ConvertResult {
|
|
6
6
|
text: string;
|
|
7
7
|
noPrefix: boolean;
|
|
8
8
|
resolvedType: idl.IDLType;
|
|
9
9
|
}
|
|
10
10
|
export declare class GenericCppConvertor implements NodeConvertor<ConvertResult> {
|
|
11
|
-
protected
|
|
12
|
-
constructor(
|
|
11
|
+
protected library: LibraryInterface;
|
|
12
|
+
constructor(library: LibraryInterface);
|
|
13
13
|
private make;
|
|
14
14
|
convertNode(node: idl.IDLNode): ConvertResult;
|
|
15
15
|
convertNamespace(node: idl.IDLNamespace): ConvertResult;
|
|
@@ -36,9 +36,9 @@ export declare class CppConvertor extends GenericCppConvertor implements IdlName
|
|
|
36
36
|
convert(node: idl.IDLNode): string;
|
|
37
37
|
}
|
|
38
38
|
export declare class CppNameConvertor implements IdlNameConvertor {
|
|
39
|
-
protected
|
|
39
|
+
protected library: LibraryInterface;
|
|
40
40
|
private readonly cppConvertor;
|
|
41
|
-
constructor(
|
|
41
|
+
constructor(library: LibraryInterface);
|
|
42
42
|
convert(node: idl.IDLNode): string;
|
|
43
43
|
}
|
|
44
44
|
export declare class CppInteropArgConvertor extends InteropArgConvertor {
|
|
@@ -47,9 +47,9 @@ export declare class CppInteropArgConvertor extends InteropArgConvertor {
|
|
|
47
47
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
48
48
|
}
|
|
49
49
|
export declare class CppReturnTypeConvertor implements TypeConvertor<string> {
|
|
50
|
-
private
|
|
50
|
+
private library;
|
|
51
51
|
private convertor;
|
|
52
|
-
constructor(
|
|
52
|
+
constructor(library: LibraryInterface);
|
|
53
53
|
isVoid(returnType: idl.IDLType): boolean;
|
|
54
54
|
convert(type: idl.IDLType): string;
|
|
55
55
|
convertContainer(type: idl.IDLContainerType): string;
|
|
@@ -13,18 +13,30 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
|
-
import { generatorConfiguration
|
|
16
|
+
import { generatorConfiguration } from "../../config";
|
|
17
17
|
import { convertNode, convertType } from "../nameConvertor";
|
|
18
18
|
import { PrimitiveTypesInstance } from '../../peer-generation/PrimitiveType';
|
|
19
19
|
import { InteropArgConvertor } from './InteropConvertors';
|
|
20
20
|
import { maybeTransformManagedCallback } from '../ArgConvertors';
|
|
21
21
|
import { qualifiedName } from '../../peer-generation/idl/common';
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
22
|
+
import { isInIdlizeInternal } from '../../idl';
|
|
23
|
+
import { isTopLevelConflicted } from '../../peer-generation/ConflictingDeclarations';
|
|
24
|
+
import { Language } from '../../Language';
|
|
25
|
+
function isSubtypeTopLevelConflicted(library, node) {
|
|
26
|
+
let hasConflicts = false;
|
|
27
|
+
idl.forEachChild(node, (child) => {
|
|
28
|
+
if (idl.isReferenceType(child)) {
|
|
29
|
+
const decl = library.resolveTypeReference(child);
|
|
30
|
+
if (decl) {
|
|
31
|
+
hasConflicts || (hasConflicts = isTopLevelConflicted(library, Language.CPP, decl));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return hasConflicts;
|
|
36
|
+
}
|
|
25
37
|
export class GenericCppConvertor {
|
|
26
|
-
constructor(
|
|
27
|
-
this.
|
|
38
|
+
constructor(library) {
|
|
39
|
+
this.library = library;
|
|
28
40
|
}
|
|
29
41
|
make(text, resolvedType, noPrefix = false) {
|
|
30
42
|
return { text, noPrefix, resolvedType };
|
|
@@ -78,6 +90,12 @@ export class GenericCppConvertor {
|
|
|
78
90
|
return this.make(prefix + converted.text, type, true);
|
|
79
91
|
}
|
|
80
92
|
convertUnion(type) {
|
|
93
|
+
if (isSubtypeTopLevelConflicted(this.library, type)) {
|
|
94
|
+
if (type.parent && idl.isTypedef(type.parent)) {
|
|
95
|
+
return this.make(type.parent.name, type, false);
|
|
96
|
+
}
|
|
97
|
+
return this.make('Union_' + type.types.map(it => convertType(this, it).text).join("_"), type, false);
|
|
98
|
+
}
|
|
81
99
|
return this.make(type.name, type, false);
|
|
82
100
|
}
|
|
83
101
|
convertContainer(type) {
|
|
@@ -108,14 +126,11 @@ export class GenericCppConvertor {
|
|
|
108
126
|
if (generatorConfiguration().parameterized.includes(refName)) {
|
|
109
127
|
return this.make('CustomObject', idl.IDLCustomObjectType);
|
|
110
128
|
}
|
|
111
|
-
let decl = this.
|
|
129
|
+
let decl = this.library.toDeclaration(type);
|
|
112
130
|
if (idl.isCallback(decl)) {
|
|
113
|
-
decl = (_a = maybeTransformManagedCallback(decl, this.
|
|
131
|
+
decl = (_a = maybeTransformManagedCallback(decl, this.library)) !== null && _a !== void 0 ? _a : decl;
|
|
114
132
|
}
|
|
115
133
|
if (idl.isType(decl)) {
|
|
116
|
-
if (idl.isReferenceType(decl)) {
|
|
117
|
-
return this.make(`${capitalize(decl.name)}`, decl);
|
|
118
|
-
}
|
|
119
134
|
return this.convertNode(decl);
|
|
120
135
|
}
|
|
121
136
|
let res = this.convertNode(decl);
|
|
@@ -159,6 +174,9 @@ export class GenericCppConvertor {
|
|
|
159
174
|
throw new Error(`Unmapped primitive type ${idl.DebugUtils.debugPrintType(type)}`);
|
|
160
175
|
}
|
|
161
176
|
qualifiedName(target) {
|
|
177
|
+
if (idl.isEntry(target) && isTopLevelConflicted(this.library, Language.CPP, target)) {
|
|
178
|
+
return qualifiedName(target, "_", "package.namespace.name");
|
|
179
|
+
}
|
|
162
180
|
return qualifiedName(target, "_", "namespace.name");
|
|
163
181
|
}
|
|
164
182
|
computeTargetTypeLiteralName(decl) {
|
|
@@ -188,10 +206,10 @@ export class CppConvertor extends GenericCppConvertor {
|
|
|
188
206
|
isPrimitiveOrPrimitiveAlias(type) {
|
|
189
207
|
if (!idl.isType(type))
|
|
190
208
|
return false;
|
|
191
|
-
const {
|
|
209
|
+
const { library } = this;
|
|
192
210
|
const seen = new Set;
|
|
193
211
|
while (type && idl.isReferenceType(type)) {
|
|
194
|
-
const resolved =
|
|
212
|
+
const resolved = library.resolveTypeReference(type);
|
|
195
213
|
if (!resolved)
|
|
196
214
|
return false;
|
|
197
215
|
if (!idl.isTypedef(resolved))
|
|
@@ -208,9 +226,9 @@ export class CppConvertor extends GenericCppConvertor {
|
|
|
208
226
|
}
|
|
209
227
|
}
|
|
210
228
|
export class CppNameConvertor {
|
|
211
|
-
constructor(
|
|
212
|
-
this.
|
|
213
|
-
this.cppConvertor = new GenericCppConvertor(
|
|
229
|
+
constructor(library) {
|
|
230
|
+
this.library = library;
|
|
231
|
+
this.cppConvertor = new GenericCppConvertor(library);
|
|
214
232
|
}
|
|
215
233
|
convert(node) {
|
|
216
234
|
return this.cppConvertor.convertNode(node).text;
|
|
@@ -236,9 +254,9 @@ export class CppInteropArgConvertor extends InteropArgConvertor {
|
|
|
236
254
|
}
|
|
237
255
|
CppInteropArgConvertor.INSTANCE = new CppInteropArgConvertor();
|
|
238
256
|
export class CppReturnTypeConvertor {
|
|
239
|
-
constructor(
|
|
240
|
-
this.
|
|
241
|
-
this.convertor = new CppConvertor(
|
|
257
|
+
constructor(library) {
|
|
258
|
+
this.library = library;
|
|
259
|
+
this.convertor = new CppConvertor(library);
|
|
242
260
|
}
|
|
243
261
|
isVoid(returnType) {
|
|
244
262
|
return this.convert(returnType) == 'void';
|
|
@@ -271,10 +289,6 @@ export class CppReturnTypeConvertor {
|
|
|
271
289
|
return this.convertor.convert(type);
|
|
272
290
|
}
|
|
273
291
|
convertTypeReference(type) {
|
|
274
|
-
const decl = this.resolver.resolveTypeReference(type);
|
|
275
|
-
if (decl && idl.isInterface(decl) && isMaterialized(decl, this.resolver)) {
|
|
276
|
-
return generatorTypePrefix() + qualifiedName(decl, "_", "namespace.name");
|
|
277
|
-
}
|
|
278
292
|
return this.convertor.convert(type);
|
|
279
293
|
}
|
|
280
294
|
convertUnion(type) {
|
|
@@ -16,7 +16,7 @@ import * as idl from '../../idl';
|
|
|
16
16
|
import { generateSyntheticIdlNodeName } from '../../peer-generation/idl/common';
|
|
17
17
|
import { isMaterialized } from '../../peer-generation/isMaterialized';
|
|
18
18
|
import { convertNode, convertType } from '../nameConvertor';
|
|
19
|
-
import { removePoints } from '
|
|
19
|
+
import { removePoints } from '../../util';
|
|
20
20
|
import { InteropReturnTypeConvertor } from './InteropConvertors';
|
|
21
21
|
export class KotlinTypeNameConvertor {
|
|
22
22
|
constructor(resolver) {
|
|
@@ -55,6 +55,11 @@ export class KotlinTypeNameConvertor {
|
|
|
55
55
|
}
|
|
56
56
|
convertContainer(type) {
|
|
57
57
|
if (idl.IDLContainerUtils.isSequence(type)) {
|
|
58
|
+
switch (type.elementType[0]) {
|
|
59
|
+
case idl.IDLU8Type: return "UByteArray";
|
|
60
|
+
case idl.IDLI32Type: return "IntArray";
|
|
61
|
+
case idl.IDLF32Type: return "FloatArray";
|
|
62
|
+
}
|
|
58
63
|
return `ArrayList<${convertType(this, type.elementType[0])}>`;
|
|
59
64
|
}
|
|
60
65
|
if (idl.IDLContainerUtils.isRecord(type)) {
|
|
@@ -93,7 +98,7 @@ export class KotlinTypeNameConvertor {
|
|
|
93
98
|
case idl.IDLUnknownType:
|
|
94
99
|
case idl.IDLCustomObjectType: return 'Any';
|
|
95
100
|
case idl.IDLThisType: return 'this';
|
|
96
|
-
case idl.IDLObjectType: return '
|
|
101
|
+
case idl.IDLObjectType: return 'Any';
|
|
97
102
|
case idl.IDLAnyType: return 'Any';
|
|
98
103
|
case idl.IDLUndefinedType: return 'Nothing?';
|
|
99
104
|
case idl.IDLPointerType: return 'KPointer';
|
|
@@ -135,7 +140,6 @@ const KLong = "KLong";
|
|
|
135
140
|
const KFloat = "KFloat";
|
|
136
141
|
const KDouble = "KDouble";
|
|
137
142
|
const KNativePointer = "KNativePointer";
|
|
138
|
-
const KInteropNumber = "KInteropNumber";
|
|
139
143
|
const KStringPtr = "KStringPtr";
|
|
140
144
|
const KInteropReturnBuffer = "KInteropReturnBuffer";
|
|
141
145
|
const KInteropBuffer = "KInteropBuffer";
|
|
@@ -154,7 +158,7 @@ export class KotlinCInteropReturnTypeConvertor extends InteropReturnTypeConverto
|
|
|
154
158
|
case idl.IDLF16Type:
|
|
155
159
|
case idl.IDLF32Type:
|
|
156
160
|
case idl.IDLF64Type: return KInt;
|
|
157
|
-
case idl.IDLNumberType: return
|
|
161
|
+
case idl.IDLNumberType: return KDouble;
|
|
158
162
|
case idl.IDLBooleanType: return KBoolean;
|
|
159
163
|
case idl.IDLBigintType: return KLong;
|
|
160
164
|
case idl.IDLAnyType:
|
|
@@ -218,7 +222,7 @@ export class KotlinCInteropArgConvertor {
|
|
|
218
222
|
case idl.IDLU32Type: return KInt;
|
|
219
223
|
case idl.IDLF32Type: return KFloat;
|
|
220
224
|
case idl.IDLF64Type: return KDouble;
|
|
221
|
-
case idl.IDLNumberType: return
|
|
225
|
+
case idl.IDLNumberType: return KDouble;
|
|
222
226
|
case idl.IDLBigintType: return KLong;
|
|
223
227
|
case idl.IDLSerializerBuffer: return KSerializerBuffer;
|
|
224
228
|
case idl.IDLBooleanType:
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as idl from '../../idl';
|
|
2
|
-
import {
|
|
2
|
+
import { LibraryInterface } from '../../LibraryInterface';
|
|
3
3
|
import { IdlNameConvertor, NodeConvertor, TypeConvertor } from '../nameConvertor';
|
|
4
4
|
export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNameConvertor {
|
|
5
|
-
protected
|
|
6
|
-
constructor(
|
|
5
|
+
protected library: LibraryInterface;
|
|
6
|
+
constructor(library: LibraryInterface);
|
|
7
|
+
protected mangleTopLevel(decl: idl.IDLEntry): string | undefined;
|
|
7
8
|
convert(node: idl.IDLNode): string;
|
|
8
9
|
convertNamespace(node: idl.IDLNamespace): string;
|
|
9
10
|
convertInterface(node: idl.IDLInterface): string;
|
|
@@ -22,7 +23,6 @@ export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNa
|
|
|
22
23
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
23
24
|
protected processTupleType(idlProperty: idl.IDLProperty): idl.IDLProperty;
|
|
24
25
|
protected createTypeSubstitution(parameters: string[] | undefined, args: idl.IDLType[] | undefined): Map<string, idl.IDLType>;
|
|
25
|
-
protected applySubstitution(subst: Map<string, idl.IDLType>, type: idl.IDLType): idl.IDLType;
|
|
26
26
|
protected mapCallback(decl: idl.IDLCallback, args?: idl.IDLType[]): string;
|
|
27
27
|
protected productType(decl: idl.IDLInterface, args: idl.IDLType[] | undefined, isTuple: boolean, includeFieldNames: boolean): string;
|
|
28
28
|
protected mapFunctionType(typeArgs: string[]): string;
|