@idlizer/core 2.0.41 → 2.1.0
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 +4 -1
- package/build/lib/src/LanguageWriters/ArgConvertors.js +61 -13
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +7 -5
- package/build/lib/src/LanguageWriters/LanguageWriter.js +8 -3
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +2 -1
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +27 -12
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +3 -1
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +3 -1
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +4 -4
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +11 -1
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +44 -1
- package/build/lib/src/LanguageWriters/index.d.ts +2 -2
- package/build/lib/src/LanguageWriters/index.js +4 -5
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +4 -4
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +6 -5
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +4 -3
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +5 -8
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +6 -5
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +26 -30
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +3 -3
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +4 -4
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +3 -3
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +21 -12
- package/build/lib/src/config.d.ts +958 -12
- package/build/lib/src/config.js +24 -2
- package/build/lib/src/configDescriber.d.ts +85 -0
- package/build/lib/src/configDescriber.js +297 -0
- package/build/lib/src/from-idl/DtsPrinter.js +4 -2
- package/build/lib/src/from-idl/IDLLinter.d.ts +24 -0
- package/build/lib/src/from-idl/IDLLinter.js +81 -0
- package/build/lib/src/from-idl/deserialize.js +41 -4
- package/build/lib/src/from-idl/webidl2-utils.d.ts +1 -0
- package/build/lib/src/from-idl/webidl2-utils.js +3 -0
- package/build/lib/src/idl.d.ts +23 -26
- package/build/lib/src/idl.js +31 -29
- package/build/lib/src/idlize.d.ts +10 -1
- package/build/lib/src/idlize.js +54 -26
- package/build/lib/src/index.d.ts +2 -0
- package/build/lib/src/index.js +2 -0
- package/build/lib/src/options.d.ts +1 -0
- package/build/lib/src/peer-generation/Materialized.d.ts +2 -1
- package/build/lib/src/peer-generation/Materialized.js +3 -2
- package/build/lib/src/peer-generation/PeerFile.d.ts +1 -2
- package/build/lib/src/peer-generation/PeerFile.js +1 -2
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +0 -1
- package/build/lib/src/peer-generation/PeerLibrary.js +16 -3
- package/build/lib/src/peer-generation/PeerMethod.js +2 -16
- package/build/lib/src/peer-generation/idl/common.js +2 -2
- package/build/lib/src/peer-generation/isMaterialized.d.ts +1 -0
- package/build/lib/src/peer-generation/isMaterialized.js +21 -0
- package/build/lib/src/util.d.ts +1 -0
- package/build/lib/src/util.js +9 -0
- package/package.json +2 -2
|
@@ -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;
|
|
@@ -22,6 +23,8 @@ export interface ArgConvertor {
|
|
|
22
23
|
getMembers(): string[];
|
|
23
24
|
getObjectAccessor(languge: Language, value: string, args?: Record<string, string>, writer?: LanguageWriter): string;
|
|
24
25
|
}
|
|
26
|
+
export declare function isVMContextMethod(method: Method): boolean;
|
|
27
|
+
export declare function isDirectMethod(method: Method, library: PeerLibrary): boolean;
|
|
25
28
|
export declare abstract class BaseArgConvertor implements ArgConvertor {
|
|
26
29
|
idlType: idl.IDLType;
|
|
27
30
|
runtimeTypes: RuntimeType[];
|
|
@@ -14,15 +14,65 @@
|
|
|
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
|
+
function isDirectConvertedType(originalType, library) {
|
|
27
|
+
if (originalType == undefined)
|
|
28
|
+
return true; // TODO: is it correct?
|
|
29
|
+
if (originalType == idl.IDLInteropReturnBufferType)
|
|
30
|
+
return false;
|
|
31
|
+
if (originalType == idl.IDLThisType)
|
|
32
|
+
return true;
|
|
33
|
+
let convertor = library.typeConvertor("x", originalType, false);
|
|
34
|
+
// Resolve aliases.
|
|
35
|
+
while (convertor instanceof TypeAliasConvertor) {
|
|
36
|
+
convertor = convertor.convertor;
|
|
37
|
+
}
|
|
38
|
+
// Temporary!
|
|
39
|
+
if (convertor instanceof ArrayConvertor ||
|
|
40
|
+
convertor instanceof MapConvertor ||
|
|
41
|
+
convertor instanceof CustomTypeConvertor ||
|
|
42
|
+
convertor instanceof CallbackConvertor ||
|
|
43
|
+
convertor instanceof AggregateConvertor ||
|
|
44
|
+
convertor instanceof UnionConvertor) {
|
|
45
|
+
// try { console.log(`convertor is ${convertor.constructor.name} for ${JSON.stringify(originalType)}`) } catch (e) {}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
let type = convertor.interopType();
|
|
49
|
+
// TODO: make 'number' be direct!
|
|
50
|
+
let result = type == idl.IDLI8Type || type == idl.IDLU8Type
|
|
51
|
+
|| type == idl.IDLI16Type || type == idl.IDLU16Type
|
|
52
|
+
|| type == idl.IDLI32Type || type == idl.IDLU32Type
|
|
53
|
+
|| type == idl.IDLF32Type
|
|
54
|
+
|| type == idl.IDLI64Type || type == idl.IDLU64Type
|
|
55
|
+
|| type == idl.IDLPointerType
|
|
56
|
+
|| type == idl.IDLBooleanType
|
|
57
|
+
|| type == idl.IDLVoidType
|
|
58
|
+
|| type == idl.IDLUndefinedType;
|
|
59
|
+
// try { if (!result) console.log(`type ${JSON.stringify(type)} is not direct`) } catch (e) {}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
export function isVMContextMethod(method) {
|
|
63
|
+
var _a, _b;
|
|
64
|
+
return !!idl.asPromise(method.signature.returnType) ||
|
|
65
|
+
!!((_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.THROWS)) ||
|
|
66
|
+
!!((_b = method.modifiers) === null || _b === void 0 ? void 0 : _b.includes(MethodModifier.FORCE_CONTEXT));
|
|
67
|
+
}
|
|
68
|
+
export function isDirectMethod(method, library) {
|
|
69
|
+
if (isVMContextMethod(method))
|
|
70
|
+
return false;
|
|
71
|
+
let result = isDirectConvertedType(method.signature.returnType, library) &&
|
|
72
|
+
method.signature.args.every((arg) => isDirectConvertedType(arg, library));
|
|
73
|
+
//if (!result) console.log(`method ${method.name} is not direct`)
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
26
76
|
export class BaseArgConvertor {
|
|
27
77
|
constructor(idlType, runtimeTypes, isScoped, useArray, param) {
|
|
28
78
|
this.idlType = idlType;
|
|
@@ -158,14 +208,10 @@ export class EnumConvertor extends BaseArgConvertor {
|
|
|
158
208
|
this.enumEntry = enumEntry;
|
|
159
209
|
}
|
|
160
210
|
convertorArg(param, writer) {
|
|
161
|
-
return writer.makeEnumCast(writer.escapeKeyword(param)
|
|
211
|
+
return writer.makeEnumCast(this.enumEntry, writer.escapeKeyword(param));
|
|
162
212
|
}
|
|
163
213
|
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]);
|
|
214
|
+
writer.writeMethodCall(`${param}Serializer`, "writeInt32", [writer.makeEnumCast(this.enumEntry, value)]);
|
|
169
215
|
}
|
|
170
216
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
171
217
|
const readExpr = writer.makeMethodCall(`${deserializerName}`, "readInt32", []);
|
|
@@ -456,7 +502,9 @@ export class InterfaceConvertor extends BaseArgConvertor {
|
|
|
456
502
|
return this.idlType;
|
|
457
503
|
}
|
|
458
504
|
interopType() {
|
|
459
|
-
|
|
505
|
+
// Actually shouldn't be used!
|
|
506
|
+
// throw new Error("Must never be used")
|
|
507
|
+
return idl.IDLObjectType;
|
|
460
508
|
}
|
|
461
509
|
isPointerType() {
|
|
462
510
|
return true;
|
|
@@ -889,7 +937,7 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
889
937
|
convertorArg(param, writer) {
|
|
890
938
|
switch (writer.language) {
|
|
891
939
|
case Language.CPP:
|
|
892
|
-
return `static_cast<${generatorTypePrefix()}${this.declaration
|
|
940
|
+
return `static_cast<${generatorTypePrefix()}${qualifiedName(this.declaration, "_")}>(${param})`;
|
|
893
941
|
case Language.JAVA:
|
|
894
942
|
case Language.CJ:
|
|
895
943
|
return `MaterializedBase.toPeerPtr(${param})`;
|
|
@@ -898,12 +946,12 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
898
946
|
}
|
|
899
947
|
}
|
|
900
948
|
convertorSerialize(param, value, printer) {
|
|
901
|
-
printer.writeStatement(printer.makeStatement(printer.makeMethodCall(`${param}Serializer`, `write${this.declaration
|
|
949
|
+
printer.writeStatement(printer.makeStatement(printer.makeMethodCall(`${param}Serializer`, `write${qualifiedName(this.declaration, "_")}`, [
|
|
902
950
|
printer.makeString(value)
|
|
903
951
|
])));
|
|
904
952
|
}
|
|
905
953
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
906
|
-
const readStatement = writer.makeCast(writer.makeMethodCall(`${deserializerName}`, `read${this.declaration
|
|
954
|
+
const readStatement = writer.makeCast(writer.makeMethodCall(`${deserializerName}`, `read${qualifiedName(this.declaration, "_")}`, []), idl.createReferenceType(this.declaration));
|
|
907
955
|
return assigneer(readStatement);
|
|
908
956
|
}
|
|
909
957
|
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 {
|
|
@@ -227,7 +229,7 @@ export declare abstract class LanguageWriter {
|
|
|
227
229
|
stringId: string | undefined;
|
|
228
230
|
numberId: number;
|
|
229
231
|
}[], op?: (writer: this) => void): void;
|
|
230
|
-
abstract writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], isDeclared?: boolean): void;
|
|
232
|
+
abstract writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[], isDeclared?: boolean): void;
|
|
231
233
|
abstract writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
232
234
|
abstract writeFunctionDeclaration(name: string, signature: MethodSignature): void;
|
|
233
235
|
abstract writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void): void;
|
|
@@ -263,7 +265,7 @@ export declare abstract class LanguageWriter {
|
|
|
263
265
|
abstract get supportedFieldModifiers(): FieldModifier[];
|
|
264
266
|
abstract enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
|
|
265
267
|
abstract ordinalFromEnum(value: LanguageExpression, enumReference: idl.IDLType): LanguageExpression;
|
|
266
|
-
abstract makeEnumCast(
|
|
268
|
+
abstract makeEnumCast(enumEntry: idl.IDLEnum, enumName: string): string;
|
|
267
269
|
abstract getNodeName(type: idl.IDLNode): string;
|
|
268
270
|
abstract fork(options?: {
|
|
269
271
|
resolver?: ReferenceResolver;
|
|
@@ -315,7 +317,7 @@ export declare abstract class LanguageWriter {
|
|
|
315
317
|
makeString(value: string): LanguageExpression;
|
|
316
318
|
makeNaryOp(op: string, args: LanguageExpression[]): LanguageExpression;
|
|
317
319
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
318
|
-
writeNativeMethodDeclaration(
|
|
320
|
+
writeNativeMethodDeclaration(method: Method): void;
|
|
319
321
|
writeUnsafeNativeMethodDeclaration(name: string, signature: MethodSignature): void;
|
|
320
322
|
pushIndent(): void;
|
|
321
323
|
popIndent(): void;
|
|
@@ -330,7 +332,7 @@ export declare abstract class LanguageWriter {
|
|
|
330
332
|
/**
|
|
331
333
|
* TODO: replace me with {@link makeUnsafeCast_}
|
|
332
334
|
*/
|
|
333
|
-
makeUnsafeCast(
|
|
335
|
+
makeUnsafeCast(param: string): string;
|
|
334
336
|
makeUnsafeCast_(value: LanguageExpression, type: idl.IDLType, typeOptions?: PrintHint): string;
|
|
335
337
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
336
338
|
makeDiscriminatorFromFields(convertor: {
|
|
@@ -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,8 +570,8 @@ export class LanguageWriter {
|
|
|
565
570
|
makeStatement(expr) {
|
|
566
571
|
return new ExpressionStatement(expr);
|
|
567
572
|
}
|
|
568
|
-
writeNativeMethodDeclaration(
|
|
569
|
-
this.writeMethodDeclaration(name, signature);
|
|
573
|
+
writeNativeMethodDeclaration(method) {
|
|
574
|
+
this.writeMethodDeclaration(method.name, method.signature);
|
|
570
575
|
}
|
|
571
576
|
writeUnsafeNativeMethodDeclaration(name, signature) {
|
|
572
577
|
return;
|
|
@@ -607,7 +612,7 @@ export class LanguageWriter {
|
|
|
607
612
|
/**
|
|
608
613
|
* TODO: replace me with {@link makeUnsafeCast_}
|
|
609
614
|
*/
|
|
610
|
-
makeUnsafeCast(
|
|
615
|
+
makeUnsafeCast(param) {
|
|
611
616
|
return `unsafeCast<int32>(${param})`;
|
|
612
617
|
}
|
|
613
618
|
makeUnsafeCast_(value, type, typeOptions) {
|
|
@@ -25,11 +25,12 @@ 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 {
|
|
32
32
|
private unwrap;
|
|
33
|
+
private isPrimitiveOrPrimitiveAlias;
|
|
33
34
|
convert(node: idl.IDLNode): string;
|
|
34
35
|
}
|
|
35
36
|
export declare class CppNameConvertor implements IdlNameConvertor {
|
|
@@ -21,6 +21,7 @@ import { maybeTransformManagedCallback } from '../ArgConvertors';
|
|
|
21
21
|
import { qualifiedName } from '../../peer-generation/idl/common';
|
|
22
22
|
import { capitalize } from '../../util';
|
|
23
23
|
import { isMaterialized } from '../../peer-generation/isMaterialized';
|
|
24
|
+
import { isInIdlizeInternal } from '../../idlize';
|
|
24
25
|
export class GenericCppConvertor {
|
|
25
26
|
constructor(resolver) {
|
|
26
27
|
this.resolver = resolver;
|
|
@@ -38,34 +39,34 @@ export class GenericCppConvertor {
|
|
|
38
39
|
switch (node.subkind) {
|
|
39
40
|
case idl.IDLInterfaceSubkind.AnonymousInterface:
|
|
40
41
|
return node.name
|
|
41
|
-
? this.make(node
|
|
42
|
+
? this.make(this.qualifiedName(node))
|
|
42
43
|
: this.make(this.computeTargetTypeLiteralName(node), true);
|
|
43
44
|
case idl.IDLInterfaceSubkind.Interface:
|
|
44
45
|
case idl.IDLInterfaceSubkind.Class:
|
|
45
|
-
if (
|
|
46
|
-
return this.make(node
|
|
46
|
+
if (isInIdlizeInternal(node)) {
|
|
47
|
+
return this.make(this.qualifiedName(node), true);
|
|
47
48
|
}
|
|
48
|
-
return this.make(node
|
|
49
|
+
return this.make(this.qualifiedName(node));
|
|
49
50
|
case idl.IDLInterfaceSubkind.Tuple:
|
|
50
51
|
return node.name
|
|
51
|
-
? this.make(node
|
|
52
|
+
? this.make(this.qualifiedName(node))
|
|
52
53
|
: this.make(`Tuple_${node.properties.map(it => this.convertNode(idl.maybeOptional(it.type, it.isOptional)).text).join("_")}`, true);
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
convertEnum(node) {
|
|
56
|
-
return this.make(this.
|
|
57
|
+
return this.make(this.qualifiedName(node));
|
|
57
58
|
}
|
|
58
59
|
convertTypedef(node) {
|
|
59
|
-
return this.make(node
|
|
60
|
+
return this.make(this.qualifiedName(node));
|
|
60
61
|
}
|
|
61
62
|
convertCallback(node) {
|
|
62
|
-
return this.make(generatorConfiguration().LibraryPrefix + node
|
|
63
|
+
return this.make(generatorConfiguration().LibraryPrefix + this.qualifiedName(node), true);
|
|
63
64
|
}
|
|
64
65
|
convertMethod(node) {
|
|
65
66
|
return this.make(node.name);
|
|
66
67
|
}
|
|
67
68
|
convertConstant(node) {
|
|
68
|
-
return this.make(node
|
|
69
|
+
return this.make(this.qualifiedName(node));
|
|
69
70
|
}
|
|
70
71
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
71
72
|
convertOptional(type) {
|
|
@@ -151,7 +152,7 @@ export class GenericCppConvertor {
|
|
|
151
152
|
}
|
|
152
153
|
throw new Error(`Unmapped primitive type ${idl.DebugUtils.debugPrintType(type)}`);
|
|
153
154
|
}
|
|
154
|
-
|
|
155
|
+
qualifiedName(target) {
|
|
155
156
|
return qualifiedName(target, "_");
|
|
156
157
|
}
|
|
157
158
|
computeTargetTypeLiteralName(decl) {
|
|
@@ -178,9 +179,23 @@ export class CppConvertor extends GenericCppConvertor {
|
|
|
178
179
|
const typePrefix = conf.TypePrefix;
|
|
179
180
|
// TODO remove this ugly hack for CustomObject's
|
|
180
181
|
const convertedToCustomObject = result.text === idl.IDLCustomObjectType.name;
|
|
181
|
-
const libPrefix =
|
|
182
|
+
const libPrefix = this.isPrimitiveOrPrimitiveAlias(type) || convertedToCustomObject ? "" : conf.LibraryPrefix;
|
|
182
183
|
return `${typePrefix}${libPrefix}${result.text}`;
|
|
183
184
|
}
|
|
185
|
+
isPrimitiveOrPrimitiveAlias(type) {
|
|
186
|
+
if (!idl.isType(type))
|
|
187
|
+
return false;
|
|
188
|
+
const { resolver } = this;
|
|
189
|
+
while (type && idl.isReferenceType(type)) {
|
|
190
|
+
const resolved = resolver.resolveTypeReference(type);
|
|
191
|
+
if (!resolved)
|
|
192
|
+
return false;
|
|
193
|
+
if (!idl.isTypedef(resolved))
|
|
194
|
+
break;
|
|
195
|
+
type = resolved.type;
|
|
196
|
+
}
|
|
197
|
+
return idl.isPrimitiveType(type);
|
|
198
|
+
}
|
|
184
199
|
convert(node) {
|
|
185
200
|
return this.unwrap(node, this.convertNode(node));
|
|
186
201
|
}
|
|
@@ -247,7 +262,7 @@ export class CppReturnTypeConvertor {
|
|
|
247
262
|
convertTypeReference(type) {
|
|
248
263
|
const decl = this.resolver.resolveTypeReference(type);
|
|
249
264
|
if (decl && idl.isInterface(decl) && isMaterialized(decl, this.resolver)) {
|
|
250
|
-
return generatorTypePrefix() + decl
|
|
265
|
+
return generatorTypePrefix() + qualifiedName(decl, "_");
|
|
251
266
|
}
|
|
252
267
|
return this.convertor.convert(type);
|
|
253
268
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as idl from "../../idl";
|
|
2
|
-
import { TSTypeNameConvertor } from "./TSConvertors";
|
|
2
|
+
import { TSInteropArgConvertor, TSTypeNameConvertor } from "./TSConvertors";
|
|
3
3
|
export declare class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
4
4
|
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
5
5
|
convertContainer(type: idl.IDLContainerType): string;
|
|
@@ -9,4 +9,6 @@ export declare class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
9
9
|
protected mapCallback(decl: idl.IDLCallback): string;
|
|
10
10
|
protected mapFunctionType(typeArgs: string[]): string;
|
|
11
11
|
}
|
|
12
|
+
export declare class ETSInteropArgConvertor extends TSInteropArgConvertor {
|
|
13
|
+
}
|
|
12
14
|
//# sourceMappingURL=ETSConvertors.d.ts.map
|
|
@@ -16,7 +16,7 @@ import * as idl from "../../idl";
|
|
|
16
16
|
import { Language } from "../../Language";
|
|
17
17
|
import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
|
|
18
18
|
import { convertDeclaration } from "../nameConvertor";
|
|
19
|
-
import { TSTypeNameConvertor } from "./TSConvertors";
|
|
19
|
+
import { TSInteropArgConvertor, TSTypeNameConvertor } from "./TSConvertors";
|
|
20
20
|
export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
21
21
|
convertTypeReference(type) {
|
|
22
22
|
// Only to deal with namespaces. TODO: remove later
|
|
@@ -109,4 +109,6 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
109
109
|
return `Function${typeArgs.length - 1}<${typeArgs.join(",")}>`;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
+
export class ETSInteropArgConvertor extends TSInteropArgConvertor {
|
|
113
|
+
}
|
|
112
114
|
//# sourceMappingURL=ETSConvertors.js.map
|
|
@@ -114,16 +114,16 @@ export class InteropArgConvertor {
|
|
|
114
114
|
case idl.IDLU64Type: return "KLong";
|
|
115
115
|
case idl.IDLI32Type: return "KInt";
|
|
116
116
|
case idl.IDLF32Type: return "KFloat";
|
|
117
|
-
case idl.IDLNumberType: return '
|
|
118
|
-
case idl.IDLBigintType: return '
|
|
117
|
+
case idl.IDLNumberType: return 'KInteropNumber';
|
|
118
|
+
case idl.IDLBigintType: return 'KLong';
|
|
119
119
|
case idl.IDLBooleanType:
|
|
120
120
|
case idl.IDLFunctionType: return 'KInt';
|
|
121
121
|
case idl.IDLStringType: return 'KStringPtr';
|
|
122
|
-
case idl.IDLBufferType: return `
|
|
122
|
+
case idl.IDLBufferType: return `KInteropBuffer`;
|
|
123
123
|
case idl.IDLLengthType: return 'Length';
|
|
124
124
|
case idl.IDLDate: return 'KLong';
|
|
125
125
|
case idl.IDLUndefinedType:
|
|
126
|
-
case idl.IDLVoidType:
|
|
126
|
+
case idl.IDLVoidType:
|
|
127
127
|
case idl.IDLPointerType: return 'KPointer'; // return PrimitiveTypesInstance.NativePointer.getText()
|
|
128
128
|
}
|
|
129
129
|
throw new Error(`Cannot pass primitive type ${type.name} through interop`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as idl from '../../idl';
|
|
2
2
|
import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
|
|
3
|
-
import { IdlNameConvertor, NodeConvertor } from '../nameConvertor';
|
|
3
|
+
import { IdlNameConvertor, NodeConvertor, TypeConvertor } from '../nameConvertor';
|
|
4
4
|
export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNameConvertor {
|
|
5
5
|
protected resolver: ReferenceResolver;
|
|
6
6
|
constructor(resolver: ReferenceResolver);
|
|
@@ -24,4 +24,14 @@ export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNa
|
|
|
24
24
|
protected productType(decl: idl.IDLInterface, isTuple: boolean, includeFieldNames: boolean): string;
|
|
25
25
|
protected mapFunctionType(typeArgs: string[]): string;
|
|
26
26
|
}
|
|
27
|
+
export declare class TSInteropArgConvertor implements TypeConvertor<string> {
|
|
28
|
+
convert(type: idl.IDLType): string;
|
|
29
|
+
convertContainer(type: idl.IDLContainerType): string;
|
|
30
|
+
convertImport(type: idl.IDLReferenceType, importClause: string): string;
|
|
31
|
+
convertOptional(type: idl.IDLOptionalType): string;
|
|
32
|
+
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
33
|
+
convertTypeParameter(type: idl.IDLTypeParameterType): string;
|
|
34
|
+
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
35
|
+
convertUnion(type: idl.IDLUnionType): string;
|
|
36
|
+
}
|
|
27
37
|
//# sourceMappingURL=TSConvertors.d.ts.map
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
|
-
import { convertNode } from '../nameConvertor';
|
|
16
|
+
import { convertNode, convertType } from '../nameConvertor';
|
|
17
17
|
export class TSTypeNameConvertor {
|
|
18
18
|
constructor(resolver) {
|
|
19
19
|
this.resolver = resolver;
|
|
@@ -173,4 +173,47 @@ export class TSTypeNameConvertor {
|
|
|
173
173
|
return `Function${typeArgs.length ? `<${typeArgs.join(",")}>` : ''}`;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
+
export class TSInteropArgConvertor {
|
|
177
|
+
convert(type) {
|
|
178
|
+
return convertType(this, type);
|
|
179
|
+
}
|
|
180
|
+
convertContainer(type) {
|
|
181
|
+
throw new Error(`Cannot pass container types through interop`);
|
|
182
|
+
}
|
|
183
|
+
convertImport(type, importClause) {
|
|
184
|
+
throw new Error(`Cannot pass import types through interop`);
|
|
185
|
+
}
|
|
186
|
+
convertOptional(type) {
|
|
187
|
+
return "KNativePointer";
|
|
188
|
+
}
|
|
189
|
+
convertPrimitiveType(type) {
|
|
190
|
+
switch (type) {
|
|
191
|
+
case idl.IDLI64Type: return "KLong";
|
|
192
|
+
case idl.IDLU64Type: return "KLong";
|
|
193
|
+
case idl.IDLI32Type: return "KInt";
|
|
194
|
+
case idl.IDLF32Type: return "KFloat";
|
|
195
|
+
case idl.IDLNumberType: return 'number';
|
|
196
|
+
case idl.IDLBigintType: return 'bigint';
|
|
197
|
+
case idl.IDLBooleanType:
|
|
198
|
+
case idl.IDLFunctionType: return 'KInt';
|
|
199
|
+
case idl.IDLStringType: return 'KStringPtr';
|
|
200
|
+
case idl.IDLBufferType: return `ArrayBuffer`;
|
|
201
|
+
case idl.IDLLengthType: return 'Length';
|
|
202
|
+
case idl.IDLDate: return 'number';
|
|
203
|
+
case idl.IDLUndefinedType:
|
|
204
|
+
case idl.IDLVoidType:
|
|
205
|
+
case idl.IDLPointerType: return 'KPointer';
|
|
206
|
+
}
|
|
207
|
+
throw new Error(`Cannot pass primitive type ${type.name} through interop`);
|
|
208
|
+
}
|
|
209
|
+
convertTypeParameter(type) {
|
|
210
|
+
throw new Error("Cannot pass type parameters through interop");
|
|
211
|
+
}
|
|
212
|
+
convertTypeReference(type) {
|
|
213
|
+
throw new Error(`Cannot pass type references through interop`);
|
|
214
|
+
}
|
|
215
|
+
convertUnion(type) {
|
|
216
|
+
throw new Error("Cannot pass union types through interop");
|
|
217
|
+
}
|
|
218
|
+
}
|
|
176
219
|
//# sourceMappingURL=TSConvertors.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Language } from "../Language";
|
|
2
2
|
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
3
|
-
import { InteropArgConvertor } from "./convertors/InteropConvertors";
|
|
4
3
|
import { LanguageWriter } from "./LanguageWriter";
|
|
4
|
+
import { TypeConvertor } from "./nameConvertor";
|
|
5
5
|
export * from "./nameConvertor";
|
|
6
6
|
export declare function createLanguageWriter(language: Language, resolver?: ReferenceResolver): LanguageWriter;
|
|
7
|
-
export declare function createInteropArgConvertor(language: Language):
|
|
7
|
+
export declare function createInteropArgConvertor(language: Language): TypeConvertor<string>;
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -4,10 +4,9 @@ import { PrimitiveTypesInstance } from "../peer-generation/PrimitiveType";
|
|
|
4
4
|
import { createEmptyReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
5
5
|
import { CJIDLTypeToForeignStringConvertor, CJInteropArgConvertor, CJTypeNameConvertor } from "./convertors/CJConvertors";
|
|
6
6
|
import { CppInteropArgConvertor, CppConvertor } from "./convertors/CppConvertors";
|
|
7
|
-
import { ETSTypeNameConvertor } from "./convertors/ETSConvertors";
|
|
8
|
-
import { InteropArgConvertor } from "./convertors/InteropConvertors";
|
|
7
|
+
import { ETSInteropArgConvertor, ETSTypeNameConvertor } from "./convertors/ETSConvertors";
|
|
9
8
|
import { JavaInteropArgConvertor, JavaTypeNameConvertor } from "./convertors/JavaConvertors";
|
|
10
|
-
import { TSTypeNameConvertor } from "./convertors/TSConvertors";
|
|
9
|
+
import { TSInteropArgConvertor, TSTypeNameConvertor } from "./convertors/TSConvertors";
|
|
11
10
|
import { CJLanguageWriter } from "./writers/CJLanguageWriter";
|
|
12
11
|
import { CppLanguageWriter } from "./writers/CppLanguageWriter";
|
|
13
12
|
import { ETSLanguageWriter } from "./writers/ETSLanguageWriter";
|
|
@@ -28,8 +27,8 @@ export function createLanguageWriter(language, resolver) {
|
|
|
28
27
|
}
|
|
29
28
|
export function createInteropArgConvertor(language) {
|
|
30
29
|
switch (language) {
|
|
31
|
-
case Language.TS:
|
|
32
|
-
case Language.ARKTS: return new
|
|
30
|
+
case Language.TS: return new TSInteropArgConvertor();
|
|
31
|
+
case Language.ARKTS: return new ETSInteropArgConvertor();
|
|
33
32
|
case Language.CPP: return CppInteropArgConvertor.INSTANCE;
|
|
34
33
|
case Language.JAVA: return new JavaInteropArgConvertor();
|
|
35
34
|
case Language.CJ: return new CJInteropArgConvertor();
|
|
@@ -2,7 +2,7 @@ import * as idl from "../../idl";
|
|
|
2
2
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
3
3
|
import { ArgConvertor, BaseArgConvertor } from "../ArgConvertors";
|
|
4
4
|
import { RuntimeType } from "../common";
|
|
5
|
-
import { AssignStatement, FieldModifier, LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature,
|
|
5
|
+
import { AssignStatement, FieldModifier, LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
|
|
6
6
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
7
7
|
import { Language } from "../../Language";
|
|
8
8
|
import { ReferenceResolver } from "../../peer-generation/ReferenceResolver";
|
|
@@ -81,7 +81,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
81
81
|
stringId: string | undefined;
|
|
82
82
|
numberId: number;
|
|
83
83
|
}[], op: (writer: LanguageWriter) => void): void;
|
|
84
|
-
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[]): void;
|
|
84
|
+
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[]): void;
|
|
85
85
|
writeFunctionDeclaration(name: string, signature: MethodSignature): void;
|
|
86
86
|
writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void): void;
|
|
87
87
|
private generateFunctionDeclaration;
|
|
@@ -96,8 +96,8 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
96
96
|
writeCJForeign(op: (writer: CJLanguageWriter) => void): void;
|
|
97
97
|
private writeDeclaration;
|
|
98
98
|
writeNativeFunctionCall(printer: LanguageWriter, name: string, signature: MethodSignature): void;
|
|
99
|
-
writeNativeMethodDeclaration(
|
|
100
|
-
makeEnumCast(
|
|
99
|
+
writeNativeMethodDeclaration(method: Method): void;
|
|
100
|
+
makeEnumCast(_enumEntry: idl.IDLEnum, enumName: string): string;
|
|
101
101
|
makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
|
|
102
102
|
makeClassInit(type: idl.IDLType, parameters: LanguageExpression[]): LanguageExpression;
|
|
103
103
|
makeArrayInit(type: idl.IDLContainerType, size?: number): LanguageExpression;
|
|
@@ -293,7 +293,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
293
293
|
this.popIndent();
|
|
294
294
|
this.printer.print(`}`);
|
|
295
295
|
}
|
|
296
|
-
writeInterface(name, op, superInterfaces) {
|
|
296
|
+
writeInterface(name, op, superInterfaces, generics) {
|
|
297
297
|
let extendsClause = superInterfaces ? ` <: ${superInterfaces.join(" & ")}` : '';
|
|
298
298
|
this.printer.print(`public interface ${name}${extendsClause} {`);
|
|
299
299
|
this.pushIndent();
|
|
@@ -404,12 +404,13 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
404
404
|
writeNativeFunctionCall(printer, name, signature) {
|
|
405
405
|
printer.print(`return unsafe { ${name}(${signature.args.map((it, index) => `${signature.argName(index)}`).join(", ")}) }`);
|
|
406
406
|
}
|
|
407
|
-
writeNativeMethodDeclaration(
|
|
408
|
-
let
|
|
407
|
+
writeNativeMethodDeclaration(method) {
|
|
408
|
+
let name = method.name;
|
|
409
|
+
let signture = `${method.signature.args.map((it, index) => `${this.escapeKeyword(method.signature.argName(index))}: ${this.typeForeignConvertor.convert(it)}`).join(", ")}`;
|
|
409
410
|
name = name.startsWith('_') ? name.slice(1) : name;
|
|
410
|
-
this.print(`func ${name}(${signture}): ${this.typeForeignConvertor.convert(signature.returnType)}`);
|
|
411
|
+
this.print(`func ${name}(${signture}): ${this.typeForeignConvertor.convert(method.signature.returnType)}`);
|
|
411
412
|
}
|
|
412
|
-
makeEnumCast(
|
|
413
|
+
makeEnumCast(_enumEntry, enumName) {
|
|
413
414
|
return `${enumName}.value`;
|
|
414
415
|
}
|
|
415
416
|
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;
|
|
@@ -41,7 +42,7 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
41
42
|
resolver?: ReferenceResolver;
|
|
42
43
|
}): LanguageWriter;
|
|
43
44
|
writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[]): void;
|
|
44
|
-
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[]): void;
|
|
45
|
+
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[]): void;
|
|
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;
|
|
@@ -102,9 +103,9 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
102
103
|
get supportedFieldModifiers(): FieldModifier[];
|
|
103
104
|
enumFromOrdinal(value: LanguageExpression, type: IDLType): LanguageExpression;
|
|
104
105
|
ordinalFromEnum(value: LanguageExpression, _: IDLType): LanguageExpression;
|
|
105
|
-
makeUnsafeCast(
|
|
106
|
+
makeUnsafeCast(param: string): string;
|
|
106
107
|
makeUnsafeCast_(value: LanguageExpression, type: IDLType, typeOptions?: PrintHint): string;
|
|
107
|
-
makeEnumCast(
|
|
108
|
+
makeEnumCast(enumEntry: idl.IDLEnum, value: string): string;
|
|
108
109
|
escapeKeyword(name: string): string;
|
|
109
110
|
makeEnumEntity(enumEntity: IDLEnum, isExport: boolean): LanguageStatement;
|
|
110
111
|
private decayTypeName;
|
|
@@ -19,8 +19,8 @@ import { AssignStatement, BlockStatement, FieldModifier, PrintHint, MethodModifi
|
|
|
19
19
|
import { CDefinedExpression, CLikeExpressionStatement, CLikeLanguageWriter, CLikeLoopStatement, CLikeReturnStatement } from "./CLikeLanguageWriter";
|
|
20
20
|
import { RuntimeType } from "../common";
|
|
21
21
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
22
|
-
import { throwException } from "../../util";
|
|
23
22
|
import { cppKeywords } from "../../languageSpecificKeywords";
|
|
23
|
+
import * as idl from "../../idl";
|
|
24
24
|
////////////////////////////////////////////////////////////////
|
|
25
25
|
// EXPRESSIONS //
|
|
26
26
|
////////////////////////////////////////////////////////////////
|
|
@@ -180,7 +180,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
180
180
|
this.popIndent();
|
|
181
181
|
this.printer.print(`};`);
|
|
182
182
|
}
|
|
183
|
-
writeInterface(name, op, superInterfaces) {
|
|
183
|
+
writeInterface(name, op, superInterfaces, generics) {
|
|
184
184
|
throw new Error("Method not implemented.");
|
|
185
185
|
}
|
|
186
186
|
writeMethodCall(receiver, method, params, nullable = false) {
|
|
@@ -376,7 +376,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
376
376
|
ordinalFromEnum(value, _) {
|
|
377
377
|
return value;
|
|
378
378
|
}
|
|
379
|
-
makeUnsafeCast(
|
|
379
|
+
makeUnsafeCast(param) {
|
|
380
380
|
return param;
|
|
381
381
|
}
|
|
382
382
|
makeUnsafeCast_(value, type, typeOptions) {
|
|
@@ -396,11 +396,8 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
396
396
|
}
|
|
397
397
|
return `(${typeName}) (${value.asString()})`;
|
|
398
398
|
}
|
|
399
|
-
makeEnumCast(
|
|
400
|
-
|
|
401
|
-
return `static_cast<${this.typeConvertor.convert(convertor.nativeType())}>(${value})`;
|
|
402
|
-
}
|
|
403
|
-
throwException("Need pass EnumConvertor");
|
|
399
|
+
makeEnumCast(enumEntry, value) {
|
|
400
|
+
return `static_cast<${this.typeConvertor.convert(idl.createReferenceType(enumEntry))}>(${value})`;
|
|
404
401
|
}
|
|
405
402
|
escapeKeyword(name) {
|
|
406
403
|
return cppKeywords.has(name) ? name + "_" : name;
|