@idlizer/core 2.1.9-arktscgen-5 → 2.1.9-arktscgen-8
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 +7 -8
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +4 -15
- package/build/lib/src/LanguageWriters/ArgConvertors.js +103 -102
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +8 -30
- package/build/lib/src/LanguageWriters/LanguageWriter.js +15 -67
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +2 -2
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +17 -1
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +121 -6
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +6 -0
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +1 -2
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +3 -19
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +0 -5
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +0 -9
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +3 -5
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +9 -22
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +6 -9
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +23 -66
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +1 -7
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +4 -14
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +11 -8
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +116 -27
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +4 -5
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +10 -26
- package/build/lib/src/config.d.ts +336 -1
- package/build/lib/src/config.js +11 -3
- package/build/lib/src/diagnosticmessages.d.ts +45 -0
- package/build/lib/src/diagnosticmessages.js +66 -0
- package/build/lib/src/diagnostictypes.d.ts +140 -0
- package/build/lib/src/diagnostictypes.js +72 -0
- package/build/lib/src/formatter.d.ts +3 -0
- package/build/lib/src/formatter.js +98 -0
- package/build/lib/src/from-idl/deserialize.d.ts +1 -0
- package/build/lib/src/from-idl/deserialize.js +107 -5
- package/build/lib/src/idl.d.ts +7 -0
- package/build/lib/src/idl.js +15 -3
- package/build/lib/src/index.d.ts +7 -1
- package/build/lib/src/index.js +7 -1
- package/build/lib/src/peer-generation/Materialized.d.ts +4 -20
- package/build/lib/src/peer-generation/Materialized.js +9 -62
- package/build/lib/src/peer-generation/PeerClass.d.ts +0 -2
- package/build/lib/src/peer-generation/PeerClass.js +4 -6
- package/build/lib/src/peer-generation/PeerLibrary.js +1 -5
- package/build/lib/src/peer-generation/PeerMethod.d.ts +25 -27
- package/build/lib/src/peer-generation/PeerMethod.js +83 -93
- package/build/lib/src/peer-generation/idl/common.js +1 -1
- package/build/lib/src/peer-generation/isMaterialized.js +0 -4
- package/build/lib/src/peer-generation/modules.d.ts +1 -0
- package/build/lib/src/peer-generation/modules.js +4 -0
- package/build/lib/src/peer-generation/unions.d.ts +0 -2
- package/build/lib/src/peer-generation/unions.js +3 -23
- package/build/lib/src/transformers/FqnTransformer.d.ts +4 -0
- package/build/lib/src/transformers/FqnTransformer.js +17 -0
- package/build/lib/src/transformers/GenericTransformer.d.ts +8 -0
- package/build/lib/src/transformers/GenericTransformer.js +141 -0
- package/build/lib/src/util.d.ts +4 -2
- package/build/lib/src/util.js +21 -12
- package/package.json +2 -2
|
@@ -13,10 +13,9 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
export class Language {
|
|
16
|
-
constructor(name, extension
|
|
16
|
+
constructor(name, extension) {
|
|
17
17
|
this.name = name;
|
|
18
18
|
this.extension = extension;
|
|
19
|
-
this.needsUnionDiscrimination = needsUnionDiscrimination;
|
|
20
19
|
}
|
|
21
20
|
toString() {
|
|
22
21
|
return this.name;
|
|
@@ -36,10 +35,10 @@ export class Language {
|
|
|
36
35
|
}
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
|
-
Language.TS = new Language("TS", ".ts"
|
|
40
|
-
Language.ARKTS = new Language("ArkTS", ".ts"
|
|
41
|
-
Language.JAVA = new Language("Java", ".java"
|
|
42
|
-
Language.CPP = new Language("C++", ".cc"
|
|
43
|
-
Language.CJ = new Language("CangJie", ".cj"
|
|
44
|
-
Language.KOTLIN = new Language("Kotlin", ".kt"
|
|
38
|
+
Language.TS = new Language("TS", ".ts");
|
|
39
|
+
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
|
+
Language.CPP = new Language("C++", ".cc");
|
|
42
|
+
Language.CJ = new Language("CangJie", ".cj");
|
|
43
|
+
Language.KOTLIN = new Language("Kotlin", ".kt");
|
|
45
44
|
//# sourceMappingURL=Language.js.map
|
|
@@ -5,6 +5,7 @@ import { NativeModuleType, RuntimeType } from "./common";
|
|
|
5
5
|
import { LibraryInterface } from "../LibraryInterface";
|
|
6
6
|
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
7
7
|
import { PeerLibrary } from "../peer-generation/PeerLibrary";
|
|
8
|
+
import { PeerMethodSignature } from "../peer-generation/PeerMethod";
|
|
8
9
|
export declare function getSerializerName(declaration: idl.IDLEntry): string;
|
|
9
10
|
export interface ArgConvertor {
|
|
10
11
|
param: string;
|
|
@@ -26,7 +27,7 @@ export interface ArgConvertor {
|
|
|
26
27
|
getObjectAccessor(languge: Language, value: string, args?: Record<string, string>, writer?: LanguageWriter): string;
|
|
27
28
|
}
|
|
28
29
|
export declare function isDirectConvertedType(originalType: idl.IDLType | undefined, library: PeerLibrary): boolean;
|
|
29
|
-
export declare function isVMContextMethod(method: Method): boolean;
|
|
30
|
+
export declare function isVMContextMethod(method: Method | PeerMethodSignature): boolean;
|
|
30
31
|
export declare function isDirectMethod(method: Method, library: PeerLibrary): boolean;
|
|
31
32
|
export declare abstract class BaseArgConvertor implements ArgConvertor {
|
|
32
33
|
idlType: idl.IDLType;
|
|
@@ -46,7 +47,7 @@ export declare abstract class BaseArgConvertor implements ArgConvertor {
|
|
|
46
47
|
unionDiscriminator(value: string, index: number, writer: LanguageWriter, duplicates: Set<string>): LanguageExpression | undefined;
|
|
47
48
|
getMembers(): string[];
|
|
48
49
|
getObjectAccessor(language: Language, value: string, args?: Record<string, string>, writer?: LanguageWriter): string;
|
|
49
|
-
protected discriminatorFromFields<T>(value: string, writer: LanguageWriter, uniqueFields: T[] | undefined, nameAccessor: (field: T) => string, optionalAccessor: (field: T) => boolean
|
|
50
|
+
protected discriminatorFromFields<T>(value: string, writer: LanguageWriter, uniqueFields: T[] | undefined, nameAccessor: (field: T) => string, optionalAccessor: (field: T) => boolean): LanguageExpression | undefined;
|
|
50
51
|
}
|
|
51
52
|
export declare class BooleanConvertor extends BaseArgConvertor {
|
|
52
53
|
constructor(param: string);
|
|
@@ -313,18 +314,6 @@ export declare class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
313
314
|
isPointerType(): boolean;
|
|
314
315
|
unionDiscriminator(value: string, index: number, writer: LanguageWriter, duplicates: Set<string>): LanguageExpression | undefined;
|
|
315
316
|
}
|
|
316
|
-
export declare class ExternalTypeConvertor extends BaseArgConvertor {
|
|
317
|
-
private library;
|
|
318
|
-
declaration: idl.IDLInterface;
|
|
319
|
-
constructor(library: PeerLibrary, param: string, declaration: idl.IDLInterface);
|
|
320
|
-
convertorArg(param: string, writer: LanguageWriter): string;
|
|
321
|
-
convertorSerialize(param: string, value: string, printer: LanguageWriter): void;
|
|
322
|
-
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
|
|
323
|
-
nativeType(): idl.IDLType;
|
|
324
|
-
interopType(): idl.IDLType;
|
|
325
|
-
isPointerType(): boolean;
|
|
326
|
-
unionDiscriminator(value: string, index: number, writer: LanguageWriter, duplicates: Set<string>): LanguageExpression | undefined;
|
|
327
|
-
}
|
|
328
317
|
export declare class ImportTypeConvertor extends BaseArgConvertor {
|
|
329
318
|
protected importedName: string;
|
|
330
319
|
constructor(param: string, importedName: string);
|
|
@@ -347,7 +336,6 @@ export declare class CallbackConvertor extends BaseArgConvertor {
|
|
|
347
336
|
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter, useSyncVersion?: boolean): LanguageStatement;
|
|
348
337
|
nativeType(): idl.IDLType;
|
|
349
338
|
isPointerType(): boolean;
|
|
350
|
-
unionDiscriminator(value: string, index: number, writer: LanguageWriter, duplicates: Set<string>): LanguageExpression | undefined;
|
|
351
339
|
}
|
|
352
340
|
export declare const CallbackKind = "CallbackKind";
|
|
353
341
|
export declare function generateCallbackKindName(callback: idl.IDLCallback): string;
|
|
@@ -355,4 +343,5 @@ export declare function generateCallbackKindAccess(callback: idl.IDLCallback, la
|
|
|
355
343
|
export declare function generateCallbackKindValue(callback: idl.IDLCallback): number;
|
|
356
344
|
export declare function generateCallbackAPIArguments(library: LibraryInterface, callback: idl.IDLCallback): string[];
|
|
357
345
|
export declare function maybeTransformManagedCallback(callback: idl.IDLCallback, library: ReferenceResolver): idl.IDLCallback | undefined;
|
|
346
|
+
export declare function createOutArgConvertor(library: PeerLibrary, type: idl.IDLType | undefined, otherParams: string[]): ArgConvertor | undefined;
|
|
358
347
|
//# sourceMappingURL=ArgConvertors.d.ts.map
|
|
@@ -17,13 +17,15 @@ 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 {
|
|
20
|
+
import { getExtractor, hashCodeFromString, throwException, warn } from "../util";
|
|
21
21
|
import { UnionRuntimeTypeChecker } from "../peer-generation/unions";
|
|
22
22
|
import { CppConvertor, CppNameConvertor } from "./convertors/CppConvertors";
|
|
23
23
|
import { createEmptyReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
24
24
|
import { PrimitiveTypesInstance } from "../peer-generation/PrimitiveType";
|
|
25
25
|
import { qualifiedName } from "../peer-generation/idl/common";
|
|
26
26
|
import { LayoutNodeRole } from "../peer-generation/LayoutManager";
|
|
27
|
+
import { PeerMethodSignature } from "../peer-generation/PeerMethod";
|
|
28
|
+
import { isInExternalModule } from "../peer-generation/modules";
|
|
27
29
|
export function getSerializerName(declaration) {
|
|
28
30
|
return `${idl.getQualifiedName(declaration, "namespace.name").split('.').join('_')}_serializer`;
|
|
29
31
|
}
|
|
@@ -76,7 +78,8 @@ export function isDirectConvertedType(originalType, library) {
|
|
|
76
78
|
}
|
|
77
79
|
export function isVMContextMethod(method) {
|
|
78
80
|
var _a, _b;
|
|
79
|
-
|
|
81
|
+
const isPromise = !!idl.asPromise(method instanceof PeerMethodSignature ? method.returnType : method.signature.returnType);
|
|
82
|
+
return isPromise ||
|
|
80
83
|
!!((_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.THROWS)) ||
|
|
81
84
|
!!((_b = method.modifiers) === null || _b === void 0 ? void 0 : _b.includes(MethodModifier.FORCE_CONTEXT)) ||
|
|
82
85
|
generatorConfiguration().forceContext.includes(method.name);
|
|
@@ -120,13 +123,12 @@ export class BaseArgConvertor {
|
|
|
120
123
|
return writer.getObjectAccessor(this, value, args);
|
|
121
124
|
return this.useArray && (args === null || args === void 0 ? void 0 : args.index) ? `${value}[${args.index}]` : value;
|
|
122
125
|
}
|
|
123
|
-
discriminatorFromFields(value, writer, uniqueFields, nameAccessor, optionalAccessor
|
|
126
|
+
discriminatorFromFields(value, writer, uniqueFields, nameAccessor, optionalAccessor) {
|
|
124
127
|
if (!uniqueFields || uniqueFields.length === 0)
|
|
125
128
|
return undefined;
|
|
126
129
|
const firstNonOptional = uniqueFields.find(it => !optionalAccessor(it));
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
]);
|
|
130
|
+
const accessors = firstNonOptional ? [nameAccessor(firstNonOptional)] : uniqueFields.map(it => nameAccessor(it));
|
|
131
|
+
return writer.makeNaryOp("||", accessors.map(it => writer.makeHasOwnProperty(value + "!", it)));
|
|
130
132
|
}
|
|
131
133
|
}
|
|
132
134
|
export class BooleanConvertor extends BaseArgConvertor {
|
|
@@ -249,7 +251,21 @@ export class EnumConvertor extends BaseArgConvertor {
|
|
|
249
251
|
return writer.getNodeName(this.idlType); // this.enumTypeName(writer.language)
|
|
250
252
|
}
|
|
251
253
|
unionDiscriminator(value, index, writer, duplicates) {
|
|
252
|
-
|
|
254
|
+
const convertorNativeType = this.nativeType();
|
|
255
|
+
const decl = writer.resolver.resolveTypeReference(idl.isReferenceType(convertorNativeType)
|
|
256
|
+
? convertorNativeType
|
|
257
|
+
: idl.createReferenceType(this.targetType(writer)));
|
|
258
|
+
if (decl === undefined || !idl.isEnum(decl)) {
|
|
259
|
+
throwException(`The type reference ${decl === null || decl === void 0 ? void 0 : decl.name} must be Enum`);
|
|
260
|
+
}
|
|
261
|
+
const ordinal = idl.isStringEnum(decl)
|
|
262
|
+
? writer.i32FromEnum(writer.makeCast(writer.makeString(writer.getObjectAccessor(this, value)), this.idlType), decl)
|
|
263
|
+
: writer.makeUnionVariantCast(writer.getObjectAccessor(this, value), writer.getNodeName(idl.IDLI32Type), this, index);
|
|
264
|
+
const { low, high } = idl.extremumOfOrdinals(decl);
|
|
265
|
+
return writer.makeNaryOp("&&", [
|
|
266
|
+
writer.makeNaryOp(">=", [ordinal, writer.makeString(low.toString())]),
|
|
267
|
+
writer.makeNaryOp("<=", [ordinal, writer.makeString(high.toString())])
|
|
268
|
+
]);
|
|
253
269
|
}
|
|
254
270
|
}
|
|
255
271
|
export class NumberConvertor extends BaseArgConvertor {
|
|
@@ -417,7 +433,7 @@ export class BufferConvertor extends BaseArgConvertor {
|
|
|
417
433
|
return true;
|
|
418
434
|
}
|
|
419
435
|
unionDiscriminator(value, index, writer, duplicates) {
|
|
420
|
-
return writer.instanceOf(
|
|
436
|
+
return writer.instanceOf(value, this.idlType);
|
|
421
437
|
}
|
|
422
438
|
}
|
|
423
439
|
export class AggregateConvertor extends BaseArgConvertor {
|
|
@@ -478,6 +494,12 @@ export class AggregateConvertor extends BaseArgConvertor {
|
|
|
478
494
|
const resultExpression = writer.makeString(`${writer.getNodeName(this.idlType)}(${this.decl.properties.map(prop => `${bufferName}_${prop.name}`).join(", ")})`);
|
|
479
495
|
statements.push(assigneer(resultExpression));
|
|
480
496
|
}
|
|
497
|
+
else if (writer.language == Language.KOTLIN) {
|
|
498
|
+
const resultExpression = this.decl.subkind === idl.IDLInterfaceSubkind.Tuple ?
|
|
499
|
+
writer.makeString(`${writer.getNodeName(this.idlType)}(${this.decl.properties.map(prop => `${bufferName}_${prop.name}`).join(', ')})`) :
|
|
500
|
+
writer.makeString(`object: ${writer.getNodeName(this.idlType)} { ${this.decl.properties.map(prop => `override var ${prop.name} = ${bufferName}_${prop.name}`).join("; ")} }`);
|
|
501
|
+
statements.push(assigneer(resultExpression));
|
|
502
|
+
}
|
|
481
503
|
else {
|
|
482
504
|
const resultExpression = this.makeAssigneeExpression(this.decl.properties.map(prop => {
|
|
483
505
|
return [prop.name, writer.makeString(`${bufferName}_${prop.name}`)];
|
|
@@ -504,7 +526,7 @@ export class AggregateConvertor extends BaseArgConvertor {
|
|
|
504
526
|
}
|
|
505
527
|
unionDiscriminator(value, index, writer, duplicates) {
|
|
506
528
|
const uniqueFields = this.members.filter(it => !duplicates.has(it[0]));
|
|
507
|
-
return this.discriminatorFromFields(value, writer, uniqueFields, it => it[0], it => it[1]
|
|
529
|
+
return this.discriminatorFromFields(value, writer, uniqueFields, it => it[0], it => it[1]);
|
|
508
530
|
}
|
|
509
531
|
}
|
|
510
532
|
export class TupleConvertor extends AggregateConvertor {
|
|
@@ -578,7 +600,7 @@ export class InterfaceConvertor extends BaseArgConvertor {
|
|
|
578
600
|
var _a;
|
|
579
601
|
// Try to figure out interface by examining field sets
|
|
580
602
|
const uniqueFields = (_a = this.declaration) === null || _a === void 0 ? void 0 : _a.properties.filter(it => !duplicates.has(it.name));
|
|
581
|
-
return this.discriminatorFromFields(value, writer, uniqueFields, it => it.name, it => it.isOptional
|
|
603
|
+
return this.discriminatorFromFields(value, writer, uniqueFields, it => it.name, it => it.isOptional);
|
|
582
604
|
}
|
|
583
605
|
}
|
|
584
606
|
export class ClassConvertor extends InterfaceConvertor {
|
|
@@ -586,7 +608,7 @@ export class ClassConvertor extends InterfaceConvertor {
|
|
|
586
608
|
super(library, name, param, declaration);
|
|
587
609
|
}
|
|
588
610
|
unionDiscriminator(value, index, writer, duplicateMembers) {
|
|
589
|
-
return writer.
|
|
611
|
+
return writer.instanceOf(value, this.idlType);
|
|
590
612
|
}
|
|
591
613
|
}
|
|
592
614
|
export class ArrayConvertor extends BaseArgConvertor {
|
|
@@ -603,7 +625,7 @@ export class ArrayConvertor extends BaseArgConvertor {
|
|
|
603
625
|
convertorSerialize(param, value, printer) {
|
|
604
626
|
// Array length.
|
|
605
627
|
const valueLength = printer.makeArrayLength(value).asString();
|
|
606
|
-
const loopCounter =
|
|
628
|
+
const loopCounter = `${value}_counter_i`;
|
|
607
629
|
printer.writeMethodCall(`${param}Serializer`, "writeInt32", [printer.castToInt(valueLength, 32)]);
|
|
608
630
|
printer.writeStatement(printer.makeLoop(loopCounter, valueLength));
|
|
609
631
|
printer.pushIndent();
|
|
@@ -636,7 +658,7 @@ export class ArrayConvertor extends BaseArgConvertor {
|
|
|
636
658
|
return true;
|
|
637
659
|
}
|
|
638
660
|
unionDiscriminator(value, index, writer, duplicates) {
|
|
639
|
-
return writer.
|
|
661
|
+
return writer.instanceOf(value, this.idlType);
|
|
640
662
|
}
|
|
641
663
|
getObjectAccessor(language, value, args) {
|
|
642
664
|
const array = language === Language.CPP ? ".array" : "";
|
|
@@ -700,7 +722,7 @@ export class MapConvertor extends BaseArgConvertor {
|
|
|
700
722
|
return true;
|
|
701
723
|
}
|
|
702
724
|
unionDiscriminator(value, index, writer, duplicates) {
|
|
703
|
-
return writer.
|
|
725
|
+
return writer.makeString(`${value} instanceof Map`);
|
|
704
726
|
}
|
|
705
727
|
getObjectAccessor(language, value, args) {
|
|
706
728
|
return language === Language.CPP && (args === null || args === void 0 ? void 0 : args.index) && (args === null || args === void 0 ? void 0 : args.field)
|
|
@@ -710,7 +732,7 @@ export class MapConvertor extends BaseArgConvertor {
|
|
|
710
732
|
}
|
|
711
733
|
export class DateConvertor extends BaseArgConvertor {
|
|
712
734
|
constructor(param) {
|
|
713
|
-
super(idl.
|
|
735
|
+
super(idl.IDLDate, [RuntimeType.NUMBER], false, false, param);
|
|
714
736
|
}
|
|
715
737
|
convertorArg(param, writer) {
|
|
716
738
|
if (writer.language === Language.CPP) {
|
|
@@ -841,30 +863,18 @@ export class OptionConvertor extends BaseArgConvertor {
|
|
|
841
863
|
throw new Error("Must never be used");
|
|
842
864
|
}
|
|
843
865
|
convertorSerialize(param, value, printer) {
|
|
844
|
-
|
|
845
|
-
const serializedType = (printer.language == Language.JAVA ? undefined : idl.IDLI32Type);
|
|
846
|
-
printer.writeStatement(printer.makeAssign(valueType, serializedType, printer.makeRuntimeType(RuntimeType.UNDEFINED), true, false));
|
|
847
|
-
if (printer.language != Language.CJ && printer.language != Language.KOTLIN) {
|
|
848
|
-
printer.runtimeType(this, valueType, value);
|
|
849
|
-
printer.writeMethodCall(`${param}Serializer`, "writeInt8", [printer.castToInt(valueType, 8)]);
|
|
850
|
-
}
|
|
851
|
-
printer.print(`if (${printer.makeRuntimeTypeCondition(valueType, false, RuntimeType.UNDEFINED, value).asString()}) {`);
|
|
866
|
+
printer.print(`if (${printer.makeDefinedCheck(value).asString()}) {`);
|
|
852
867
|
printer.pushIndent();
|
|
853
|
-
|
|
854
|
-
printer.writeMethodCall(`${param}Serializer`, "writeInt8", ["RuntimeType.OBJECT.ordinal"]); // everything is object, except None<T>
|
|
855
|
-
}
|
|
868
|
+
printer.writeMethodCall(`${param}Serializer`, "writeInt8", [printer.makeRuntimeType(RuntimeType.OBJECT).asString()]);
|
|
856
869
|
const valueValue = `${value}_value`.replaceAll('.', '_');
|
|
857
870
|
printer.writeStatement(printer.makeAssign(valueValue, undefined, printer.makeValueFromOption(value, this.typeConvertor), true));
|
|
858
871
|
this.typeConvertor.convertorSerialize(param, this.typeConvertor.getObjectAccessor(printer.language, valueValue), printer);
|
|
859
872
|
printer.popIndent();
|
|
860
|
-
printer.print(
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
printer.popIndent();
|
|
866
|
-
printer.print('}');
|
|
867
|
-
}
|
|
873
|
+
printer.print('} else {');
|
|
874
|
+
printer.pushIndent();
|
|
875
|
+
printer.writeMethodCall(`${param}Serializer`, "writeInt8", [printer.makeRuntimeType(RuntimeType.UNDEFINED).asString()]);
|
|
876
|
+
printer.popIndent();
|
|
877
|
+
printer.print('}');
|
|
868
878
|
}
|
|
869
879
|
convertorCArg(param) {
|
|
870
880
|
throw new Error("Must never be used");
|
|
@@ -914,13 +924,10 @@ export class UnionConvertor extends BaseArgConvertor {
|
|
|
914
924
|
throw new Error("Do not use for union");
|
|
915
925
|
}
|
|
916
926
|
convertorSerialize(param, value, printer) {
|
|
917
|
-
var _a;
|
|
918
|
-
printer.writeStatement(printer.makeAssign(`${value}_type`, idl.IDLI32Type, printer.makeUnionTypeDefaultInitializer(), true, false));
|
|
919
|
-
printer.writeStatement(printer.makeUnionSelector(value, `${value}_type`));
|
|
920
927
|
this.memberConvertors.forEach((it, index) => {
|
|
921
928
|
const maybeElse = (index > 0 && this.memberConvertors[index - 1].runtimeTypes.length > 0) ? "else " : "";
|
|
922
|
-
const
|
|
923
|
-
printer.print(`${maybeElse}if (${
|
|
929
|
+
const discriminator = this.unionChecker.makeDiscriminator(value, index, printer).asString();
|
|
930
|
+
printer.print(`${maybeElse}if (${discriminator}) {`);
|
|
924
931
|
printer.pushIndent();
|
|
925
932
|
printer.writeMethodCall(`${param}Serializer`, "writeInt8", [printer.castToInt(index.toString(), 8)]);
|
|
926
933
|
if (!(it instanceof UndefinedConvertor)) {
|
|
@@ -930,7 +937,6 @@ export class UnionConvertor extends BaseArgConvertor {
|
|
|
930
937
|
printer.popIndent();
|
|
931
938
|
printer.print(`}`);
|
|
932
939
|
});
|
|
933
|
-
this.unionChecker.reportConflicts((_a = this.library.getCurrentContext()) !== null && _a !== void 0 ? _a : "<unknown context>", printer);
|
|
934
940
|
}
|
|
935
941
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
936
942
|
const statements = [];
|
|
@@ -948,7 +954,7 @@ export class UnionConvertor extends BaseArgConvertor {
|
|
|
948
954
|
const stmt = new BlockStatement([
|
|
949
955
|
writer.makeSetUnionSelector(bufferName, `${index}`),
|
|
950
956
|
it.convertorDeserialize(`${bufferName}_u`, deserializerName, (expr) => {
|
|
951
|
-
if (writer.language == Language.CJ) {
|
|
957
|
+
if (writer.language == Language.CJ || writer.language == Language.KOTLIN) {
|
|
952
958
|
return writer.makeAssign(receiver, undefined, writer.makeFunctionCall(writer.getNodeName(this.type), [expr]), false);
|
|
953
959
|
}
|
|
954
960
|
else {
|
|
@@ -975,8 +981,7 @@ export class UnionConvertor extends BaseArgConvertor {
|
|
|
975
981
|
return language === Language.CPP && (args === null || args === void 0 ? void 0 : args.index) ? `${value}.value${args.index}` : value;
|
|
976
982
|
}
|
|
977
983
|
unionDiscriminator(value, index, writer, duplicates) {
|
|
978
|
-
|
|
979
|
-
return writer.makeNaryOp("||", this.memberConvertors.map((_, n) => checker.makeDiscriminator(value, n, writer)));
|
|
984
|
+
return writer.makeNaryOp("||", this.memberConvertors.map((_, n) => this.unionChecker.makeDiscriminator(value, n, writer)));
|
|
980
985
|
}
|
|
981
986
|
}
|
|
982
987
|
export class FunctionConvertor extends BaseArgConvertor {
|
|
@@ -1015,9 +1020,14 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
1015
1020
|
case Language.CPP:
|
|
1016
1021
|
return `static_cast<${generatorTypePrefix()}${qualifiedName(this.declaration, "_", "namespace.name")}>(${param})`;
|
|
1017
1022
|
case Language.JAVA:
|
|
1023
|
+
case Language.KOTLIN:
|
|
1018
1024
|
case Language.CJ:
|
|
1019
1025
|
return `MaterializedBase.toPeerPtr(${writer.escapeKeyword(param)})`;
|
|
1020
1026
|
default:
|
|
1027
|
+
if (isInExternalModule(this.declaration)) {
|
|
1028
|
+
const extractor = getExtractor(this.declaration, writer.language, true);
|
|
1029
|
+
return `${extractor.receiver}.${extractor.method}(${param})`;
|
|
1030
|
+
}
|
|
1021
1031
|
return `toPeerPtr(${param})`;
|
|
1022
1032
|
}
|
|
1023
1033
|
}
|
|
@@ -1044,62 +1054,11 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
1044
1054
|
unionDiscriminator(value, index, writer, duplicates) {
|
|
1045
1055
|
if (idl.isInterface(this.declaration)) {
|
|
1046
1056
|
if (this.declaration.subkind === idl.IDLInterfaceSubkind.Class) {
|
|
1047
|
-
return writer.
|
|
1057
|
+
return writer.instanceOf(value, this.idlType);
|
|
1048
1058
|
}
|
|
1049
1059
|
if (this.declaration.subkind === idl.IDLInterfaceSubkind.Interface) {
|
|
1050
1060
|
const uniqueFields = this.declaration.properties.filter(it => !duplicates.has(it.name));
|
|
1051
|
-
return this.discriminatorFromFields(value, writer, uniqueFields, it => it.name, it => it.isOptional
|
|
1052
|
-
}
|
|
1053
|
-
}
|
|
1054
|
-
}
|
|
1055
|
-
}
|
|
1056
|
-
export class ExternalTypeConvertor extends BaseArgConvertor {
|
|
1057
|
-
constructor(library, param, declaration) {
|
|
1058
|
-
super(idl.createReferenceType(declaration), [RuntimeType.OBJECT], false, false, param);
|
|
1059
|
-
this.library = library;
|
|
1060
|
-
this.declaration = declaration;
|
|
1061
|
-
console.log(`ExternalType convertor for type: ${declaration.name}`);
|
|
1062
|
-
}
|
|
1063
|
-
convertorArg(param, writer) {
|
|
1064
|
-
const lang = writer.language;
|
|
1065
|
-
switch (lang) {
|
|
1066
|
-
case Language.CPP:
|
|
1067
|
-
return `static_cast<${generatorTypePrefix()}${qualifiedName(this.declaration, "_", "namespace.name")}>(${param})`;
|
|
1068
|
-
default:
|
|
1069
|
-
return `extractors.${getExtractorName(this.declaration, lang, true)}(${param})`;
|
|
1070
|
-
}
|
|
1071
|
-
}
|
|
1072
|
-
convertorSerialize(param, value, printer) {
|
|
1073
|
-
const accessor = getSerializerName(this.declaration);
|
|
1074
|
-
printer.addFeature(accessor, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
|
|
1075
|
-
printer.writeStatement(printer.makeStatement(printer.makeStaticMethodCall(accessor, 'write', [
|
|
1076
|
-
printer.makeString(`${param}Serializer`),
|
|
1077
|
-
printer.makeString(value)
|
|
1078
|
-
])));
|
|
1079
|
-
}
|
|
1080
|
-
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
1081
|
-
const accessor = getSerializerName(this.declaration);
|
|
1082
|
-
writer.addFeature(accessor, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
|
|
1083
|
-
const readStatement = writer.makeCast(writer.makeStaticMethodCall(accessor, 'read', [writer.makeString(deserializerName)]), this.declaration);
|
|
1084
|
-
return assigneer(readStatement);
|
|
1085
|
-
}
|
|
1086
|
-
nativeType() {
|
|
1087
|
-
return idl.createReferenceType(this.declaration);
|
|
1088
|
-
}
|
|
1089
|
-
interopType() {
|
|
1090
|
-
return idl.IDLPointerType;
|
|
1091
|
-
}
|
|
1092
|
-
isPointerType() {
|
|
1093
|
-
return false;
|
|
1094
|
-
}
|
|
1095
|
-
unionDiscriminator(value, index, writer, duplicates) {
|
|
1096
|
-
if (idl.isInterface(this.declaration)) {
|
|
1097
|
-
if (this.declaration.subkind === idl.IDLInterfaceSubkind.Class) {
|
|
1098
|
-
return writer.discriminatorFromExpressions(value, RuntimeType.OBJECT, [writer.instanceOf(this, value, duplicates)]);
|
|
1099
|
-
}
|
|
1100
|
-
if (this.declaration.subkind === idl.IDLInterfaceSubkind.Interface) {
|
|
1101
|
-
const uniqueFields = this.declaration.properties.filter(it => !duplicates.has(it.name));
|
|
1102
|
-
return this.discriminatorFromFields(value, writer, uniqueFields, it => it.name, it => it.isOptional, duplicates);
|
|
1061
|
+
return this.discriminatorFromFields(value, writer, uniqueFields, it => it.name, it => it.isOptional);
|
|
1103
1062
|
}
|
|
1104
1063
|
}
|
|
1105
1064
|
}
|
|
@@ -1194,7 +1153,7 @@ export class CallbackConvertor extends BaseArgConvertor {
|
|
|
1194
1153
|
continuation = [
|
|
1195
1154
|
writer.language == Language.CJ ?
|
|
1196
1155
|
writer.makeAssign(continuationValueName, undefined, writer.makeString(`${writer.getNodeName(this.decl.returnType).replace(/[\<\>]/g, '')}Holder(None<${writer.getNodeName(this.decl.returnType)}>)`), true, true) :
|
|
1197
|
-
writer.makeAssign(continuationValueName, optionalReturnType, undefined, true, false),
|
|
1156
|
+
writer.makeAssign(continuationValueName, optionalReturnType, writer.language == Language.KOTLIN ? writer.makeNull() : undefined, true, false),
|
|
1198
1157
|
writer.makeAssign(continuationCallbackName, continuationReference, writer.makeLambda(new NamedMethodSignature(idl.IDLVoidType, [returnType], [`value`]), [
|
|
1199
1158
|
writer.language == Language.CJ ?
|
|
1200
1159
|
writer.makeAssign(`${continuationValueName}.value`, undefined, writer.makeString(`value`), false) :
|
|
@@ -1229,7 +1188,7 @@ export class CallbackConvertor extends BaseArgConvertor {
|
|
|
1229
1188
|
writer.makeString(`${argsSerializer}Serializer.length()`),
|
|
1230
1189
|
])),
|
|
1231
1190
|
new ExpressionStatement(writer.makeMethodCall(`${argsSerializer}Serializer`, `release`, [])),
|
|
1232
|
-
writer.
|
|
1191
|
+
writer.makeLambdaReturn(hasContinuation
|
|
1233
1192
|
? writer.makeCast(writer.language == Language.CJ ?
|
|
1234
1193
|
writer.makeString(`${continuationValueName}.value`) :
|
|
1235
1194
|
writer.makeString(continuationValueName), this.decl.returnType)
|
|
@@ -1246,10 +1205,6 @@ export class CallbackConvertor extends BaseArgConvertor {
|
|
|
1246
1205
|
isPointerType() {
|
|
1247
1206
|
return true;
|
|
1248
1207
|
}
|
|
1249
|
-
unionDiscriminator(value, index, writer, duplicates) {
|
|
1250
|
-
// We serialize callbacks as table offsets, so don't need to discriminate them. Runtime type check is enough
|
|
1251
|
-
return writer.makeUnionVariantCondition(this, value, `${value}_type`, RuntimeType[RuntimeType.FUNCTION]);
|
|
1252
|
-
}
|
|
1253
1208
|
}
|
|
1254
1209
|
////////////////////////////////////////////////////////////////////////////////
|
|
1255
1210
|
// UTILS
|
|
@@ -1294,4 +1249,50 @@ export function maybeTransformManagedCallback(callback, library) {
|
|
|
1294
1249
|
return library.resolveTypeReference(idl.createReferenceType("CustomNodeBuilder"));
|
|
1295
1250
|
return undefined;
|
|
1296
1251
|
}
|
|
1252
|
+
class PromiseOutArgConvertor extends BaseArgConvertor {
|
|
1253
|
+
constructor(library, param, promise) {
|
|
1254
|
+
super(library.createContinuationCallbackReference(promise), [RuntimeType.FUNCTION], false, true, param);
|
|
1255
|
+
this.library = library;
|
|
1256
|
+
this.promise = promise;
|
|
1257
|
+
this.isOut = true;
|
|
1258
|
+
const type = this.idlType;
|
|
1259
|
+
const callbackEntry = library.resolveTypeReference(type);
|
|
1260
|
+
if (!callbackEntry)
|
|
1261
|
+
throw new Error(`Internal error: no callback for ${type.name} resolved`);
|
|
1262
|
+
this.callback = callbackEntry;
|
|
1263
|
+
this.callbackConvertor = new CallbackConvertor(library, param, this.callback, this.library.interopNativeModule);
|
|
1264
|
+
}
|
|
1265
|
+
convertorArg(param, writer) {
|
|
1266
|
+
return this.callbackConvertor.convertorArg(param, writer);
|
|
1267
|
+
}
|
|
1268
|
+
convertorSerialize(param, value, writer) {
|
|
1269
|
+
if (writer.language == Language.CPP) {
|
|
1270
|
+
this.callbackConvertor.convertorSerialize(param, value, writer);
|
|
1271
|
+
return;
|
|
1272
|
+
}
|
|
1273
|
+
const serializeCallback = idl.isVoidType(this.promise.elementType[0])
|
|
1274
|
+
? writer.makeMethodCall(`${param}Serializer`, `holdAndWriteCallbackForPromiseVoid`, [])
|
|
1275
|
+
: writer.makeMethodCall(`${param}Serializer`, `holdAndWriteCallbackForPromise<${writer.getNodeName(this.promise.elementType[0])}>`, []);
|
|
1276
|
+
writer.writeStatement(writer.makeAssign(value, undefined, writer.language == Language.CJ ? writer.makeString(serializeCallback.asString().concat('.promise')) : writer.makeTupleAccess(serializeCallback.asString(), 0), true));
|
|
1277
|
+
}
|
|
1278
|
+
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
1279
|
+
return this.callbackConvertor.convertorDeserialize(bufferName, deserializerName, assigneer, writer);
|
|
1280
|
+
}
|
|
1281
|
+
nativeType() {
|
|
1282
|
+
return this.idlType;
|
|
1283
|
+
}
|
|
1284
|
+
isPointerType() {
|
|
1285
|
+
return true;
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
export function createOutArgConvertor(library, type, otherParams) {
|
|
1289
|
+
if (type && idl.isContainerType(type) && idl.IDLContainerUtils.isPromise(type)) {
|
|
1290
|
+
const param = (entropy) => `outputArgumentForReturningPromise${entropy || ''}`;
|
|
1291
|
+
let paramEntropy = 0;
|
|
1292
|
+
while (otherParams === null || otherParams === void 0 ? void 0 : otherParams.includes(param(paramEntropy)))
|
|
1293
|
+
++paramEntropy;
|
|
1294
|
+
return new PromiseOutArgConvertor(library, param(paramEntropy), type);
|
|
1295
|
+
}
|
|
1296
|
+
return undefined;
|
|
1297
|
+
}
|
|
1297
1298
|
//# sourceMappingURL=ArgConvertors.js.map
|
|
@@ -59,11 +59,6 @@ export declare class FieldAccessExpression {
|
|
|
59
59
|
constructor(receiver: string, field: string, nullable?: boolean);
|
|
60
60
|
asString(): string;
|
|
61
61
|
}
|
|
62
|
-
export declare class CheckDefinedExpression implements LanguageExpression {
|
|
63
|
-
private value;
|
|
64
|
-
constructor(value: string);
|
|
65
|
-
asString(): string;
|
|
66
|
-
}
|
|
67
62
|
export interface LanguageStatement {
|
|
68
63
|
write(writer: LanguageWriter): void;
|
|
69
64
|
}
|
|
@@ -113,13 +108,6 @@ export declare class MultiBranchIfStatement implements LanguageStatement {
|
|
|
113
108
|
constructor(statements: BranchStatement[], elseStatement: LanguageStatement | undefined);
|
|
114
109
|
write(writer: LanguageWriter): void;
|
|
115
110
|
}
|
|
116
|
-
export declare class CheckOptionalStatement implements LanguageStatement {
|
|
117
|
-
undefinedValue: string;
|
|
118
|
-
optionalExpression: LanguageExpression;
|
|
119
|
-
doStatement: LanguageStatement;
|
|
120
|
-
constructor(undefinedValue: string, optionalExpression: LanguageExpression, doStatement: LanguageStatement);
|
|
121
|
-
write(writer: LanguageWriter): void;
|
|
122
|
-
}
|
|
123
111
|
export declare class TsEnumEntityStatement implements LanguageStatement {
|
|
124
112
|
private readonly enumEntity;
|
|
125
113
|
private readonly options;
|
|
@@ -156,7 +144,8 @@ export declare enum FieldModifier {
|
|
|
156
144
|
PROTECTED = 4,
|
|
157
145
|
FINAL = 5,
|
|
158
146
|
VOLATILE = 6,
|
|
159
|
-
INTERNAL = 7
|
|
147
|
+
INTERNAL = 7,
|
|
148
|
+
OVERRIDE = 8
|
|
160
149
|
}
|
|
161
150
|
export declare enum MethodModifier {
|
|
162
151
|
PUBLIC = 0,
|
|
@@ -274,14 +263,13 @@ export declare abstract class LanguageWriter {
|
|
|
274
263
|
}, setter?: {
|
|
275
264
|
method: Method;
|
|
276
265
|
op: () => void;
|
|
277
|
-
}): void;
|
|
266
|
+
}, initExpr?: LanguageExpression): void;
|
|
278
267
|
abstract writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
279
268
|
abstract writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
280
269
|
abstract makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression | undefined, isDeclared: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
|
|
281
270
|
abstract makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
282
271
|
abstract makeThrowError(message: string): LanguageStatement;
|
|
283
272
|
abstract makeReturn(expr?: LanguageExpression): LanguageStatement;
|
|
284
|
-
abstract makeCheckOptional(optional: LanguageExpression, doStatement: LanguageStatement): LanguageStatement;
|
|
285
273
|
abstract makeRuntimeType(rt: RuntimeType): LanguageExpression;
|
|
286
274
|
abstract getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
287
275
|
abstract makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
@@ -324,6 +312,7 @@ export declare abstract class LanguageWriter {
|
|
|
324
312
|
makeThis(): LanguageExpression;
|
|
325
313
|
makeNull(value?: string): LanguageExpression;
|
|
326
314
|
makeVoid(): LanguageExpression;
|
|
315
|
+
makeLambdaReturn(expr?: LanguageExpression): LanguageStatement;
|
|
327
316
|
makeRuntimeTypeCondition(typeVarName: string, equals: boolean, type: RuntimeType, varName?: string): LanguageExpression;
|
|
328
317
|
makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
|
|
329
318
|
makeNewObject(objectName: string, params?: LanguageExpression[]): LanguageExpression;
|
|
@@ -335,7 +324,7 @@ export declare abstract class LanguageWriter {
|
|
|
335
324
|
makeNativeCall(nativeModule: NativeModuleType, method: string, params: LanguageExpression[], nullable?: boolean): LanguageExpression;
|
|
336
325
|
makeBlock(statements: LanguageStatement[], inScope?: boolean): BlockStatement;
|
|
337
326
|
nativeReceiver(nativeModule: NativeModuleType): string;
|
|
338
|
-
makeDefinedCheck(value: string): LanguageExpression;
|
|
327
|
+
abstract makeDefinedCheck(value: string, isTag?: boolean): LanguageExpression;
|
|
339
328
|
makeRuntimeTypeDefinedCheck(runtimeType: string): LanguageExpression;
|
|
340
329
|
makeCondition(condition: LanguageExpression, thenStatement: LanguageStatement, elseStatement?: LanguageStatement, insideIfOp?: () => void, insideElseOp?: () => void): LanguageStatement;
|
|
341
330
|
makeMultiBranchCondition(conditions: BranchStatement[], elseStatement?: LanguageStatement): LanguageStatement;
|
|
@@ -344,7 +333,6 @@ export declare abstract class LanguageWriter {
|
|
|
344
333
|
makeArrayAccess(value: string, indexVar: string): LanguageExpression;
|
|
345
334
|
makeTupleAccess(value: string, index: number): LanguageExpression;
|
|
346
335
|
makeUnionSelector(value: string, valueType: string): LanguageStatement;
|
|
347
|
-
makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, type: string, _convertorIndex?: number, _runtimeTypeIndex?: number): LanguageExpression;
|
|
348
336
|
makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index?: number): LanguageExpression;
|
|
349
337
|
makeUnionTypeDefaultInitializer(): LanguageExpression;
|
|
350
338
|
makeArrayResize(array: string, arrayType: string, length: string, deserializer: string): LanguageStatement;
|
|
@@ -357,15 +345,11 @@ export declare abstract class LanguageWriter {
|
|
|
357
345
|
makeNaryOp(op: string, args: LanguageExpression[]): LanguageExpression;
|
|
358
346
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
359
347
|
writeNativeMethodDeclaration(method: Method): void;
|
|
360
|
-
writeUnsafeNativeMethodDeclaration(name: string, signature: MethodSignature): void;
|
|
361
348
|
pushIndent(): void;
|
|
362
349
|
popIndent(): void;
|
|
363
350
|
print(string: stringOrNone): void;
|
|
364
351
|
getOutput(): string[];
|
|
365
352
|
makeSignature(returnType: idl.IDLType, parameters: idl.IDLParameter[]): MethodSignature;
|
|
366
|
-
makeNamedSignature(returnType: idl.IDLType, parameters: idl.IDLParameter[]): NamedMethodSignature;
|
|
367
|
-
makeNativeMethodNamedSignature(returnType: idl.IDLType, parameters: idl.IDLParameter[]): NamedMethodSignature;
|
|
368
|
-
makeSerializerConstructorSignatures(): NamedMethodSignature[] | undefined;
|
|
369
353
|
mapFieldModifier(modifier: FieldModifier): string;
|
|
370
354
|
mapMethodModifier(modifier: MethodModifier): string;
|
|
371
355
|
/**
|
|
@@ -374,10 +358,6 @@ export declare abstract class LanguageWriter {
|
|
|
374
358
|
makeUnsafeCast(param: string): string;
|
|
375
359
|
makeUnsafeCast_(value: LanguageExpression, type: idl.IDLType, typeOptions?: PrintHint): string;
|
|
376
360
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
377
|
-
makeDiscriminatorFromFields(convertor: {
|
|
378
|
-
targetType: (writer: LanguageWriter) => string;
|
|
379
|
-
}, value: string, accessors: string[], duplicates: Set<string>): LanguageExpression;
|
|
380
|
-
makeIsTypeCall(value: string, decl: idl.IDLInterface): LanguageExpression;
|
|
381
361
|
makeEnumEntity(enumEntity: idl.IDLEnum, options: {
|
|
382
362
|
isExport: boolean;
|
|
383
363
|
isDeclare?: boolean;
|
|
@@ -385,9 +365,8 @@ export declare abstract class LanguageWriter {
|
|
|
385
365
|
makeFieldModifiersList(modifiers: FieldModifier[] | undefined, customFieldFilter?: (field: FieldModifier) => boolean): string;
|
|
386
366
|
escapeKeyword(keyword: string): string;
|
|
387
367
|
makeCastCustomObject(customName: string, _isGenericType: boolean): LanguageExpression;
|
|
388
|
-
makeHasOwnProperty(value: string,
|
|
389
|
-
|
|
390
|
-
makeDiscriminatorConvertor(_convertor: ArgConvertor, _value: string, _index: number): LanguageExpression | undefined;
|
|
368
|
+
makeHasOwnProperty(value: string, property: string, propertyTypeName?: string): LanguageExpression;
|
|
369
|
+
discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
|
|
391
370
|
makeNot(expr: LanguageExpression): LanguageExpression;
|
|
392
371
|
makeSerializedBufferGetter(serializer: string): LanguageExpression;
|
|
393
372
|
makeEquals(args: LanguageExpression[]): LanguageExpression;
|
|
@@ -395,9 +374,8 @@ export declare abstract class LanguageWriter {
|
|
|
395
374
|
castToBoolean(value: string): string;
|
|
396
375
|
makeCallIsObject(value: string): LanguageExpression;
|
|
397
376
|
makeStaticBlock(op: (writer: LanguageWriter) => void): void;
|
|
398
|
-
instanceOf(
|
|
377
|
+
instanceOf(value: string, type: idl.IDLType): LanguageExpression;
|
|
399
378
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
400
|
-
stringifyTypeOrEmpty(type: idl.IDLType | undefined): string;
|
|
401
379
|
/**
|
|
402
380
|
* Writes `namespace <namespace> {` and adds extra indent
|
|
403
381
|
* @param namespace Namespace to begin
|