@idlizer/core 2.1.2 → 2.1.7
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 +3 -4
- package/build/lib/src/LanguageWriters/ArgConvertors.js +43 -32
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +35 -17
- package/build/lib/src/LanguageWriters/LanguageWriter.js +30 -56
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +3 -1
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +32 -11
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +5 -2
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +71 -62
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -1
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +9 -19
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.d.ts +4 -2
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +10 -3
- package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +2 -1
- package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +24 -4
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +8 -4
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +87 -33
- package/build/lib/src/LanguageWriters/nameConvertor.d.ts +3 -1
- package/build/lib/src/LanguageWriters/nameConvertor.js +5 -1
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +19 -11
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +34 -47
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +4 -1
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +1 -1
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +9 -9
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +15 -24
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +17 -8
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +48 -23
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +4 -6
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +15 -14
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +13 -8
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +33 -52
- package/build/lib/src/LibraryInterface.d.ts +1 -4
- package/build/lib/src/config.d.ts +813 -110
- package/build/lib/src/config.js +25 -3
- package/build/lib/src/configDescriber.d.ts +31 -4
- package/build/lib/src/configDescriber.js +101 -3
- package/build/lib/src/from-idl/DtsPrinter.js +31 -18
- package/build/lib/src/from-idl/IDLLinter.d.ts +40 -7
- package/build/lib/src/from-idl/IDLLinter.js +211 -25
- package/build/lib/src/from-idl/common.js +1 -1
- package/build/lib/src/from-idl/deserialize.d.ts +10 -1
- package/build/lib/src/from-idl/deserialize.js +486 -352
- package/build/lib/src/idl.d.ts +29 -19
- package/build/lib/src/idl.js +404 -119
- package/build/lib/src/idlize.d.ts +2 -1
- package/build/lib/src/idlize.js +82 -26
- package/build/lib/src/index.d.ts +4 -3
- package/build/lib/src/index.js +3 -2
- package/build/lib/src/options.d.ts +1 -1
- package/build/lib/src/peer-generation/BuilderClass.d.ts +0 -2
- package/build/lib/src/peer-generation/BuilderClass.js +0 -8
- package/build/lib/src/peer-generation/LayoutManager.d.ts +10 -3
- package/build/lib/src/peer-generation/LayoutManager.js +3 -2
- package/build/lib/src/peer-generation/Materialized.d.ts +1 -1
- package/build/lib/src/peer-generation/Materialized.js +3 -3
- package/build/lib/src/peer-generation/PeerClass.d.ts +3 -8
- package/build/lib/src/peer-generation/PeerClass.js +0 -1
- package/build/lib/src/peer-generation/PeerFile.d.ts +1 -2
- package/build/lib/src/peer-generation/PeerFile.js +1 -1
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +12 -7
- package/build/lib/src/peer-generation/PeerLibrary.js +131 -67
- package/build/lib/src/peer-generation/ReferenceResolver.d.ts +1 -1
- package/build/lib/src/peer-generation/ReferenceResolver.js +2 -2
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +1 -0
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +6 -2
- package/build/lib/src/peer-generation/idl/common.d.ts +3 -1
- package/build/lib/src/peer-generation/idl/common.js +21 -4
- package/build/lib/src/peer-generation/isMaterialized.js +28 -7
- package/build/lib/src/peer-generation/unions.d.ts +3 -2
- package/build/lib/src/peer-generation/unions.js +7 -3
- package/build/lib/src/resolveNamedNode.d.ts +3 -0
- package/build/lib/src/resolveNamedNode.js +105 -0
- package/build/lib/src/util.d.ts +8 -1
- package/build/lib/src/util.js +41 -3
- package/build/lib/src/visitor.d.ts +2 -1
- package/build/lib/src/visitor.js +109 -7
- package/package.json +2 -2
- package/webidl2.js/LICENSE +21 -0
- package/webidl2.js/README.md +827 -0
- package/webidl2.js/dist/package.json +3 -0
- package/webidl2.js/dist/webidl2.js +93 -19
|
@@ -25,16 +25,18 @@ export class TSTypeNameConvertor {
|
|
|
25
25
|
return node.name;
|
|
26
26
|
}
|
|
27
27
|
convertInterface(node) {
|
|
28
|
-
return idl.
|
|
28
|
+
return idl.getQualifiedName(node, "namespace.name");
|
|
29
29
|
}
|
|
30
30
|
convertEnum(node) {
|
|
31
|
-
return idl.
|
|
31
|
+
return idl.getQualifiedName(node, "namespace.name");
|
|
32
32
|
}
|
|
33
33
|
convertTypedef(node) {
|
|
34
34
|
return node.name;
|
|
35
35
|
}
|
|
36
36
|
convertCallback(node) {
|
|
37
|
-
return node
|
|
37
|
+
return idl.isSyntheticEntry(node)
|
|
38
|
+
? this.mapCallback(node)
|
|
39
|
+
: node.name;
|
|
38
40
|
}
|
|
39
41
|
convertMethod(node) {
|
|
40
42
|
return node.name;
|
|
@@ -72,53 +74,65 @@ export class TSTypeNameConvertor {
|
|
|
72
74
|
}
|
|
73
75
|
throw new Error(`Unmapped container type ${idl.DebugUtils.debugPrintType(type)}`);
|
|
74
76
|
}
|
|
75
|
-
convertImport(type
|
|
77
|
+
convertImport(type) {
|
|
78
|
+
console.warn("Imports are not implemented yet");
|
|
76
79
|
return type.name;
|
|
77
80
|
}
|
|
81
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
82
|
+
var _a;
|
|
83
|
+
const maybeTypeArguments = ((_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.length) ? `<${type.typeArguments.join(', ')}>` : "";
|
|
84
|
+
let decl = this.resolver.resolveTypeReference(type);
|
|
85
|
+
if (decl)
|
|
86
|
+
return `${decl.name}${maybeTypeArguments}`;
|
|
87
|
+
return `${type.name}${maybeTypeArguments}`;
|
|
88
|
+
}
|
|
78
89
|
convertTypeReference(type) {
|
|
79
90
|
var _a, _b;
|
|
80
91
|
let decl = this.resolver.resolveTypeReference(type);
|
|
81
92
|
if (decl) {
|
|
82
93
|
if (idl.isSyntheticEntry(decl)) {
|
|
83
94
|
if (idl.isCallback(decl)) {
|
|
84
|
-
return this.mapCallback(decl);
|
|
95
|
+
return this.mapCallback(decl, type.typeArguments);
|
|
85
96
|
}
|
|
86
97
|
const entity = idl.getExtAttribute(decl, idl.IDLExtendedAttributes.Entity);
|
|
87
98
|
if (entity) {
|
|
88
99
|
const isTuple = entity === idl.IDLEntity.Tuple;
|
|
89
|
-
return this.productType(decl, isTuple, !isTuple);
|
|
100
|
+
return this.productType(decl, type.typeArguments, isTuple, !isTuple);
|
|
90
101
|
}
|
|
91
102
|
}
|
|
103
|
+
// FIXME: isEnumMember is not TYPE!
|
|
104
|
+
if (decl && idl.isEnumMember(decl) && decl.parent) {
|
|
105
|
+
// when `interface A { field?: MyEnum.Value1 }` is generated, it is not possible
|
|
106
|
+
// to deserialize A, because there is no such type information in declaration target
|
|
107
|
+
// (can not cast MyEnum to exact MyEnum.Value1)
|
|
108
|
+
decl = decl.parent;
|
|
109
|
+
}
|
|
110
|
+
let typeSpec = type.name;
|
|
111
|
+
let typeArgs = (_b = (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => this.convert(it))) !== null && _b !== void 0 ? _b : [];
|
|
112
|
+
if (typeSpec === `Optional`)
|
|
113
|
+
return `${typeArgs} | undefined`;
|
|
114
|
+
if (typeSpec === `Function`)
|
|
115
|
+
return this.mapFunctionType(typeArgs);
|
|
116
|
+
const maybeTypeArguments = !(typeArgs === null || typeArgs === void 0 ? void 0 : typeArgs.length) ? '' : `<${typeArgs.join(', ')}>`;
|
|
117
|
+
if (decl) {
|
|
118
|
+
const path = idl.getNamespacesPathFor(decl).map(it => it.name);
|
|
119
|
+
path.push(decl.name);
|
|
120
|
+
return `${path.join(".")}${maybeTypeArguments}`;
|
|
121
|
+
}
|
|
122
|
+
return `${type.name}${maybeTypeArguments}`;
|
|
92
123
|
}
|
|
93
|
-
|
|
94
|
-
if (decl && idl.isEnumMember(decl) && decl.parent) {
|
|
95
|
-
// when `interface A { field?: MyEnum.Value1 }` is generated, it is not possible
|
|
96
|
-
// to deserialize A, because there is no such type information in declaration target
|
|
97
|
-
// (can not cast MyEnum to exact MyEnum.Value1)
|
|
98
|
-
decl = decl.parent;
|
|
99
|
-
}
|
|
100
|
-
let typeSpec = type.name;
|
|
101
|
-
let typeArgs = (_b = (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => idl.printType(it))) !== null && _b !== void 0 ? _b : [];
|
|
102
|
-
if (typeSpec === `Optional`)
|
|
103
|
-
return `${typeArgs} | undefined`;
|
|
104
|
-
if (typeSpec === `Function`)
|
|
105
|
-
return this.mapFunctionType(typeArgs);
|
|
106
|
-
const maybeTypeArguments = !(typeArgs === null || typeArgs === void 0 ? void 0 : typeArgs.length) ? '' : `<${typeArgs.join(', ')}>`;
|
|
107
|
-
if (decl) {
|
|
108
|
-
const path = idl.getNamespacesPathFor(decl).map(it => it.name);
|
|
109
|
-
path.push(decl.name);
|
|
110
|
-
return `${path.join(".")}${maybeTypeArguments}`;
|
|
111
|
-
}
|
|
112
|
-
return `${type.name}${maybeTypeArguments}`;
|
|
124
|
+
return this.convert(idl.IDLCustomObjectType);
|
|
113
125
|
}
|
|
114
126
|
convertTypeParameter(type) {
|
|
115
127
|
return type.name;
|
|
116
128
|
}
|
|
117
129
|
convertPrimitiveType(type) {
|
|
118
130
|
switch (type) {
|
|
131
|
+
case idl.IDLFunctionType: return 'Function';
|
|
119
132
|
case idl.IDLUnknownType:
|
|
120
|
-
case idl.IDLCustomObjectType: return '
|
|
133
|
+
case idl.IDLCustomObjectType: return 'any';
|
|
121
134
|
case idl.IDLThisType: return 'this';
|
|
135
|
+
case idl.IDLObjectType: return 'Object';
|
|
122
136
|
case idl.IDLAnyType: return 'any';
|
|
123
137
|
case idl.IDLUndefinedType: return 'undefined';
|
|
124
138
|
case idl.IDLPointerType: return 'KPointer';
|
|
@@ -155,13 +169,50 @@ export class TSTypeNameConvertor {
|
|
|
155
169
|
processTupleType(idlProperty) {
|
|
156
170
|
return idlProperty;
|
|
157
171
|
}
|
|
158
|
-
|
|
159
|
-
const
|
|
172
|
+
createTypeSubstitution(parameters, args) {
|
|
173
|
+
const subst = new Map();
|
|
174
|
+
if (args && parameters) {
|
|
175
|
+
for (let i = 0; i < args.length && i < parameters.length; ++i) {
|
|
176
|
+
subst.set(parameters[i], args[i]);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return subst;
|
|
180
|
+
}
|
|
181
|
+
applySubstitution(subst, type) {
|
|
182
|
+
var _a;
|
|
183
|
+
if (idl.isContainerType(type)) {
|
|
184
|
+
return idl.createContainerType(type.containerKind, type.elementType.map(it => this.applySubstitution(subst, it)));
|
|
185
|
+
}
|
|
186
|
+
if (idl.isReferenceType(type)) {
|
|
187
|
+
return idl.createReferenceType(type.name, (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => this.applySubstitution(subst, it)));
|
|
188
|
+
}
|
|
189
|
+
if (idl.isTypeParameterType(type)) {
|
|
190
|
+
const record = subst.get(type.name);
|
|
191
|
+
if (record) {
|
|
192
|
+
return record;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return type;
|
|
196
|
+
}
|
|
197
|
+
mapCallback(decl, args) {
|
|
198
|
+
const subst = this.createTypeSubstitution(decl.typeParameters, args);
|
|
199
|
+
const parameters = decl.parameters.map(it => {
|
|
200
|
+
const param = idl.clone(it);
|
|
201
|
+
param.type = this.applySubstitution(subst, param.type);
|
|
202
|
+
return param;
|
|
203
|
+
});
|
|
204
|
+
const params = parameters.map(it => `${it.isVariadic ? "..." : ""}${it.name}${it.isOptional ? "?" : ""}: ${this.convert(it.type)}${it.isVariadic ? "[]" : ""}`);
|
|
160
205
|
return `((${params.join(", ")}) => ${this.convert(decl.returnType)})`;
|
|
161
206
|
}
|
|
162
|
-
productType(decl, isTuple, includeFieldNames) {
|
|
207
|
+
productType(decl, args, isTuple, includeFieldNames) {
|
|
208
|
+
const subst = this.createTypeSubstitution(decl.typeParameters, args);
|
|
163
209
|
const name = `${isTuple ? "[" : "{"} ${decl.properties
|
|
164
210
|
.map(it => isTuple ? this.processTupleType(it) : it)
|
|
211
|
+
.map(it => {
|
|
212
|
+
const prop = idl.clone(it);
|
|
213
|
+
prop.type = this.applySubstitution(subst, prop.type);
|
|
214
|
+
return prop;
|
|
215
|
+
})
|
|
165
216
|
.map(it => {
|
|
166
217
|
const type = this.convert(it.type);
|
|
167
218
|
return it.isOptional
|
|
@@ -181,7 +232,7 @@ export class TSInteropArgConvertor {
|
|
|
181
232
|
convertContainer(type) {
|
|
182
233
|
throw new Error(`Cannot pass container types through interop`);
|
|
183
234
|
}
|
|
184
|
-
convertImport(type
|
|
235
|
+
convertImport(type) {
|
|
185
236
|
throw new Error(`Cannot pass import types through interop`);
|
|
186
237
|
}
|
|
187
238
|
convertOptional(type) {
|
|
@@ -192,14 +243,14 @@ export class TSInteropArgConvertor {
|
|
|
192
243
|
case idl.IDLI64Type: return "KLong";
|
|
193
244
|
case idl.IDLU64Type: return "KLong";
|
|
194
245
|
case idl.IDLI32Type: return "KInt";
|
|
246
|
+
case idl.IDLU32Type: return "KInt";
|
|
195
247
|
case idl.IDLF32Type: return "KFloat";
|
|
196
248
|
case idl.IDLNumberType: return 'number';
|
|
197
249
|
case idl.IDLBigintType: return 'bigint';
|
|
198
250
|
case idl.IDLBooleanType:
|
|
199
251
|
case idl.IDLFunctionType: return 'KInt';
|
|
200
252
|
case idl.IDLStringType: return 'KStringPtr';
|
|
201
|
-
case idl.IDLBufferType: return
|
|
202
|
-
case idl.IDLLengthType: return 'Length';
|
|
253
|
+
case idl.IDLBufferType: return 'ArrayBuffer';
|
|
203
254
|
case idl.IDLDate: return 'number';
|
|
204
255
|
case idl.IDLUndefinedType:
|
|
205
256
|
case idl.IDLVoidType:
|
|
@@ -210,6 +261,9 @@ export class TSInteropArgConvertor {
|
|
|
210
261
|
convertTypeParameter(type) {
|
|
211
262
|
throw new Error("Cannot pass type parameters through interop");
|
|
212
263
|
}
|
|
264
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
265
|
+
throw new Error(`Cannot pass import types through interop`);
|
|
266
|
+
}
|
|
213
267
|
convertTypeReference(type) {
|
|
214
268
|
throw new Error(`Cannot pass type references through interop`);
|
|
215
269
|
}
|
|
@@ -6,13 +6,15 @@ export interface TypeConvertor<T> {
|
|
|
6
6
|
convertOptional(type: idl.IDLOptionalType): T;
|
|
7
7
|
convertUnion(type: idl.IDLUnionType): T;
|
|
8
8
|
convertContainer(type: idl.IDLContainerType): T;
|
|
9
|
-
convertImport(type: idl.
|
|
9
|
+
convertImport(type: idl.IDLImport): T;
|
|
10
|
+
convertTypeReferenceAsImport(type: idl.IDLReferenceType, importClause: string): T;
|
|
10
11
|
convertTypeReference(type: idl.IDLReferenceType): T;
|
|
11
12
|
convertTypeParameter(type: idl.IDLTypeParameterType): T;
|
|
12
13
|
convertPrimitiveType(type: idl.IDLPrimitiveType): T;
|
|
13
14
|
}
|
|
14
15
|
export declare function convertType<T>(convertor: TypeConvertor<T>, type: idl.IDLType): T;
|
|
15
16
|
export interface DeclarationConvertor<T> {
|
|
17
|
+
convertImport(node: idl.IDLImport): T;
|
|
16
18
|
convertNamespace(node: idl.IDLNamespace): T;
|
|
17
19
|
convertInterface(node: idl.IDLInterface): T;
|
|
18
20
|
convertEnum(node: idl.IDLEnum): T;
|
|
@@ -20,10 +20,12 @@ export function convertType(convertor, type) {
|
|
|
20
20
|
return convertor.convertUnion(type);
|
|
21
21
|
if (idl.isContainerType(type))
|
|
22
22
|
return convertor.convertContainer(type);
|
|
23
|
+
if (idl.isImport(type))
|
|
24
|
+
return convertor.convertImport(type);
|
|
23
25
|
if (idl.isReferenceType(type)) {
|
|
24
26
|
const importAttr = idl.getExtAttribute(type, idl.IDLExtendedAttributes.Import);
|
|
25
27
|
return importAttr
|
|
26
|
-
? convertor.
|
|
28
|
+
? convertor.convertTypeReferenceAsImport(type, importAttr)
|
|
27
29
|
: convertor.convertTypeReference(type);
|
|
28
30
|
}
|
|
29
31
|
if (idl.isTypeParameterType(type))
|
|
@@ -33,6 +35,8 @@ export function convertType(convertor, type) {
|
|
|
33
35
|
throw new Error(`Unknown type ${idl.IDLKind[type.kind]}`);
|
|
34
36
|
}
|
|
35
37
|
export function convertDeclaration(convertor, decl) {
|
|
38
|
+
if (idl.isImport(decl))
|
|
39
|
+
return convertor.convertImport(decl);
|
|
36
40
|
if (idl.isNamespace(decl))
|
|
37
41
|
return convertor.convertNamespace(decl);
|
|
38
42
|
if (idl.isInterface(decl))
|
|
@@ -80,7 +80,10 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
80
80
|
name: string;
|
|
81
81
|
stringId: string | undefined;
|
|
82
82
|
numberId: number;
|
|
83
|
-
}[],
|
|
83
|
+
}[], options: {
|
|
84
|
+
isExport: boolean;
|
|
85
|
+
isDeclare?: boolean;
|
|
86
|
+
}, op: (writer: LanguageWriter) => void): void;
|
|
84
87
|
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[]): void;
|
|
85
88
|
writeFunctionDeclaration(name: string, signature: MethodSignature): void;
|
|
86
89
|
writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void): void;
|
|
@@ -105,7 +108,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
105
108
|
private writeDeclaration;
|
|
106
109
|
writeNativeFunctionCall(printer: LanguageWriter, name: string, signature: MethodSignature): void;
|
|
107
110
|
writeNativeMethodDeclaration(method: Method): void;
|
|
108
|
-
|
|
111
|
+
i32FromEnum(value: LanguageExpression, _enumEntry: idl.IDLEnum): LanguageExpression;
|
|
109
112
|
makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
|
|
110
113
|
makeClassInit(type: idl.IDLType, parameters: LanguageExpression[]): LanguageExpression;
|
|
111
114
|
makeArrayInit(type: idl.IDLContainerType, size?: number): LanguageExpression;
|
|
@@ -125,14 +128,14 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
125
128
|
makeDefinedCheck(value: string): LanguageExpression;
|
|
126
129
|
makeNewObject(objectName: string, params?: LanguageExpression[]): LanguageExpression;
|
|
127
130
|
writePrintLog(message: string): void;
|
|
128
|
-
makeCast(value: LanguageExpression,
|
|
131
|
+
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
129
132
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
130
133
|
getObjectAccessor(convertor: BaseArgConvertor, value: string, args?: ObjectArgs): string;
|
|
131
134
|
makeUndefined(): LanguageExpression;
|
|
132
135
|
makeUnwrapOptional(expression: LambdaExpression): LanguageExpression;
|
|
133
136
|
makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
|
|
134
137
|
makeRuntimeType(rt: RuntimeType): LanguageExpression;
|
|
135
|
-
makeRuntimeTypeGetterCall(value: string): LanguageExpression;
|
|
138
|
+
protected makeRuntimeTypeGetterCall(value: string): LanguageExpression;
|
|
136
139
|
makeMapInsert(keyAccessor: string, key: string, valueAccessor: string, value: string): LanguageStatement;
|
|
137
140
|
makeNull(value?: string): LanguageExpression;
|
|
138
141
|
getTagType(): idl.IDLType;
|
|
@@ -144,17 +147,22 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
144
147
|
makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, type: string, convertorIndex?: number): LanguageExpression;
|
|
145
148
|
makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index: number): LanguageExpression;
|
|
146
149
|
makeTupleAccess(value: string, index: number): LanguageExpression;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
+
enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
151
|
+
makeEnumEntity(enumEntity: idl.IDLEnum, options: {
|
|
152
|
+
isExport: boolean;
|
|
153
|
+
isDeclare?: boolean;
|
|
154
|
+
}): LanguageStatement;
|
|
150
155
|
makeEquals(args: LanguageExpression[]): LanguageExpression;
|
|
151
156
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
152
157
|
escapeKeyword(word: string): string;
|
|
153
|
-
pushNamespace(namespace: string,
|
|
154
|
-
|
|
158
|
+
pushNamespace(namespace: string, options: {
|
|
159
|
+
ident: boolean;
|
|
160
|
+
isDeclared?: boolean;
|
|
161
|
+
}): void;
|
|
162
|
+
popNamespace(options: {
|
|
163
|
+
ident: boolean;
|
|
164
|
+
}): void;
|
|
155
165
|
castToInt(value: string, bitness: 8 | 32): string;
|
|
156
166
|
castToBoolean(value: string): string;
|
|
157
|
-
makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
|
|
158
|
-
makeLengthDeserializer(deserializer: string): LanguageStatement | undefined;
|
|
159
167
|
}
|
|
160
168
|
//# sourceMappingURL=CJLanguageWriter.d.ts.map
|
|
@@ -267,8 +267,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
267
267
|
}
|
|
268
268
|
getNodeName(type) {
|
|
269
269
|
// rework for proper namespace logic
|
|
270
|
-
|
|
271
|
-
return name[name.length - 1];
|
|
270
|
+
return this.typeConvertor.convert(type);
|
|
272
271
|
}
|
|
273
272
|
writeClass(name, op, superClass, interfaces, generics) {
|
|
274
273
|
let extendsClause = superClass ? `${superClass}` : undefined;
|
|
@@ -283,7 +282,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
283
282
|
this.popIndent();
|
|
284
283
|
this.printer.print(`}`);
|
|
285
284
|
}
|
|
286
|
-
writeEnum(name, members, op) {
|
|
285
|
+
writeEnum(name, members, options, op) {
|
|
287
286
|
this.printer.print(`public enum ${name}{`);
|
|
288
287
|
this.pushIndent();
|
|
289
288
|
for (const member of members) {
|
|
@@ -320,13 +319,13 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
320
319
|
if (nullable) {
|
|
321
320
|
if (receiver == 'this') {
|
|
322
321
|
this.printer.print('let thisObj = this');
|
|
323
|
-
super.writeMethodCall('thisObj', method, params, false);
|
|
322
|
+
super.writeMethodCall('thisObj', this.escapeKeyword(method), params, false);
|
|
324
323
|
return;
|
|
325
324
|
}
|
|
326
325
|
this.printer.print(`if (let Some(${receiver}) <- ${receiver}) { ${receiver}.${method}(${params.join(", ")}) }`);
|
|
327
326
|
}
|
|
328
327
|
else {
|
|
329
|
-
super.writeMethodCall(receiver, method, params, nullable);
|
|
328
|
+
super.writeMethodCall(receiver, this.escapeKeyword(method), params, nullable);
|
|
330
329
|
}
|
|
331
330
|
}
|
|
332
331
|
writeFieldDeclaration(name, type, modifiers, optional, initExpr) {
|
|
@@ -339,7 +338,22 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
339
338
|
this.writeDeclaration(name, signature, modifiers);
|
|
340
339
|
}
|
|
341
340
|
writeConstructorImplementation(className, signature, op, superCall, modifiers) {
|
|
342
|
-
|
|
341
|
+
var _a;
|
|
342
|
+
let i = 1;
|
|
343
|
+
while (signature.isArgOptional(signature.args.length - i)) {
|
|
344
|
+
let smallerSignature = signature.args.slice(0, -i);
|
|
345
|
+
this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}init (${smallerSignature.map((it, index) => `${signature.argName(index)}: ${this.getNodeName(it)}`).join(", ")}) {`);
|
|
346
|
+
this.pushIndent();
|
|
347
|
+
let smallerArgs = (_a = signature.args) === null || _a === void 0 ? void 0 : _a.slice(0, -i).map((_, i) => signature.argName(i)).join(', ');
|
|
348
|
+
for (let idx = 0; idx < i; idx++) {
|
|
349
|
+
smallerArgs = smallerArgs.concat(`${i == signature.args.length && idx == 0 ? '' : ', '}Option.None`);
|
|
350
|
+
}
|
|
351
|
+
this.print(`${className}(${smallerArgs})`);
|
|
352
|
+
this.popIndent();
|
|
353
|
+
this.printer.print(`}`);
|
|
354
|
+
i += 1;
|
|
355
|
+
}
|
|
356
|
+
this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}${className}(${signature.args.map((it, index) => `${signature.argName(index)}: ${this.getNodeName(idl.maybeOptional(it, signature.isArgOptional(index)))}`).join(", ")}) {`);
|
|
343
357
|
this.pushIndent();
|
|
344
358
|
if (superCall) {
|
|
345
359
|
this.print(`super(${superCall.signature.args.map((_, i) => superCall === null || superCall === void 0 ? void 0 : superCall.signature.argName(i)).join(", ")})`);
|
|
@@ -416,8 +430,8 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
416
430
|
}
|
|
417
431
|
writeDeclaration(name, signature, modifiers, postfix) {
|
|
418
432
|
let prefix = modifiers === null || modifiers === void 0 ? void 0 : modifiers.filter(it => this.supportedModifiers.includes(it)).map(it => this.mapMethodModifier(it)).join(" ");
|
|
419
|
-
prefix = prefix ? prefix + " " : "";
|
|
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))) ? '' : '
|
|
433
|
+
prefix = prefix ? prefix + " " : "public ";
|
|
434
|
+
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))) ? '' : `${((modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.STATIC)) || (modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.PRIVATE))) ? '' : 'open '}func `}${this.escapeKeyword(name)}(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(idl.maybeOptional(it, signature.isArgOptional(index)))}`).join(", ")})${this.getNodeName(signature.returnType) == 'this' ? '' : `: ${this.getNodeName(signature.returnType)}`}${postfix !== null && postfix !== void 0 ? postfix : ""}`);
|
|
421
435
|
}
|
|
422
436
|
writeNativeFunctionCall(printer, name, signature) {
|
|
423
437
|
printer.print(`return unsafe { ${name}(${signature.args.map((it, index) => `${signature.argName(index)}`).join(", ")}) }`);
|
|
@@ -428,8 +442,8 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
428
442
|
name = name.startsWith('_') ? name.slice(1) : name;
|
|
429
443
|
this.print(`func ${name}(${signture}): ${this.typeForeignConvertor.convert(method.signature.returnType)}`);
|
|
430
444
|
}
|
|
431
|
-
|
|
432
|
-
return `${
|
|
445
|
+
i32FromEnum(value, _enumEntry) {
|
|
446
|
+
return this.makeString(`${value.asString()}.value`);
|
|
433
447
|
}
|
|
434
448
|
makeAssign(variableName, type, expr, isDeclared = true, isConst = true) {
|
|
435
449
|
return new CJAssignStatement(variableName, type, expr, isDeclared, isConst);
|
|
@@ -441,7 +455,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
441
455
|
return this.makeString(`ArrayList<${this.getNodeName(type.elementType[0])}>(Int64(${size !== null && size !== void 0 ? size : ''}))`);
|
|
442
456
|
}
|
|
443
457
|
makeMapInit(type) {
|
|
444
|
-
|
|
458
|
+
return this.makeString(`${this.getNodeName(type)}()`);
|
|
445
459
|
}
|
|
446
460
|
makeArrayLength(array, length) {
|
|
447
461
|
return this.makeString(`${array}.size`);
|
|
@@ -495,9 +509,9 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
495
509
|
writePrintLog(message) {
|
|
496
510
|
this.print(`println("${message}")`);
|
|
497
511
|
}
|
|
498
|
-
makeCast(value,
|
|
512
|
+
makeCast(value, node, options) {
|
|
499
513
|
var _a;
|
|
500
|
-
return new CJCastExpression(value, this.getNodeName(
|
|
514
|
+
return new CJCastExpression(value, this.getNodeName(node), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
|
|
501
515
|
}
|
|
502
516
|
typeInstanceOf(type, value, members) {
|
|
503
517
|
if (idl.isInterface(type)) {
|
|
@@ -525,7 +539,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
525
539
|
return this.makeString(methodCall.asString() + '.ordinal');
|
|
526
540
|
}
|
|
527
541
|
makeMapInsert(keyAccessor, key, valueAccessor, value) {
|
|
528
|
-
return this.makeStatement(this.makeMethodCall(keyAccessor, "
|
|
542
|
+
return this.makeStatement(this.makeMethodCall(keyAccessor, "add", [this.makeString(key), this.makeString(value)]));
|
|
529
543
|
}
|
|
530
544
|
makeNull(value) {
|
|
531
545
|
return new StringExpression(`Option.None`);
|
|
@@ -557,14 +571,11 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
557
571
|
makeTupleAccess(value, index) {
|
|
558
572
|
return this.makeString(`${value}.value${index}`);
|
|
559
573
|
}
|
|
560
|
-
|
|
574
|
+
enumFromI32(value, enumEntry) {
|
|
561
575
|
return this.makeString(`${this.getNodeName(enumEntry)}(${value.asString()})`);
|
|
562
576
|
}
|
|
563
|
-
|
|
564
|
-
return
|
|
565
|
-
}
|
|
566
|
-
makeEnumEntity(enumEntity, isExport) {
|
|
567
|
-
return new CJEnumWithGetter(enumEntity, isExport);
|
|
577
|
+
makeEnumEntity(enumEntity, options) {
|
|
578
|
+
return new CJEnumWithGetter(enumEntity, options.isExport);
|
|
568
579
|
}
|
|
569
580
|
makeEquals(args) {
|
|
570
581
|
return this.makeString(`refEq(${args.map(arg => `${arg.asString()}`).join(`, `)})`);
|
|
@@ -573,39 +584,15 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
573
584
|
this.writeStatement(this.makeAssign(valueType, undefined, this.makeRuntimeTypeGetterCall(value), false));
|
|
574
585
|
}
|
|
575
586
|
escapeKeyword(word) {
|
|
576
|
-
return CJKeywords.has(word) ? word
|
|
587
|
+
return CJKeywords.has(word) ? word.concat("_") : word;
|
|
577
588
|
}
|
|
578
|
-
pushNamespace(namespace,
|
|
579
|
-
popNamespace(
|
|
589
|
+
pushNamespace(namespace, options) { }
|
|
590
|
+
popNamespace(options) { }
|
|
580
591
|
castToInt(value, bitness) {
|
|
581
592
|
return `Int${bitness}(${value})`;
|
|
582
593
|
}
|
|
583
594
|
castToBoolean(value) {
|
|
584
595
|
return `if (${value}) { Int32(1) } else { Int32(0) }`;
|
|
585
596
|
}
|
|
586
|
-
makeLengthSerializer(serializer, value) {
|
|
587
|
-
return this.makeBlock([
|
|
588
|
-
this.makeStatement(this.makeMethodCall(serializer, "writeInt8", [this.makeRuntimeType(RuntimeType.STRING)])),
|
|
589
|
-
this.makeStatement(this.makeMethodCall(serializer, "writeString", [this.makeString(`${value}.getValue1()`)]))
|
|
590
|
-
], false);
|
|
591
|
-
}
|
|
592
|
-
makeLengthDeserializer(deserializer) {
|
|
593
|
-
const valueType = "valueType";
|
|
594
|
-
return this.makeBlock([
|
|
595
|
-
this.makeAssign(valueType, undefined, this.makeMethodCall(deserializer, "readInt8", []), true),
|
|
596
|
-
this.makeMultiBranchCondition([{
|
|
597
|
-
expr: this.makeRuntimeTypeCondition(valueType, true, RuntimeType.NUMBER, ''),
|
|
598
|
-
stmt: this.makeReturn(this.makeString(`Ark_Length(${deserializer}.readFloat32())`))
|
|
599
|
-
},
|
|
600
|
-
{
|
|
601
|
-
expr: this.makeRuntimeTypeCondition(valueType, true, RuntimeType.STRING, ''),
|
|
602
|
-
stmt: this.makeReturn(this.makeString(`Ark_Length(${deserializer}.readString())`))
|
|
603
|
-
},
|
|
604
|
-
{
|
|
605
|
-
expr: this.makeRuntimeTypeCondition(valueType, true, RuntimeType.OBJECT, ''),
|
|
606
|
-
stmt: this.makeReturn(this.makeString(`Ark_Length(Resource(${deserializer}.readString(), "", 0.0, Option.None, Option.None))`))
|
|
607
|
-
}], this.makeReturn(this.makeUndefined())),
|
|
608
|
-
], false);
|
|
609
|
-
}
|
|
610
597
|
}
|
|
611
598
|
//# sourceMappingURL=CJLanguageWriter.js.map
|
|
@@ -37,7 +37,10 @@ export declare abstract class CLikeLanguageWriter extends LanguageWriter {
|
|
|
37
37
|
name: string;
|
|
38
38
|
stringId: string | undefined;
|
|
39
39
|
numberId: number;
|
|
40
|
-
}[],
|
|
40
|
+
}[], options: {
|
|
41
|
+
isExport: boolean;
|
|
42
|
+
isDeclare?: boolean;
|
|
43
|
+
}, op: (writer: LanguageWriter) => void): void;
|
|
41
44
|
writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
42
45
|
private writeDeclaration;
|
|
43
46
|
protected stringifyMethodReturnType(type: idl.IDLType, _?: PrintHint): string;
|
|
@@ -95,7 +95,7 @@ export class CLikeLanguageWriter extends LanguageWriter {
|
|
|
95
95
|
writeMethodDeclaration(name, signature, modifiers) {
|
|
96
96
|
this.writeDeclaration(name, signature, modifiers, ";");
|
|
97
97
|
}
|
|
98
|
-
writeEnum(name, members, op) {
|
|
98
|
+
writeEnum(name, members, options, op) {
|
|
99
99
|
throw new Error("WriteEnum for C-family languages is not implemented");
|
|
100
100
|
}
|
|
101
101
|
writeMethodImplementation(method, op) {
|
|
@@ -11,9 +11,9 @@ import * as idl from "../../idl";
|
|
|
11
11
|
export declare class CppCastExpression implements LanguageExpression {
|
|
12
12
|
convertor: IdlNameConvertor;
|
|
13
13
|
value: LanguageExpression;
|
|
14
|
-
|
|
14
|
+
node: IDLNode;
|
|
15
15
|
private options?;
|
|
16
|
-
constructor(convertor: IdlNameConvertor, value: LanguageExpression,
|
|
16
|
+
constructor(convertor: IdlNameConvertor, value: LanguageExpression, node: IDLNode, options?: MakeCastOptions | undefined);
|
|
17
17
|
asString(): string;
|
|
18
18
|
private mapTypeWithReceiver;
|
|
19
19
|
}
|
|
@@ -91,7 +91,7 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
91
91
|
makeMapInit(type: IDLType): LanguageExpression;
|
|
92
92
|
makeArrayResize(array: string, arrayType: string, length: string, deserializer: string): LanguageStatement;
|
|
93
93
|
makeMapResize(mapTypeName: string, keyType: IDLType, valueType: IDLType, map: string, size: string, deserializer: string): LanguageStatement;
|
|
94
|
-
makeCast(expr: LanguageExpression,
|
|
94
|
+
makeCast(expr: LanguageExpression, node: IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
95
95
|
makePointerPropertyAccessExpression(expression: string, name: string): CppPointerPropertyAccessExpression;
|
|
96
96
|
writePrintLog(message: string): void;
|
|
97
97
|
makeDefinedCheck(value: string): LanguageExpression;
|
|
@@ -107,19 +107,19 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
107
107
|
makeTupleAssign(receiver: string, tupleFields: string[]): LanguageStatement;
|
|
108
108
|
get supportedModifiers(): MethodModifier[];
|
|
109
109
|
get supportedFieldModifiers(): FieldModifier[];
|
|
110
|
-
|
|
111
|
-
ordinalFromEnum(value: LanguageExpression, _: IDLType): LanguageExpression;
|
|
110
|
+
enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
112
111
|
makeUnsafeCast(param: string): string;
|
|
113
112
|
makeUnsafeCast_(value: LanguageExpression, type: IDLType, typeOptions?: PrintHint): string;
|
|
114
|
-
|
|
113
|
+
i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
115
114
|
escapeKeyword(name: string): string;
|
|
116
|
-
makeEnumEntity(enumEntity: IDLEnum,
|
|
115
|
+
makeEnumEntity(enumEntity: IDLEnum, options: {
|
|
116
|
+
isExport: boolean;
|
|
117
|
+
isDeclare?: boolean;
|
|
118
|
+
}): LanguageStatement;
|
|
117
119
|
private decayTypeName;
|
|
118
120
|
stringifyMethodReturnType(type: IDLType, hint?: PrintHint): string;
|
|
119
121
|
stringifyMethodArgType(type: IDLType, hint?: PrintHint): string;
|
|
120
122
|
stringifyTypeWithReceiver(type: IDLType, receiver?: string): string;
|
|
121
123
|
makeSerializerConstructorSignatures(): NamedMethodSignature[] | undefined;
|
|
122
|
-
makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
|
|
123
|
-
makeLengthDeserializer(deserializer: string): LanguageStatement | undefined;
|
|
124
124
|
}
|
|
125
125
|
//# sourceMappingURL=CppLanguageWriter.d.ts.map
|
|
@@ -25,15 +25,15 @@ import * as idl from "../../idl";
|
|
|
25
25
|
// EXPRESSIONS //
|
|
26
26
|
////////////////////////////////////////////////////////////////
|
|
27
27
|
export class CppCastExpression {
|
|
28
|
-
constructor(convertor, value,
|
|
28
|
+
constructor(convertor, value, node, options) {
|
|
29
29
|
this.convertor = convertor;
|
|
30
30
|
this.value = value;
|
|
31
|
-
this.
|
|
31
|
+
this.node = node;
|
|
32
32
|
this.options = options;
|
|
33
33
|
}
|
|
34
34
|
asString() {
|
|
35
35
|
var _a, _b, _c, _d;
|
|
36
|
-
if (forceAsNamedNode(this.
|
|
36
|
+
if (forceAsNamedNode(this.node).name === "Tag") {
|
|
37
37
|
return `${this.value.asString()} == ${PrimitiveTypeList.UndefinedRuntime} ? ${PrimitiveTypeList.UndefinedTag} : ${PrimitiveTypeList.ObjectTag}`;
|
|
38
38
|
}
|
|
39
39
|
let resultName = '';
|
|
@@ -41,7 +41,7 @@ export class CppCastExpression {
|
|
|
41
41
|
resultName = this.options.overrideTypeName;
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
|
-
const pureName = this.mapTypeWithReceiver(
|
|
44
|
+
const pureName = this.mapTypeWithReceiver((_b = this.options) === null || _b === void 0 ? void 0 : _b.receiver);
|
|
45
45
|
const qualifiedName = ((_c = this.options) === null || _c === void 0 ? void 0 : _c.toRef) ? `${pureName}&` : pureName;
|
|
46
46
|
resultName = qualifiedName;
|
|
47
47
|
}
|
|
@@ -49,12 +49,12 @@ export class CppCastExpression {
|
|
|
49
49
|
? `reinterpret_cast<${resultName}>(${this.value.asString()})`
|
|
50
50
|
: `static_cast<${resultName}>(${this.value.asString()})`;
|
|
51
51
|
}
|
|
52
|
-
mapTypeWithReceiver(
|
|
52
|
+
mapTypeWithReceiver(receiver) {
|
|
53
53
|
// make deducing type from receiver
|
|
54
54
|
if (receiver !== undefined) {
|
|
55
55
|
return `std::decay<decltype(${receiver})>::type`;
|
|
56
56
|
}
|
|
57
|
-
return this.convertor.convert(
|
|
57
|
+
return this.convertor.convert(this.node);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
export class CppPointerPropertyAccessExpression {
|
|
@@ -314,8 +314,8 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
314
314
|
makeMapResize(mapTypeName, keyType, valueType, map, size, deserializer) {
|
|
315
315
|
return new CppMapResizeStatement(mapTypeName, keyType, valueType, map, size, deserializer);
|
|
316
316
|
}
|
|
317
|
-
makeCast(expr,
|
|
318
|
-
return new CppCastExpression(this.typeConvertor, expr,
|
|
317
|
+
makeCast(expr, node, options) {
|
|
318
|
+
return new CppCastExpression(this.typeConvertor, expr, node, options);
|
|
319
319
|
}
|
|
320
320
|
makePointerPropertyAccessExpression(expression, name) {
|
|
321
321
|
return new CppPointerPropertyAccessExpression(expression, name);
|
|
@@ -370,11 +370,8 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
370
370
|
get supportedFieldModifiers() {
|
|
371
371
|
return [];
|
|
372
372
|
}
|
|
373
|
-
|
|
374
|
-
return this.makeString(`static_cast<${this.typeConvertor.convert(
|
|
375
|
-
}
|
|
376
|
-
ordinalFromEnum(value, _) {
|
|
377
|
-
return value;
|
|
373
|
+
enumFromI32(value, enumEntry) {
|
|
374
|
+
return this.makeString(`static_cast<${this.typeConvertor.convert(enumEntry)}>(` + value.asString() + `)`);
|
|
378
375
|
}
|
|
379
376
|
makeUnsafeCast(param) {
|
|
380
377
|
return param;
|
|
@@ -396,13 +393,13 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
396
393
|
}
|
|
397
394
|
return `(${typeName}) (${value.asString()})`;
|
|
398
395
|
}
|
|
399
|
-
|
|
400
|
-
return `static_cast<${this.typeConvertor.convert(idl.createReferenceType(enumEntry))}>(${value})
|
|
396
|
+
i32FromEnum(value, enumEntry) {
|
|
397
|
+
return this.makeString(`static_cast<${this.typeConvertor.convert(idl.createReferenceType(enumEntry))}>(${value.asString()})`);
|
|
401
398
|
}
|
|
402
399
|
escapeKeyword(name) {
|
|
403
400
|
return cppKeywords.has(name) ? name + "_" : name;
|
|
404
401
|
}
|
|
405
|
-
makeEnumEntity(enumEntity,
|
|
402
|
+
makeEnumEntity(enumEntity, options) {
|
|
406
403
|
return new CppEnumEntityStatement(enumEntity);
|
|
407
404
|
}
|
|
408
405
|
decayTypeName(typeName) {
|
|
@@ -463,17 +460,11 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
463
460
|
idl.IDLSerializerBuffer,
|
|
464
461
|
IDLU32Type,
|
|
465
462
|
createReferenceType("CallbackResourceHolder")
|
|
466
|
-
], ["data", "dataLength", "resourceHolder"], [undefined, `0`, `nullptr`], [undefined, undefined, undefined, PrintHint.AsPointer]);
|
|
463
|
+
], ["data", "dataLength", "resourceHolder"], [undefined, `0`, `nullptr`], undefined, [undefined, undefined, undefined, PrintHint.AsPointer]);
|
|
467
464
|
const ownedDataCtor = new NamedMethodSignature(IDLVoidType, [
|
|
468
465
|
createReferenceType("CallbackResourceHolder")
|
|
469
|
-
], ["resourceHolder"], [`nullptr`], [undefined, PrintHint.AsPointer]);
|
|
466
|
+
], ["resourceHolder"], [`nullptr`], undefined, [undefined, PrintHint.AsPointer]);
|
|
470
467
|
return [ownedDataCtor, fromBufferCtor];
|
|
471
468
|
}
|
|
472
|
-
makeLengthSerializer(serializer, value) {
|
|
473
|
-
return undefined;
|
|
474
|
-
}
|
|
475
|
-
makeLengthDeserializer(deserializer) {
|
|
476
|
-
return undefined;
|
|
477
|
-
}
|
|
478
469
|
}
|
|
479
470
|
//# sourceMappingURL=CppLanguageWriter.js.map
|