@idlizer/core 2.0.43 → 2.1.2
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/LanguageWriters/ArgConvertors.d.ts +17 -1
- package/build/lib/src/LanguageWriters/ArgConvertors.js +115 -13
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +13 -5
- package/build/lib/src/LanguageWriters/LanguageWriter.js +9 -3
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +1 -1
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +15 -13
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +0 -1
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +4 -0
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +2 -1
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +10 -2
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +47 -29
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +10 -3
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +7 -10
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +0 -5
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +1 -42
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +9 -3
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +30 -7
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +8 -2
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +38 -11
- package/build/lib/src/LibraryInterface.d.ts +0 -1
- package/build/lib/src/config.d.ts +889 -0
- package/build/lib/src/config.js +11 -0
- package/build/lib/src/from-idl/DtsPrinter.js +2 -2
- package/build/lib/src/idl.d.ts +4 -2
- package/build/lib/src/idl.js +13 -2
- package/build/lib/src/idlize.d.ts +1 -0
- package/build/lib/src/idlize.js +3 -2
- package/build/lib/src/index.d.ts +2 -0
- package/build/lib/src/index.js +2 -0
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +1 -3
- package/build/lib/src/peer-generation/PeerLibrary.js +23 -9
- package/build/lib/src/peer-generation/PeerMethod.js +2 -16
- package/build/lib/src/peer-generation/isEnumType.d.ts +5 -0
- package/build/lib/src/peer-generation/isEnumType.js +29 -0
- package/build/lib/src/peer-generation/isMaterialized.js +16 -1
- package/build/lib/src/peer-generation/modules.d.ts +10 -0
- package/build/lib/src/peer-generation/modules.js +38 -0
- package/build/lib/src/util.d.ts +1 -0
- package/build/lib/src/util.js +6 -0
- package/package.json +2 -2
- package/build/lib/src/configMerge.d.ts +0 -2
- package/build/lib/src/configMerge.js +0 -42
- package/webidl2.js/LICENSE +0 -21
- package/webidl2.js/README.md +0 -827
- package/webidl2.js/dist/package.json +0 -3
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as idl from "../idl";
|
|
2
2
|
import { Language } from "../Language";
|
|
3
|
-
import { LanguageExpression, LanguageStatement, LanguageWriter,
|
|
3
|
+
import { ExpressionAssigner, LanguageExpression, LanguageStatement, LanguageWriter, Method } from "./LanguageWriter";
|
|
4
4
|
import { RuntimeType } from "./common";
|
|
5
5
|
import { LibraryInterface } from "../LibraryInterface";
|
|
6
6
|
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
7
|
+
import { PeerLibrary } from "../peer-generation/PeerLibrary";
|
|
7
8
|
export interface ArgConvertor {
|
|
8
9
|
param: string;
|
|
9
10
|
idlType: idl.IDLType;
|
|
@@ -14,6 +15,7 @@ export interface ArgConvertor {
|
|
|
14
15
|
convertorArg(param: string, writer: LanguageWriter): string;
|
|
15
16
|
convertorSerialize(param: string, value: string, writer: LanguageWriter): void;
|
|
16
17
|
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
|
|
18
|
+
holdResource(resourceName: string, holder: string, writer: LanguageWriter): void;
|
|
17
19
|
interopType(): idl.IDLType;
|
|
18
20
|
nativeType(): idl.IDLType;
|
|
19
21
|
targetType(writer: LanguageWriter): string;
|
|
@@ -22,6 +24,9 @@ export interface ArgConvertor {
|
|
|
22
24
|
getMembers(): string[];
|
|
23
25
|
getObjectAccessor(languge: Language, value: string, args?: Record<string, string>, writer?: LanguageWriter): string;
|
|
24
26
|
}
|
|
27
|
+
export declare function isDirectConvertedType(originalType: idl.IDLType | undefined, library: PeerLibrary): boolean;
|
|
28
|
+
export declare function isVMContextMethod(method: Method): boolean;
|
|
29
|
+
export declare function isDirectMethod(method: Method, library: PeerLibrary): boolean;
|
|
25
30
|
export declare abstract class BaseArgConvertor implements ArgConvertor {
|
|
26
31
|
idlType: idl.IDLType;
|
|
27
32
|
runtimeTypes: RuntimeType[];
|
|
@@ -29,6 +34,7 @@ export declare abstract class BaseArgConvertor implements ArgConvertor {
|
|
|
29
34
|
useArray: boolean;
|
|
30
35
|
param: string;
|
|
31
36
|
protected constructor(idlType: idl.IDLType, runtimeTypes: RuntimeType[], isScoped: boolean, useArray: boolean, param: string);
|
|
37
|
+
holdResource(_resourceName: string, _holder: string, _writer: LanguageWriter): void;
|
|
32
38
|
nativeType(): idl.IDLType;
|
|
33
39
|
isPointerType(): boolean;
|
|
34
40
|
interopType(): idl.IDLType;
|
|
@@ -116,6 +122,16 @@ export declare class BigIntToU64Convertor extends BaseArgConvertor {
|
|
|
116
122
|
interopType(): idl.IDLType;
|
|
117
123
|
isPointerType(): boolean;
|
|
118
124
|
}
|
|
125
|
+
export declare class ObjectConvertor extends BaseArgConvertor {
|
|
126
|
+
constructor(param: string);
|
|
127
|
+
convertorArg(param: string, writer: LanguageWriter): string;
|
|
128
|
+
convertorSerialize(param: string, value: string, printer: LanguageWriter): void;
|
|
129
|
+
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
|
|
130
|
+
holdResource(name: string, holder: string, writer: LanguageWriter): void;
|
|
131
|
+
nativeType(): idl.IDLType;
|
|
132
|
+
interopType(): idl.IDLType;
|
|
133
|
+
isPointerType(): boolean;
|
|
134
|
+
}
|
|
119
135
|
export declare class PointerConvertor extends BaseArgConvertor {
|
|
120
136
|
constructor(param: string);
|
|
121
137
|
convertorArg(param: string, writer: LanguageWriter): string;
|
|
@@ -14,15 +14,74 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from "../idl";
|
|
16
16
|
import { Language } from "../Language";
|
|
17
|
-
import {
|
|
17
|
+
import { BlockStatement, PrintHint, StringExpression, MethodModifier } from "./LanguageWriter";
|
|
18
18
|
import { RuntimeType } from "./common";
|
|
19
19
|
import { generatorTypePrefix } from "../config";
|
|
20
20
|
import { hashCodeFromString, warn } from "../util";
|
|
21
21
|
import { UnionRuntimeTypeChecker } from "../peer-generation/unions";
|
|
22
|
-
import { CppNameConvertor } from "./convertors/CppConvertors";
|
|
22
|
+
import { CppConvertor, CppNameConvertor } from "./convertors/CppConvertors";
|
|
23
23
|
import { createEmptyReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
24
|
-
import { CppConvertor } from "./convertors/CppConvertors";
|
|
25
24
|
import { PrimitiveTypesInstance } from "../peer-generation/PrimitiveType";
|
|
25
|
+
import { qualifiedName } from "../peer-generation/idl/common";
|
|
26
|
+
export function isDirectConvertedType(originalType, library) {
|
|
27
|
+
const debug = false;
|
|
28
|
+
if (originalType == undefined)
|
|
29
|
+
return true; // TODO: is it correct?
|
|
30
|
+
if (debug)
|
|
31
|
+
console.log(`IDL type ${idl.DebugUtils.debugPrintType(originalType)}`);
|
|
32
|
+
if (originalType == idl.IDLInteropReturnBufferType) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (originalType == idl.IDLSerializerBuffer)
|
|
36
|
+
return true;
|
|
37
|
+
let convertor = library.typeConvertor("x", originalType, false);
|
|
38
|
+
// Resolve aliases.
|
|
39
|
+
while (convertor instanceof TypeAliasConvertor) {
|
|
40
|
+
convertor = convertor.convertor;
|
|
41
|
+
}
|
|
42
|
+
if (convertor instanceof ArrayConvertor ||
|
|
43
|
+
convertor instanceof CustomTypeConvertor ||
|
|
44
|
+
convertor instanceof UnionConvertor ||
|
|
45
|
+
convertor instanceof CallbackConvertor ||
|
|
46
|
+
convertor instanceof MapConvertor ||
|
|
47
|
+
convertor instanceof TupleConvertor ||
|
|
48
|
+
convertor instanceof AggregateConvertor ||
|
|
49
|
+
convertor instanceof OptionConvertor) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
let type = convertor.interopType();
|
|
53
|
+
if (debug)
|
|
54
|
+
console.log(`converted type ${idl.DebugUtils.debugPrintType(originalType)}`);
|
|
55
|
+
let result = type == idl.IDLI8Type || type == idl.IDLU8Type
|
|
56
|
+
|| type == idl.IDLI16Type || type == idl.IDLU16Type
|
|
57
|
+
|| type == idl.IDLI32Type || type == idl.IDLU32Type
|
|
58
|
+
|| type == idl.IDLF32Type
|
|
59
|
+
|| type == idl.IDLI64Type || type == idl.IDLU64Type
|
|
60
|
+
|| type == idl.IDLPointerType
|
|
61
|
+
|| type == idl.IDLBooleanType
|
|
62
|
+
|| type == idl.IDLVoidType
|
|
63
|
+
|| type == idl.IDLUndefinedType
|
|
64
|
+
|| type == idl.IDLSerializerBuffer
|
|
65
|
+
|| type == idl.IDLNumberType;
|
|
66
|
+
if (!result && debug)
|
|
67
|
+
console.log(`type ${idl.DebugUtils.debugPrintType(type)} is not direct`);
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
export function isVMContextMethod(method) {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
return !!idl.asPromise(method.signature.returnType) ||
|
|
73
|
+
!!((_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.THROWS)) ||
|
|
74
|
+
!!((_b = method.modifiers) === null || _b === void 0 ? void 0 : _b.includes(MethodModifier.FORCE_CONTEXT));
|
|
75
|
+
}
|
|
76
|
+
export function isDirectMethod(method, library) {
|
|
77
|
+
if (isVMContextMethod(method)) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
let result = isDirectConvertedType(method.signature.returnType, library) &&
|
|
81
|
+
method.signature.args.every((arg) => isDirectConvertedType(arg, library));
|
|
82
|
+
// if (!result) console.log(`method ${method.name} is not direct`)
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
26
85
|
export class BaseArgConvertor {
|
|
27
86
|
constructor(idlType, runtimeTypes, isScoped, useArray, param) {
|
|
28
87
|
this.idlType = idlType;
|
|
@@ -31,6 +90,7 @@ export class BaseArgConvertor {
|
|
|
31
90
|
this.useArray = useArray;
|
|
32
91
|
this.param = param;
|
|
33
92
|
}
|
|
93
|
+
holdResource(_resourceName, _holder, _writer) { }
|
|
34
94
|
nativeType() {
|
|
35
95
|
throw new Error("Define");
|
|
36
96
|
}
|
|
@@ -158,14 +218,10 @@ export class EnumConvertor extends BaseArgConvertor {
|
|
|
158
218
|
this.enumEntry = enumEntry;
|
|
159
219
|
}
|
|
160
220
|
convertorArg(param, writer) {
|
|
161
|
-
return writer.makeEnumCast(writer.escapeKeyword(param)
|
|
221
|
+
return writer.makeEnumCast(this.enumEntry, writer.escapeKeyword(param));
|
|
162
222
|
}
|
|
163
223
|
convertorSerialize(param, value, writer) {
|
|
164
|
-
value
|
|
165
|
-
idl.isStringEnum(this.enumEntry)
|
|
166
|
-
? writer.ordinalFromEnum(writer.makeString(value), idl.createReferenceType(this.enumEntry)).asString()
|
|
167
|
-
: writer.makeEnumCast(value, false, this);
|
|
168
|
-
writer.writeMethodCall(`${param}Serializer`, "writeInt32", [value]);
|
|
224
|
+
writer.writeMethodCall(`${param}Serializer`, "writeInt32", [writer.makeEnumCast(this.enumEntry, value)]);
|
|
169
225
|
}
|
|
170
226
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
171
227
|
const readExpr = writer.makeMethodCall(`${deserializerName}`, "readInt32", []);
|
|
@@ -265,6 +321,50 @@ export class BigIntToU64Convertor extends BaseArgConvertor {
|
|
|
265
321
|
return false;
|
|
266
322
|
}
|
|
267
323
|
}
|
|
324
|
+
export class ObjectConvertor extends BaseArgConvertor {
|
|
325
|
+
constructor(param) {
|
|
326
|
+
super(idl.IDLAnyType, [
|
|
327
|
+
RuntimeType.BIGINT,
|
|
328
|
+
RuntimeType.BOOLEAN,
|
|
329
|
+
RuntimeType.FUNCTION,
|
|
330
|
+
RuntimeType.MATERIALIZED,
|
|
331
|
+
RuntimeType.NUMBER,
|
|
332
|
+
RuntimeType.OBJECT,
|
|
333
|
+
RuntimeType.STRING,
|
|
334
|
+
RuntimeType.SYMBOL,
|
|
335
|
+
RuntimeType.UNDEFINED
|
|
336
|
+
], false, true, param);
|
|
337
|
+
}
|
|
338
|
+
convertorArg(param, writer) {
|
|
339
|
+
return writer.escapeKeyword(param);
|
|
340
|
+
}
|
|
341
|
+
convertorSerialize(param, value, printer) {
|
|
342
|
+
if (printer.language === Language.CPP) {
|
|
343
|
+
printer.writeMethodCall(`${param}Serializer`, "writeObject", [value]);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
printer.writeMethodCall(`${param}Serializer`, "holdAndWriteObject", [value]);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
350
|
+
return assigneer(writer.makeCast(writer.makeMethodCall(deserializerName, 'readObject', []), this.idlType, { optional: false }));
|
|
351
|
+
}
|
|
352
|
+
holdResource(name, holder, writer) {
|
|
353
|
+
writer.writeStatement(writer.makeAssign(name, idl.createReferenceType(`CallbackResource`), writer.makeString(`{${this.param}.resource.resourceId, holdManagedCallbackResource, releaseManagedCallbackResource}`), true));
|
|
354
|
+
writer.writeExpressionStatement(writer.makeMethodCall(holder, 'holdCallbackResource', [
|
|
355
|
+
writer.makeString('&' + name)
|
|
356
|
+
]));
|
|
357
|
+
}
|
|
358
|
+
nativeType() {
|
|
359
|
+
return idl.IDLAnyType;
|
|
360
|
+
}
|
|
361
|
+
interopType() {
|
|
362
|
+
return idl.IDLAnyType;
|
|
363
|
+
}
|
|
364
|
+
isPointerType() {
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
268
368
|
export class PointerConvertor extends BaseArgConvertor {
|
|
269
369
|
constructor(param) {
|
|
270
370
|
// check numericPrimitiveTypes.include(type)
|
|
@@ -456,7 +556,9 @@ export class InterfaceConvertor extends BaseArgConvertor {
|
|
|
456
556
|
return this.idlType;
|
|
457
557
|
}
|
|
458
558
|
interopType() {
|
|
459
|
-
|
|
559
|
+
// Actually shouldn't be used!
|
|
560
|
+
// throw new Error("Must never be used")
|
|
561
|
+
return idl.IDLObjectType;
|
|
460
562
|
}
|
|
461
563
|
isPointerType() {
|
|
462
564
|
return true;
|
|
@@ -889,7 +991,7 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
889
991
|
convertorArg(param, writer) {
|
|
890
992
|
switch (writer.language) {
|
|
891
993
|
case Language.CPP:
|
|
892
|
-
return `static_cast<${generatorTypePrefix()}${this.declaration
|
|
994
|
+
return `static_cast<${generatorTypePrefix()}${qualifiedName(this.declaration, "_")}>(${param})`;
|
|
893
995
|
case Language.JAVA:
|
|
894
996
|
case Language.CJ:
|
|
895
997
|
return `MaterializedBase.toPeerPtr(${param})`;
|
|
@@ -898,12 +1000,12 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
898
1000
|
}
|
|
899
1001
|
}
|
|
900
1002
|
convertorSerialize(param, value, printer) {
|
|
901
|
-
printer.writeStatement(printer.makeStatement(printer.makeMethodCall(`${param}Serializer`, `write${this.declaration
|
|
1003
|
+
printer.writeStatement(printer.makeStatement(printer.makeMethodCall(`${param}Serializer`, `write${qualifiedName(this.declaration, "_")}`, [
|
|
902
1004
|
printer.makeString(value)
|
|
903
1005
|
])));
|
|
904
1006
|
}
|
|
905
1007
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
906
|
-
const readStatement = writer.makeCast(writer.makeMethodCall(`${deserializerName}`, `read${this.declaration
|
|
1008
|
+
const readStatement = writer.makeCast(writer.makeMethodCall(`${deserializerName}`, `read${qualifiedName(this.declaration, "_")}`, []), idl.createReferenceType(this.declaration));
|
|
907
1009
|
return assigneer(readStatement);
|
|
908
1010
|
}
|
|
909
1011
|
nativeType() {
|
|
@@ -154,7 +154,8 @@ export declare enum MethodModifier {
|
|
|
154
154
|
GETTER = 6,
|
|
155
155
|
SETTER = 7,
|
|
156
156
|
THROWS = 8,
|
|
157
|
-
FREE = 9
|
|
157
|
+
FREE = 9,
|
|
158
|
+
FORCE_CONTEXT = 10
|
|
158
159
|
}
|
|
159
160
|
export declare enum ClassModifier {
|
|
160
161
|
PUBLIC = 0,
|
|
@@ -172,6 +173,7 @@ export declare class Method {
|
|
|
172
173
|
signature: MethodSignature;
|
|
173
174
|
modifiers: MethodModifier[] | undefined;
|
|
174
175
|
generics?: string[] | undefined;
|
|
176
|
+
private static knownReferenceTypes;
|
|
175
177
|
constructor(name: string, signature: MethodSignature, modifiers?: MethodModifier[] | undefined, generics?: string[] | undefined);
|
|
176
178
|
}
|
|
177
179
|
export declare class PrintHint {
|
|
@@ -234,7 +236,13 @@ export declare abstract class LanguageWriter {
|
|
|
234
236
|
abstract writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
|
|
235
237
|
abstract writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
236
238
|
abstract writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
237
|
-
abstract writeProperty(propName: string, propType: idl.IDLType,
|
|
239
|
+
abstract writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
|
|
240
|
+
method: Method;
|
|
241
|
+
op?: () => void;
|
|
242
|
+
}, setter?: {
|
|
243
|
+
method: Method;
|
|
244
|
+
op: () => void;
|
|
245
|
+
}): void;
|
|
238
246
|
abstract writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
239
247
|
abstract writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
240
248
|
abstract makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression | undefined, isDeclared: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
|
|
@@ -263,7 +271,7 @@ export declare abstract class LanguageWriter {
|
|
|
263
271
|
abstract get supportedFieldModifiers(): FieldModifier[];
|
|
264
272
|
abstract enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
|
|
265
273
|
abstract ordinalFromEnum(value: LanguageExpression, enumReference: idl.IDLType): LanguageExpression;
|
|
266
|
-
abstract makeEnumCast(
|
|
274
|
+
abstract makeEnumCast(enumEntry: idl.IDLEnum, enumName: string): string;
|
|
267
275
|
abstract getNodeName(type: idl.IDLNode): string;
|
|
268
276
|
abstract fork(options?: {
|
|
269
277
|
resolver?: ReferenceResolver;
|
|
@@ -315,7 +323,6 @@ export declare abstract class LanguageWriter {
|
|
|
315
323
|
makeString(value: string): LanguageExpression;
|
|
316
324
|
makeNaryOp(op: string, args: LanguageExpression[]): LanguageExpression;
|
|
317
325
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
318
|
-
tryWriteQuick(method: Method): void;
|
|
319
326
|
writeNativeMethodDeclaration(method: Method): void;
|
|
320
327
|
writeUnsafeNativeMethodDeclaration(name: string, signature: MethodSignature): void;
|
|
321
328
|
pushIndent(): void;
|
|
@@ -331,7 +338,7 @@ export declare abstract class LanguageWriter {
|
|
|
331
338
|
/**
|
|
332
339
|
* TODO: replace me with {@link makeUnsafeCast_}
|
|
333
340
|
*/
|
|
334
|
-
makeUnsafeCast(
|
|
341
|
+
makeUnsafeCast(param: string): string;
|
|
335
342
|
makeUnsafeCast_(value: LanguageExpression, type: idl.IDLType, typeOptions?: PrintHint): string;
|
|
336
343
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
337
344
|
makeDiscriminatorFromFields(convertor: {
|
|
@@ -346,6 +353,7 @@ export declare abstract class LanguageWriter {
|
|
|
346
353
|
discriminatorFromExpressions(value: string, runtimeType: RuntimeType, exprs: LanguageExpression[]): LanguageExpression;
|
|
347
354
|
makeDiscriminatorConvertor(_convertor: ArgConvertor, _value: string, _index: number): LanguageExpression | undefined;
|
|
348
355
|
makeNot(expr: LanguageExpression): LanguageExpression;
|
|
356
|
+
makeSerializedBufferGetter(serializer: string): LanguageExpression;
|
|
349
357
|
makeEquals(args: LanguageExpression[]): LanguageExpression;
|
|
350
358
|
castToInt(value: string, bitness: 8 | 32): string;
|
|
351
359
|
castToBoolean(value: string): string;
|
|
@@ -317,6 +317,7 @@ export var MethodModifier;
|
|
|
317
317
|
MethodModifier[MethodModifier["SETTER"] = 7] = "SETTER";
|
|
318
318
|
MethodModifier[MethodModifier["THROWS"] = 8] = "THROWS";
|
|
319
319
|
MethodModifier[MethodModifier["FREE"] = 9] = "FREE";
|
|
320
|
+
MethodModifier[MethodModifier["FORCE_CONTEXT"] = 10] = "FORCE_CONTEXT";
|
|
320
321
|
})(MethodModifier || (MethodModifier = {}));
|
|
321
322
|
export var ClassModifier;
|
|
322
323
|
(function (ClassModifier) {
|
|
@@ -339,6 +340,10 @@ export class Method {
|
|
|
339
340
|
this.generics = generics;
|
|
340
341
|
}
|
|
341
342
|
}
|
|
343
|
+
// Mostly for synthetic methods.
|
|
344
|
+
Method.knownReferenceTypes = [
|
|
345
|
+
'KInt', 'KPointer', 'undefined' /* This one looks like a bug */
|
|
346
|
+
];
|
|
342
347
|
export class PrintHint {
|
|
343
348
|
constructor(hint) {
|
|
344
349
|
this.hint = hint;
|
|
@@ -565,9 +570,7 @@ export class LanguageWriter {
|
|
|
565
570
|
makeStatement(expr) {
|
|
566
571
|
return new ExpressionStatement(expr);
|
|
567
572
|
}
|
|
568
|
-
tryWriteQuick(method) { }
|
|
569
573
|
writeNativeMethodDeclaration(method) {
|
|
570
|
-
this.tryWriteQuick(method);
|
|
571
574
|
this.writeMethodDeclaration(method.name, method.signature);
|
|
572
575
|
}
|
|
573
576
|
writeUnsafeNativeMethodDeclaration(name, signature) {
|
|
@@ -609,7 +612,7 @@ export class LanguageWriter {
|
|
|
609
612
|
/**
|
|
610
613
|
* TODO: replace me with {@link makeUnsafeCast_}
|
|
611
614
|
*/
|
|
612
|
-
makeUnsafeCast(
|
|
615
|
+
makeUnsafeCast(param) {
|
|
613
616
|
return `unsafeCast<int32>(${param})`;
|
|
614
617
|
}
|
|
615
618
|
makeUnsafeCast_(value, type, typeOptions) {
|
|
@@ -660,6 +663,9 @@ export class LanguageWriter {
|
|
|
660
663
|
makeNot(expr) {
|
|
661
664
|
return this.makeString(`!(${expr.asString()})`);
|
|
662
665
|
}
|
|
666
|
+
makeSerializedBufferGetter(serializer) {
|
|
667
|
+
return this.makeMethodCall(serializer, `asBuffer`, []);
|
|
668
|
+
}
|
|
663
669
|
makeEquals(args) {
|
|
664
670
|
return this.makeNaryOp("===", args);
|
|
665
671
|
}
|
|
@@ -25,7 +25,7 @@ export declare class GenericCppConvertor implements NodeConvertor<ConvertResult>
|
|
|
25
25
|
convertTypeReference(type: idl.IDLReferenceType): ConvertResult;
|
|
26
26
|
convertTypeParameter(type: idl.IDLTypeParameterType): ConvertResult;
|
|
27
27
|
convertPrimitiveType(type: idl.IDLPrimitiveType): ConvertResult;
|
|
28
|
-
private
|
|
28
|
+
private qualifiedName;
|
|
29
29
|
private computeTargetTypeLiteralName;
|
|
30
30
|
}
|
|
31
31
|
export declare class CppConvertor extends GenericCppConvertor implements IdlNameConvertor {
|
|
@@ -39,34 +39,34 @@ export class GenericCppConvertor {
|
|
|
39
39
|
switch (node.subkind) {
|
|
40
40
|
case idl.IDLInterfaceSubkind.AnonymousInterface:
|
|
41
41
|
return node.name
|
|
42
|
-
? this.make(node
|
|
42
|
+
? this.make(this.qualifiedName(node))
|
|
43
43
|
: this.make(this.computeTargetTypeLiteralName(node), true);
|
|
44
44
|
case idl.IDLInterfaceSubkind.Interface:
|
|
45
45
|
case idl.IDLInterfaceSubkind.Class:
|
|
46
46
|
if (isInIdlizeInternal(node)) {
|
|
47
|
-
return this.make(node
|
|
47
|
+
return this.make(this.qualifiedName(node), true);
|
|
48
48
|
}
|
|
49
|
-
return this.make(node
|
|
49
|
+
return this.make(this.qualifiedName(node));
|
|
50
50
|
case idl.IDLInterfaceSubkind.Tuple:
|
|
51
51
|
return node.name
|
|
52
|
-
? this.make(node
|
|
52
|
+
? this.make(this.qualifiedName(node))
|
|
53
53
|
: this.make(`Tuple_${node.properties.map(it => this.convertNode(idl.maybeOptional(it.type, it.isOptional)).text).join("_")}`, true);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
convertEnum(node) {
|
|
57
|
-
return this.make(this.
|
|
57
|
+
return this.make(this.qualifiedName(node));
|
|
58
58
|
}
|
|
59
59
|
convertTypedef(node) {
|
|
60
|
-
return this.make(node
|
|
60
|
+
return this.make(this.qualifiedName(node));
|
|
61
61
|
}
|
|
62
62
|
convertCallback(node) {
|
|
63
|
-
return this.make(generatorConfiguration().LibraryPrefix + node
|
|
63
|
+
return this.make(generatorConfiguration().LibraryPrefix + this.qualifiedName(node), true);
|
|
64
64
|
}
|
|
65
65
|
convertMethod(node) {
|
|
66
66
|
return this.make(node.name);
|
|
67
67
|
}
|
|
68
68
|
convertConstant(node) {
|
|
69
|
-
return this.make(node
|
|
69
|
+
return this.make(this.qualifiedName(node));
|
|
70
70
|
}
|
|
71
71
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
72
72
|
convertOptional(type) {
|
|
@@ -140,19 +140,20 @@ export class GenericCppConvertor {
|
|
|
140
140
|
case idl.IDLBooleanType: return this.make(`Boolean`);
|
|
141
141
|
case idl.IDLBigintType: return this.make(`UInt64`); // TODO add arbitrary precision numeric type
|
|
142
142
|
case idl.IDLPointerType: return this.make('NativePointer');
|
|
143
|
+
case idl.IDLCustomObjectType: return this.make('CustomObject');
|
|
143
144
|
case idl.IDLUnknownType:
|
|
144
|
-
case idl.
|
|
145
|
-
case idl.IDLAnyType: return this.make(`CustomObject`);
|
|
145
|
+
case idl.IDLAnyType: return this.make(`Object`);
|
|
146
146
|
case idl.IDLUndefinedType: return this.make(`Undefined`);
|
|
147
147
|
case idl.IDLLengthType: return this.make(`Length`);
|
|
148
148
|
case idl.IDLFunctionType: return this.make(`Function`);
|
|
149
149
|
case idl.IDLDate: return this.make(`Date`);
|
|
150
150
|
case idl.IDLBufferType: return this.make('Buffer');
|
|
151
151
|
case idl.IDLPointerType: return this.make('Pointer');
|
|
152
|
+
case idl.IDLSerializerBuffer: return { text: 'KSerializerBuffer', noPrefix: true };
|
|
152
153
|
}
|
|
153
154
|
throw new Error(`Unmapped primitive type ${idl.DebugUtils.debugPrintType(type)}`);
|
|
154
155
|
}
|
|
155
|
-
|
|
156
|
+
qualifiedName(target) {
|
|
156
157
|
return qualifiedName(target, "_");
|
|
157
158
|
}
|
|
158
159
|
computeTargetTypeLiteralName(decl) {
|
|
@@ -218,7 +219,8 @@ export class CppInteropArgConvertor extends InteropArgConvertor {
|
|
|
218
219
|
case idl.IDLBooleanType: return PrimitiveTypesInstance.Boolean.getText();
|
|
219
220
|
case idl.IDLI32Type: return PrimitiveTypesInstance.Int32.getText();
|
|
220
221
|
case idl.IDLNumberType: return "KInteropNumber";
|
|
221
|
-
case idl.
|
|
222
|
+
case idl.IDLSerializerBuffer: return "KSerializerBuffer";
|
|
223
|
+
case idl.IDLBufferType: return "KInteropBuffer";
|
|
222
224
|
case idl.IDLLengthType: return "KLength";
|
|
223
225
|
case idl.IDLFunctionType: return PrimitiveTypesInstance.Int32.getText();
|
|
224
226
|
case idl.IDLDate: return PrimitiveTypesInstance.Int64.getText();
|
|
@@ -262,7 +264,7 @@ export class CppReturnTypeConvertor {
|
|
|
262
264
|
convertTypeReference(type) {
|
|
263
265
|
const decl = this.resolver.resolveTypeReference(type);
|
|
264
266
|
if (decl && idl.isInterface(decl) && isMaterialized(decl, this.resolver)) {
|
|
265
|
-
return generatorTypePrefix() + decl
|
|
267
|
+
return generatorTypePrefix() + qualifiedName(decl, "_");
|
|
266
268
|
}
|
|
267
269
|
return this.convertor.convert(type);
|
|
268
270
|
}
|
|
@@ -76,7 +76,6 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
76
76
|
return 'number';
|
|
77
77
|
case idl.IDLStringType: return 'string';
|
|
78
78
|
case idl.IDLFunctionType: return 'Object';
|
|
79
|
-
case idl.IDLBufferType: return 'NativeBuffer';
|
|
80
79
|
case idl.IDLBigintType: return 'long';
|
|
81
80
|
}
|
|
82
81
|
return super.convertPrimitiveType(type);
|
|
@@ -88,6 +88,9 @@ export class InteropReturnTypeConvertor {
|
|
|
88
88
|
}
|
|
89
89
|
return KInteropReturnBuffer;
|
|
90
90
|
}
|
|
91
|
+
if (idl.isEnum(decl)) {
|
|
92
|
+
return PrimitiveTypesInstance.Int32.getText();
|
|
93
|
+
}
|
|
91
94
|
}
|
|
92
95
|
return "void";
|
|
93
96
|
}
|
|
@@ -116,6 +119,7 @@ export class InteropArgConvertor {
|
|
|
116
119
|
case idl.IDLF32Type: return "KFloat";
|
|
117
120
|
case idl.IDLNumberType: return 'KInteropNumber';
|
|
118
121
|
case idl.IDLBigintType: return 'KLong';
|
|
122
|
+
case idl.IDLSerializerBuffer: return 'KSerializerBuffer';
|
|
119
123
|
case idl.IDLBooleanType:
|
|
120
124
|
case idl.IDLFunctionType: return 'KInt';
|
|
121
125
|
case idl.IDLStringType: return 'KStringPtr';
|
|
@@ -122,6 +122,7 @@ export class TSTypeNameConvertor {
|
|
|
122
122
|
case idl.IDLAnyType: return 'any';
|
|
123
123
|
case idl.IDLUndefinedType: return 'undefined';
|
|
124
124
|
case idl.IDLPointerType: return 'KPointer';
|
|
125
|
+
case idl.IDLSerializerBuffer: return 'KSerializerBuffer';
|
|
125
126
|
case idl.IDLVoidType: return 'void';
|
|
126
127
|
case idl.IDLBooleanType: return 'boolean';
|
|
127
128
|
case idl.IDLI32Type:
|
|
@@ -145,7 +146,7 @@ export class TSTypeNameConvertor {
|
|
|
145
146
|
case idl.IDLDate:
|
|
146
147
|
return 'Date';
|
|
147
148
|
case idl.IDLBufferType:
|
|
148
|
-
return
|
|
149
|
+
return 'NativeBuffer';
|
|
149
150
|
case idl.IDLInteropReturnBufferType:
|
|
150
151
|
return `KInteropReturnBuffer`;
|
|
151
152
|
}
|
|
@@ -89,15 +89,23 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
89
89
|
writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
90
90
|
writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
|
|
91
91
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
92
|
-
writeProperty(propName: string, propType: idl.IDLType, mutable?: boolean, getterLambda?: (writer: this) => void, setterLambda?: (writer: this) => void): void;
|
|
93
92
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
94
93
|
writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
95
94
|
writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
95
|
+
writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
|
|
96
|
+
method: Method;
|
|
97
|
+
op?: () => void;
|
|
98
|
+
}, setter?: {
|
|
99
|
+
method: Method;
|
|
100
|
+
op: () => void;
|
|
101
|
+
}): void;
|
|
102
|
+
writeGetterImplementation(method: Method, op?: (writer: this) => void): void;
|
|
103
|
+
writeSetterImplementation(method: Method, op: (writer: this) => void): void;
|
|
96
104
|
writeCJForeign(op: (writer: CJLanguageWriter) => void): void;
|
|
97
105
|
private writeDeclaration;
|
|
98
106
|
writeNativeFunctionCall(printer: LanguageWriter, name: string, signature: MethodSignature): void;
|
|
99
107
|
writeNativeMethodDeclaration(method: Method): void;
|
|
100
|
-
makeEnumCast(
|
|
108
|
+
makeEnumCast(_enumEntry: idl.IDLEnum, enumName: string): string;
|
|
101
109
|
makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
|
|
102
110
|
makeClassInit(type: idl.IDLType, parameters: LanguageExpression[]): LanguageExpression;
|
|
103
111
|
makeArrayInit(type: idl.IDLContainerType, size?: number): LanguageExpression;
|
|
@@ -348,33 +348,6 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
348
348
|
this.popIndent();
|
|
349
349
|
this.printer.print(`}`);
|
|
350
350
|
}
|
|
351
|
-
writeProperty(propName, propType, mutable, getterLambda, setterLambda) {
|
|
352
|
-
let shortName = propName.concat("_container");
|
|
353
|
-
if (!getterLambda) {
|
|
354
|
-
this.print(`private var ${shortName}: ${this.getNodeName(propType)}`);
|
|
355
|
-
}
|
|
356
|
-
this.print(`${mutable ? "mut " : ""}prop ${propName}: ${this.getNodeName(propType)} {`);
|
|
357
|
-
this.pushIndent();
|
|
358
|
-
this.print(`get() {`);
|
|
359
|
-
this.pushIndent();
|
|
360
|
-
if (getterLambda) {
|
|
361
|
-
getterLambda(this);
|
|
362
|
-
}
|
|
363
|
-
else {
|
|
364
|
-
this.print(`return ${shortName}`);
|
|
365
|
-
}
|
|
366
|
-
this.popIndent();
|
|
367
|
-
this.print(`}`);
|
|
368
|
-
if (mutable) {
|
|
369
|
-
this.print(`set(x) { ${shortName} = x }`);
|
|
370
|
-
this.pushIndent();
|
|
371
|
-
if (setterLambda)
|
|
372
|
-
setterLambda(this);
|
|
373
|
-
this.popIndent();
|
|
374
|
-
}
|
|
375
|
-
this.popIndent();
|
|
376
|
-
this.print(`}`);
|
|
377
|
-
}
|
|
378
351
|
writeTypeDeclaration(decl) {
|
|
379
352
|
throw new Error(`writeTypeDeclaration not implemented`);
|
|
380
353
|
}
|
|
@@ -389,6 +362,51 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
389
362
|
this.popIndent();
|
|
390
363
|
this.printer.print(`}`);
|
|
391
364
|
}
|
|
365
|
+
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
366
|
+
let containerName = propName.concat("_container");
|
|
367
|
+
let truePropName = this.escapeKeyword(propName);
|
|
368
|
+
if (getter) {
|
|
369
|
+
if (!getter.op) {
|
|
370
|
+
this.print(`private var ${containerName}: ${this.getNodeName(propType)}`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
374
|
+
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
375
|
+
this.print(`public ${isMutable ? "mut " : ""}${isStatic ? "static " : "open "}prop ${truePropName}: ${this.getNodeName(propType)}`);
|
|
376
|
+
if (getter) {
|
|
377
|
+
this.print('{');
|
|
378
|
+
this.pushIndent();
|
|
379
|
+
this.writeGetterImplementation(getter.method, getter.op);
|
|
380
|
+
if (isMutable) {
|
|
381
|
+
if (setter) {
|
|
382
|
+
this.writeSetterImplementation(setter.method, setter ? setter.op : (writer) => { this.print(`${containerName} = ${truePropName}`); });
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
this.print(`set(${truePropName}) {`);
|
|
386
|
+
this.pushIndent();
|
|
387
|
+
this.print(`${containerName} = ${truePropName}`);
|
|
388
|
+
this.popIndent();
|
|
389
|
+
this.print(`}`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
this.popIndent();
|
|
393
|
+
this.print('}');
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
writeGetterImplementation(method, op) {
|
|
397
|
+
this.print(`get() {`);
|
|
398
|
+
this.pushIndent();
|
|
399
|
+
op ? op(this) : this.print(`return ${method.signature.argsNames.map(arg => `${arg}_container`).join(', ')}`);
|
|
400
|
+
this.popIndent();
|
|
401
|
+
this.print('}');
|
|
402
|
+
}
|
|
403
|
+
writeSetterImplementation(method, op) {
|
|
404
|
+
this.print(`set(${method.signature.argsNames.join(', ')}) {`);
|
|
405
|
+
this.pushIndent();
|
|
406
|
+
op(this);
|
|
407
|
+
this.popIndent();
|
|
408
|
+
this.print('}');
|
|
409
|
+
}
|
|
392
410
|
writeCJForeign(op) {
|
|
393
411
|
this.print(`foreign {`);
|
|
394
412
|
this.pushIndent();
|
|
@@ -399,7 +417,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
399
417
|
writeDeclaration(name, signature, modifiers, postfix) {
|
|
400
418
|
let prefix = modifiers === null || modifiers === void 0 ? void 0 : modifiers.filter(it => this.supportedModifiers.includes(it)).map(it => this.mapMethodModifier(it)).join(" ");
|
|
401
419
|
prefix = prefix ? prefix + " " : "";
|
|
402
|
-
this.print(`${prefix}func ${name}(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(it)}`).join(", ")}): ${this.getNodeName(signature.returnType)}${postfix !== null && postfix !== void 0 ? postfix : ""}`);
|
|
420
|
+
this.print(`${prefix}${((modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.SETTER)) || (modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.GETTER))) ? '' : 'func '}${name}(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(it)}`).join(", ")}): ${this.getNodeName(signature.returnType)}${postfix !== null && postfix !== void 0 ? postfix : ""}`);
|
|
403
421
|
}
|
|
404
422
|
writeNativeFunctionCall(printer, name, signature) {
|
|
405
423
|
printer.print(`return unsafe { ${name}(${signature.args.map((it, index) => `${signature.argName(index)}`).join(", ")}) }`);
|
|
@@ -410,7 +428,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
410
428
|
name = name.startsWith('_') ? name.slice(1) : name;
|
|
411
429
|
this.print(`func ${name}(${signture}): ${this.typeForeignConvertor.convert(method.signature.returnType)}`);
|
|
412
430
|
}
|
|
413
|
-
makeEnumCast(
|
|
431
|
+
makeEnumCast(_enumEntry, enumName) {
|
|
414
432
|
return `${enumName}.value`;
|
|
415
433
|
}
|
|
416
434
|
makeAssign(variableName, type, expr, isDeclared = true, isConst = true) {
|
|
@@ -7,6 +7,7 @@ import { IdlNameConvertor } from "../nameConvertor";
|
|
|
7
7
|
import { RuntimeType } from "../common";
|
|
8
8
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
9
9
|
import { ReferenceResolver } from "../../peer-generation/ReferenceResolver";
|
|
10
|
+
import * as idl from "../../idl";
|
|
10
11
|
export declare class CppCastExpression implements LanguageExpression {
|
|
11
12
|
convertor: IdlNameConvertor;
|
|
12
13
|
value: LanguageExpression;
|
|
@@ -45,7 +46,13 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
45
46
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
46
47
|
writeFieldDeclaration(name: string, type: IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
47
48
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
48
|
-
writeProperty(propName: string, propType: IDLType,
|
|
49
|
+
writeProperty(propName: string, propType: IDLType, modifiers: FieldModifier[], getter?: {
|
|
50
|
+
method: Method;
|
|
51
|
+
op: () => void;
|
|
52
|
+
}, setter?: {
|
|
53
|
+
method: Method;
|
|
54
|
+
op: () => void;
|
|
55
|
+
}): void;
|
|
49
56
|
writeTypeDeclaration(decl: IDLTypedef): void;
|
|
50
57
|
writeConstant(constName: string, constType: IDLType, constVal?: string): void;
|
|
51
58
|
/**
|
|
@@ -102,9 +109,9 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
102
109
|
get supportedFieldModifiers(): FieldModifier[];
|
|
103
110
|
enumFromOrdinal(value: LanguageExpression, type: IDLType): LanguageExpression;
|
|
104
111
|
ordinalFromEnum(value: LanguageExpression, _: IDLType): LanguageExpression;
|
|
105
|
-
makeUnsafeCast(
|
|
112
|
+
makeUnsafeCast(param: string): string;
|
|
106
113
|
makeUnsafeCast_(value: LanguageExpression, type: IDLType, typeOptions?: PrintHint): string;
|
|
107
|
-
makeEnumCast(
|
|
114
|
+
makeEnumCast(enumEntry: idl.IDLEnum, value: string): string;
|
|
108
115
|
escapeKeyword(name: string): string;
|
|
109
116
|
makeEnumEntity(enumEntity: IDLEnum, isExport: boolean): LanguageStatement;
|
|
110
117
|
private decayTypeName;
|