@idlizer/core 2.1.2 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +3 -3
- package/build/lib/src/LanguageWriters/ArgConvertors.js +36 -30
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +26 -13
- package/build/lib/src/LanguageWriters/LanguageWriter.js +26 -52
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +2 -1
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +16 -5
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +4 -2
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +20 -12
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +7 -17
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.d.ts +4 -2
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +9 -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 +4 -2
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +47 -28
- 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 +12 -9
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +10 -37
- 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 +14 -8
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +18 -18
- 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 +7 -5
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +22 -43
- package/build/lib/src/LibraryInterface.d.ts +1 -4
- package/build/lib/src/config.d.ts +206 -66
- package/build/lib/src/config.js +7 -3
- package/build/lib/src/configDescriber.d.ts +30 -3
- package/build/lib/src/configDescriber.js +99 -1
- package/build/lib/src/from-idl/DtsPrinter.js +30 -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 +4 -1
- package/build/lib/src/from-idl/deserialize.js +434 -346
- package/build/lib/src/idl.d.ts +25 -17
- package/build/lib/src/idl.js +363 -109
- 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 +2 -2
- 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 +129 -65
- 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 +2 -1
- package/build/lib/src/peer-generation/idl/common.js +13 -2
- package/build/lib/src/peer-generation/isMaterialized.js +25 -8
- package/build/lib/src/peer-generation/unions.d.ts +3 -2
- package/build/lib/src/peer-generation/unions.js +6 -2
- package/build/lib/src/resolveNamedNode.d.ts +3 -0
- package/build/lib/src/resolveNamedNode.js +105 -0
- package/build/lib/src/util.d.ts +6 -0
- package/build/lib/src/util.js +33 -0
- package/build/lib/src/visitor.d.ts +0 -1
- package/build/lib/src/visitor.js +1 -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 +35 -7
|
@@ -70,7 +70,7 @@ export class GenericCppConvertor {
|
|
|
70
70
|
}
|
|
71
71
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
72
72
|
convertOptional(type) {
|
|
73
|
-
return this.convertNode(type.type);
|
|
73
|
+
return { text: generatorConfiguration().OptionalPrefix + this.convertNode(type.type).text, noPrefix: true };
|
|
74
74
|
}
|
|
75
75
|
convertUnion(type) {
|
|
76
76
|
return this.make(type.name, false);
|
|
@@ -90,16 +90,21 @@ export class GenericCppConvertor {
|
|
|
90
90
|
}
|
|
91
91
|
throw new Error(`Unmapped container type ${idl.DebugUtils.debugPrintType(type)}`);
|
|
92
92
|
}
|
|
93
|
-
convertImport(type
|
|
93
|
+
convertImport(type) {
|
|
94
|
+
console.warn("Imports are not implemented yet");
|
|
94
95
|
return this.make(idl.IDLCustomObjectType.name);
|
|
95
96
|
}
|
|
97
|
+
convertTypeReferenceAsImport(type, _) {
|
|
98
|
+
return this.convertTypeReference(type);
|
|
99
|
+
}
|
|
96
100
|
convertTypeReference(type) {
|
|
97
101
|
var _a;
|
|
98
102
|
const refName = type.name;
|
|
99
103
|
switch (refName) {
|
|
100
104
|
case "object":
|
|
101
105
|
case "Object":
|
|
102
|
-
|
|
106
|
+
// treat object as interop resource
|
|
107
|
+
return this.make('Object');
|
|
103
108
|
}
|
|
104
109
|
if (generatorConfiguration().parameterized.includes(refName)) {
|
|
105
110
|
return this.make('CustomObject');
|
|
@@ -138,13 +143,12 @@ export class GenericCppConvertor {
|
|
|
138
143
|
case idl.IDLNumberType: return this.make(`Number`);
|
|
139
144
|
case idl.IDLStringType: return this.make(`String`);
|
|
140
145
|
case idl.IDLBooleanType: return this.make(`Boolean`);
|
|
141
|
-
case idl.IDLBigintType: return this.make(`
|
|
146
|
+
case idl.IDLBigintType: return this.make(`Int64`); // TODO add arbitrary precision numeric type
|
|
142
147
|
case idl.IDLPointerType: return this.make('NativePointer');
|
|
143
148
|
case idl.IDLCustomObjectType: return this.make('CustomObject');
|
|
144
149
|
case idl.IDLUnknownType:
|
|
145
150
|
case idl.IDLAnyType: return this.make(`Object`);
|
|
146
151
|
case idl.IDLUndefinedType: return this.make(`Undefined`);
|
|
147
|
-
case idl.IDLLengthType: return this.make(`Length`);
|
|
148
152
|
case idl.IDLFunctionType: return this.make(`Function`);
|
|
149
153
|
case idl.IDLDate: return this.make(`Date`);
|
|
150
154
|
case idl.IDLBufferType: return this.make('Buffer');
|
|
@@ -154,7 +158,7 @@ export class GenericCppConvertor {
|
|
|
154
158
|
throw new Error(`Unmapped primitive type ${idl.DebugUtils.debugPrintType(type)}`);
|
|
155
159
|
}
|
|
156
160
|
qualifiedName(target) {
|
|
157
|
-
return qualifiedName(target, "_");
|
|
161
|
+
return qualifiedName(target, "_", "namespace.name");
|
|
158
162
|
}
|
|
159
163
|
computeTargetTypeLiteralName(decl) {
|
|
160
164
|
const map = new Map();
|
|
@@ -171,9 +175,6 @@ export class GenericCppConvertor {
|
|
|
171
175
|
export class CppConvertor extends GenericCppConvertor {
|
|
172
176
|
unwrap(type, result) {
|
|
173
177
|
const conf = generatorConfiguration();
|
|
174
|
-
if (idl.isType(type) && idl.isOptionalType(type)) {
|
|
175
|
-
return `${conf.OptionalPrefix}${result.text}`;
|
|
176
|
-
}
|
|
177
178
|
if (result.noPrefix) {
|
|
178
179
|
return result.text;
|
|
179
180
|
}
|
|
@@ -187,12 +188,16 @@ export class CppConvertor extends GenericCppConvertor {
|
|
|
187
188
|
if (!idl.isType(type))
|
|
188
189
|
return false;
|
|
189
190
|
const { resolver } = this;
|
|
191
|
+
const seen = new Set;
|
|
190
192
|
while (type && idl.isReferenceType(type)) {
|
|
191
193
|
const resolved = resolver.resolveTypeReference(type);
|
|
192
194
|
if (!resolved)
|
|
193
195
|
return false;
|
|
194
196
|
if (!idl.isTypedef(resolved))
|
|
195
197
|
break;
|
|
198
|
+
if (seen.has(resolved))
|
|
199
|
+
return false;
|
|
200
|
+
seen.add(resolved);
|
|
196
201
|
type = resolved.type;
|
|
197
202
|
}
|
|
198
203
|
return idl.isPrimitiveType(type);
|
|
@@ -221,7 +226,6 @@ export class CppInteropArgConvertor extends InteropArgConvertor {
|
|
|
221
226
|
case idl.IDLNumberType: return "KInteropNumber";
|
|
222
227
|
case idl.IDLSerializerBuffer: return "KSerializerBuffer";
|
|
223
228
|
case idl.IDLBufferType: return "KInteropBuffer";
|
|
224
|
-
case idl.IDLLengthType: return "KLength";
|
|
225
229
|
case idl.IDLFunctionType: return PrimitiveTypesInstance.Int32.getText();
|
|
226
230
|
case idl.IDLDate: return PrimitiveTypesInstance.Int64.getText();
|
|
227
231
|
case idl.IDLPointerType: return PrimitiveTypesInstance.NativePointer.getText();
|
|
@@ -247,7 +251,11 @@ export class CppReturnTypeConvertor {
|
|
|
247
251
|
return 'void';
|
|
248
252
|
return this.convertor.convert(type);
|
|
249
253
|
}
|
|
250
|
-
convertImport(type
|
|
254
|
+
convertImport(type) {
|
|
255
|
+
console.warn("Imports are not implemented yet");
|
|
256
|
+
return "void";
|
|
257
|
+
}
|
|
258
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
251
259
|
return this.convertor.convert(type);
|
|
252
260
|
}
|
|
253
261
|
convertOptional(type) {
|
|
@@ -264,7 +272,7 @@ export class CppReturnTypeConvertor {
|
|
|
264
272
|
convertTypeReference(type) {
|
|
265
273
|
const decl = this.resolver.resolveTypeReference(type);
|
|
266
274
|
if (decl && idl.isInterface(decl) && isMaterialized(decl, this.resolver)) {
|
|
267
|
-
return generatorTypePrefix() + qualifiedName(decl, "_");
|
|
275
|
+
return generatorTypePrefix() + qualifiedName(decl, "_", "namespace.name");
|
|
268
276
|
}
|
|
269
277
|
return this.convertor.convert(type);
|
|
270
278
|
}
|
|
@@ -13,27 +13,16 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from "../../idl";
|
|
16
|
-
import {
|
|
17
|
-
import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
|
|
18
|
-
import { convertDeclaration } from "../nameConvertor";
|
|
16
|
+
import { LanguageWriter } from "../LanguageWriter";
|
|
19
17
|
import { TSInteropArgConvertor, TSTypeNameConvertor } from "./TSConvertors";
|
|
20
18
|
export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
21
19
|
convertTypeReference(type) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
let typeName = super.convertTypeReference(type);
|
|
21
|
+
if (LanguageWriter.isReferenceRelativeToNamespaces && idl.isReferenceType(type)) {
|
|
22
|
+
const namespacesPath = idl.getNamespacesPathFor(type).map(it => `${it.name}.`).join("");
|
|
23
|
+
if (typeName.startsWith(namespacesPath))
|
|
24
|
+
typeName = typeName.substring(namespacesPath.length);
|
|
26
25
|
}
|
|
27
|
-
// TODO: Needs to be implemented properly
|
|
28
|
-
const types = type.name.split(".");
|
|
29
|
-
if (types.length > 1) {
|
|
30
|
-
// Takes only name without the namespace prefix
|
|
31
|
-
const decl = this.resolver.resolveTypeReference(idl.createReferenceType(types.slice(-1).join()));
|
|
32
|
-
if (decl !== undefined) {
|
|
33
|
-
return convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), decl);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const typeName = super.convertTypeReference(type);
|
|
37
26
|
// TODO: Fix for 'TypeError: Type 'Function<R>' is generic but type argument were not provided.'
|
|
38
27
|
if (typeName === "Function") {
|
|
39
28
|
return "Function<void>";
|
|
@@ -77,6 +66,7 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
77
66
|
case idl.IDLStringType: return 'string';
|
|
78
67
|
case idl.IDLFunctionType: return 'Object';
|
|
79
68
|
case idl.IDLBigintType: return 'long';
|
|
69
|
+
case idl.IDLCustomObjectType: return 'object';
|
|
80
70
|
}
|
|
81
71
|
return super.convertPrimitiveType(type);
|
|
82
72
|
}
|
|
@@ -9,7 +9,8 @@ export declare class InteropReturnTypeConvertor implements TypeConvertor<string>
|
|
|
9
9
|
isReturnInteropBuffer(type: idl.IDLType): boolean;
|
|
10
10
|
convert(type: idl.IDLType): string;
|
|
11
11
|
convertContainer(type: idl.IDLContainerType): string;
|
|
12
|
-
convertImport(type: idl.
|
|
12
|
+
convertImport(type: idl.IDLImport): string;
|
|
13
|
+
convertTypeReferenceAsImport(type: idl.IDLReferenceType, importClause: string): string;
|
|
13
14
|
convertOptional(type: idl.IDLOptionalType): string;
|
|
14
15
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
15
16
|
convertTypeParameter(type: idl.IDLTypeParameterType): string;
|
|
@@ -19,7 +20,8 @@ export declare class InteropReturnTypeConvertor implements TypeConvertor<string>
|
|
|
19
20
|
export declare class InteropArgConvertor implements TypeConvertor<string> {
|
|
20
21
|
convert(type: idl.IDLType): string;
|
|
21
22
|
convertContainer(type: idl.IDLContainerType): string;
|
|
22
|
-
convertImport(type: idl.
|
|
23
|
+
convertImport(type: idl.IDLImport): string;
|
|
24
|
+
convertTypeReferenceAsImport(type: idl.IDLReferenceType, importClause: string): string;
|
|
23
25
|
convertOptional(type: idl.IDLOptionalType): string;
|
|
24
26
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
25
27
|
convertTypeParameter(type: idl.IDLTypeParameterType): string;
|
|
@@ -37,9 +37,12 @@ export class InteropReturnTypeConvertor {
|
|
|
37
37
|
}
|
|
38
38
|
return KInteropReturnBuffer;
|
|
39
39
|
}
|
|
40
|
-
convertImport(type
|
|
40
|
+
convertImport(type) {
|
|
41
41
|
throw new Error(`Cannot pass import type ${type.name} through interop`);
|
|
42
42
|
}
|
|
43
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
44
|
+
return this.convertTypeReference(type);
|
|
45
|
+
}
|
|
43
46
|
convertOptional(type) {
|
|
44
47
|
return KInteropReturnBuffer;
|
|
45
48
|
}
|
|
@@ -105,7 +108,10 @@ export class InteropArgConvertor {
|
|
|
105
108
|
convertContainer(type) {
|
|
106
109
|
throw new Error(`Cannot pass container types through interop`);
|
|
107
110
|
}
|
|
108
|
-
convertImport(type
|
|
111
|
+
convertImport(type) {
|
|
112
|
+
throw new Error(`Cannot pass import types through interop`);
|
|
113
|
+
}
|
|
114
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
109
115
|
throw new Error(`Cannot pass import types through interop`);
|
|
110
116
|
}
|
|
111
117
|
convertOptional(type) {
|
|
@@ -116,6 +122,7 @@ export class InteropArgConvertor {
|
|
|
116
122
|
case idl.IDLI64Type: return "KLong";
|
|
117
123
|
case idl.IDLU64Type: return "KLong";
|
|
118
124
|
case idl.IDLI32Type: return "KInt";
|
|
125
|
+
case idl.IDLU32Type: return "KInt";
|
|
119
126
|
case idl.IDLF32Type: return "KFloat";
|
|
120
127
|
case idl.IDLNumberType: return 'KInteropNumber';
|
|
121
128
|
case idl.IDLBigintType: return 'KLong';
|
|
@@ -124,7 +131,6 @@ export class InteropArgConvertor {
|
|
|
124
131
|
case idl.IDLFunctionType: return 'KInt';
|
|
125
132
|
case idl.IDLStringType: return 'KStringPtr';
|
|
126
133
|
case idl.IDLBufferType: return `KInteropBuffer`;
|
|
127
|
-
case idl.IDLLengthType: return 'Length';
|
|
128
134
|
case idl.IDLDate: return 'KLong';
|
|
129
135
|
case idl.IDLUndefinedType:
|
|
130
136
|
case idl.IDLVoidType:
|
|
@@ -17,7 +17,8 @@ export declare class JavaTypeNameConvertor implements NodeConvertor<string>, Idl
|
|
|
17
17
|
convertCallback(type: idl.IDLCallback): string;
|
|
18
18
|
convertMethod(type: idl.IDLMethod): string;
|
|
19
19
|
convertConstant(type: idl.IDLConstant): string;
|
|
20
|
-
convertImport(type: idl.
|
|
20
|
+
convertImport(type: idl.IDLImport): string;
|
|
21
|
+
convertTypeReferenceAsImport(type: idl.IDLReferenceType, importClause: string): string;
|
|
21
22
|
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
22
23
|
convertTypeParameter(type: idl.IDLTypeParameterType): string;
|
|
23
24
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
@@ -84,13 +84,17 @@ export class JavaTypeNameConvertor {
|
|
|
84
84
|
convertConstant(type) {
|
|
85
85
|
throw new Error('Method not implemented.'); // TODO: namespace-related-to-rework
|
|
86
86
|
}
|
|
87
|
-
convertImport(type
|
|
87
|
+
convertImport(type) {
|
|
88
|
+
console.warn("Imports are not implemented yet");
|
|
89
|
+
return type.name;
|
|
90
|
+
}
|
|
91
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
88
92
|
return type.name;
|
|
89
93
|
}
|
|
90
94
|
convertTypeReference(type) {
|
|
91
95
|
const importAttr = idl.getExtAttribute(type, idl.IDLExtendedAttributes.Import);
|
|
92
96
|
if (importAttr) {
|
|
93
|
-
return this.
|
|
97
|
+
return this.convertTypeReferenceAsImport(type, importAttr);
|
|
94
98
|
}
|
|
95
99
|
const decl = this.resolver.resolveTypeReference(type);
|
|
96
100
|
if (decl) {
|
|
@@ -127,6 +131,9 @@ export class JavaTypeNameConvertor {
|
|
|
127
131
|
case idl.IDLDate: return 'Date';
|
|
128
132
|
case idl.IDLBufferType: return 'byte[]';
|
|
129
133
|
case idl.IDLInteropReturnBufferType: return 'byte[]';
|
|
134
|
+
case idl.IDLSerializerBuffer: return 'long';
|
|
135
|
+
case idl.IDLAnyType: return 'Ark_Object';
|
|
136
|
+
case idl.IDLUnknownType: return 'Ark_Object';
|
|
130
137
|
}
|
|
131
138
|
throw new Error(`Unsupported IDL primitive ${idl.DebugUtils.debugPrintType(type)}`);
|
|
132
139
|
}
|
|
@@ -154,7 +161,7 @@ export class JavaTypeNameConvertor {
|
|
|
154
161
|
case 'KStringPtr': return 'String';
|
|
155
162
|
case 'string': return 'String';
|
|
156
163
|
}
|
|
157
|
-
return name;
|
|
164
|
+
return name.split(".").at(-1);
|
|
158
165
|
}
|
|
159
166
|
}
|
|
160
167
|
class JavaIdlNodeToSolidStringConvertor extends JavaTypeNameConvertor {
|
|
@@ -178,8 +185,21 @@ export class JavaInteropArgConvertor extends InteropArgConvertor {
|
|
|
178
185
|
convertPrimitiveType(type) {
|
|
179
186
|
switch (type) {
|
|
180
187
|
case idl.IDLNumberType: return "double";
|
|
181
|
-
case idl.IDLLengthType: return "String";
|
|
182
188
|
case idl.IDLBooleanType: return "boolean";
|
|
189
|
+
case idl.IDLI64Type: return "long";
|
|
190
|
+
case idl.IDLU64Type: return "long";
|
|
191
|
+
case idl.IDLI32Type: return "int";
|
|
192
|
+
case idl.IDLU32Type: return "int";
|
|
193
|
+
case idl.IDLF32Type: return "float";
|
|
194
|
+
case idl.IDLBigintType: return "long";
|
|
195
|
+
case idl.IDLSerializerBuffer: return "long";
|
|
196
|
+
case idl.IDLFunctionType: return "int";
|
|
197
|
+
case idl.IDLStringType: return "String";
|
|
198
|
+
case idl.IDLBufferType: return "byte[]";
|
|
199
|
+
case idl.IDLDate: return "long";
|
|
200
|
+
case idl.IDLVoidType: return "void";
|
|
201
|
+
case idl.IDLUndefinedType: return "long";
|
|
202
|
+
case idl.IDLPointerType: return "long"; // return PrimitiveTypesInstance.NativePointer.getText()
|
|
183
203
|
}
|
|
184
204
|
return super.convertPrimitiveType(type);
|
|
185
205
|
}
|
|
@@ -15,7 +15,8 @@ export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNa
|
|
|
15
15
|
convertOptional(type: idl.IDLOptionalType): string;
|
|
16
16
|
convertUnion(type: idl.IDLUnionType): string;
|
|
17
17
|
convertContainer(type: idl.IDLContainerType): string;
|
|
18
|
-
convertImport(type: idl.
|
|
18
|
+
convertImport(type: idl.IDLImport): string;
|
|
19
|
+
convertTypeReferenceAsImport(type: idl.IDLReferenceType, importClause: string): string;
|
|
19
20
|
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
20
21
|
convertTypeParameter(type: idl.IDLTypeParameterType): string;
|
|
21
22
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
@@ -27,10 +28,11 @@ export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNa
|
|
|
27
28
|
export declare class TSInteropArgConvertor implements TypeConvertor<string> {
|
|
28
29
|
convert(type: idl.IDLType): string;
|
|
29
30
|
convertContainer(type: idl.IDLContainerType): string;
|
|
30
|
-
convertImport(type: idl.
|
|
31
|
+
convertImport(type: idl.IDLImport): string;
|
|
31
32
|
convertOptional(type: idl.IDLOptionalType): string;
|
|
32
33
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
33
34
|
convertTypeParameter(type: idl.IDLTypeParameterType): string;
|
|
35
|
+
convertTypeReferenceAsImport(type: idl.IDLReferenceType, importClause: string): string;
|
|
34
36
|
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
35
37
|
convertUnion(type: idl.IDLUnionType): string;
|
|
36
38
|
}
|
|
@@ -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,11 +74,23 @@ 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;
|
|
91
|
+
if (type.name === idl.IDLObjectType.name) {
|
|
92
|
+
return type.name;
|
|
93
|
+
}
|
|
80
94
|
let decl = this.resolver.resolveTypeReference(type);
|
|
81
95
|
if (decl) {
|
|
82
96
|
if (idl.isSyntheticEntry(decl)) {
|
|
@@ -89,33 +103,35 @@ export class TSTypeNameConvertor {
|
|
|
89
103
|
return this.productType(decl, isTuple, !isTuple);
|
|
90
104
|
}
|
|
91
105
|
}
|
|
106
|
+
// FIXME: isEnumMember is not TYPE!
|
|
107
|
+
if (decl && idl.isEnumMember(decl) && decl.parent) {
|
|
108
|
+
// when `interface A { field?: MyEnum.Value1 }` is generated, it is not possible
|
|
109
|
+
// to deserialize A, because there is no such type information in declaration target
|
|
110
|
+
// (can not cast MyEnum to exact MyEnum.Value1)
|
|
111
|
+
decl = decl.parent;
|
|
112
|
+
}
|
|
113
|
+
let typeSpec = type.name;
|
|
114
|
+
let typeArgs = (_b = (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => this.convert(it))) !== null && _b !== void 0 ? _b : [];
|
|
115
|
+
if (typeSpec === `Optional`)
|
|
116
|
+
return `${typeArgs} | undefined`;
|
|
117
|
+
if (typeSpec === `Function`)
|
|
118
|
+
return this.mapFunctionType(typeArgs);
|
|
119
|
+
const maybeTypeArguments = !(typeArgs === null || typeArgs === void 0 ? void 0 : typeArgs.length) ? '' : `<${typeArgs.join(', ')}>`;
|
|
120
|
+
if (decl) {
|
|
121
|
+
const path = idl.getNamespacesPathFor(decl).map(it => it.name);
|
|
122
|
+
path.push(decl.name);
|
|
123
|
+
return `${path.join(".")}${maybeTypeArguments}`;
|
|
124
|
+
}
|
|
125
|
+
return `${type.name}${maybeTypeArguments}`;
|
|
92
126
|
}
|
|
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}`;
|
|
127
|
+
return this.convert(idl.IDLCustomObjectType);
|
|
113
128
|
}
|
|
114
129
|
convertTypeParameter(type) {
|
|
115
130
|
return type.name;
|
|
116
131
|
}
|
|
117
132
|
convertPrimitiveType(type) {
|
|
118
133
|
switch (type) {
|
|
134
|
+
case idl.IDLFunctionType: return 'Function';
|
|
119
135
|
case idl.IDLUnknownType:
|
|
120
136
|
case idl.IDLCustomObjectType: return 'unknown';
|
|
121
137
|
case idl.IDLThisType: return 'this';
|
|
@@ -156,7 +172,7 @@ export class TSTypeNameConvertor {
|
|
|
156
172
|
return idlProperty;
|
|
157
173
|
}
|
|
158
174
|
mapCallback(decl) {
|
|
159
|
-
const params = decl.parameters.map(it => `${it.isVariadic ? "..." : ""}${it.name}${it.isOptional ? "?" : ""}: ${this.convert(it.type)}`);
|
|
175
|
+
const params = decl.parameters.map(it => `${it.isVariadic ? "..." : ""}${it.name}${it.isOptional ? "?" : ""}: ${this.convert(it.type)}${it.isVariadic ? "[]" : ""}`);
|
|
160
176
|
return `((${params.join(", ")}) => ${this.convert(decl.returnType)})`;
|
|
161
177
|
}
|
|
162
178
|
productType(decl, isTuple, includeFieldNames) {
|
|
@@ -181,7 +197,7 @@ export class TSInteropArgConvertor {
|
|
|
181
197
|
convertContainer(type) {
|
|
182
198
|
throw new Error(`Cannot pass container types through interop`);
|
|
183
199
|
}
|
|
184
|
-
convertImport(type
|
|
200
|
+
convertImport(type) {
|
|
185
201
|
throw new Error(`Cannot pass import types through interop`);
|
|
186
202
|
}
|
|
187
203
|
convertOptional(type) {
|
|
@@ -192,14 +208,14 @@ export class TSInteropArgConvertor {
|
|
|
192
208
|
case idl.IDLI64Type: return "KLong";
|
|
193
209
|
case idl.IDLU64Type: return "KLong";
|
|
194
210
|
case idl.IDLI32Type: return "KInt";
|
|
211
|
+
case idl.IDLU32Type: return "KInt";
|
|
195
212
|
case idl.IDLF32Type: return "KFloat";
|
|
196
213
|
case idl.IDLNumberType: return 'number';
|
|
197
214
|
case idl.IDLBigintType: return 'bigint';
|
|
198
215
|
case idl.IDLBooleanType:
|
|
199
216
|
case idl.IDLFunctionType: return 'KInt';
|
|
200
217
|
case idl.IDLStringType: return 'KStringPtr';
|
|
201
|
-
case idl.IDLBufferType: return
|
|
202
|
-
case idl.IDLLengthType: return 'Length';
|
|
218
|
+
case idl.IDLBufferType: return 'ArrayBuffer';
|
|
203
219
|
case idl.IDLDate: return 'number';
|
|
204
220
|
case idl.IDLUndefinedType:
|
|
205
221
|
case idl.IDLVoidType:
|
|
@@ -210,6 +226,9 @@ export class TSInteropArgConvertor {
|
|
|
210
226
|
convertTypeParameter(type) {
|
|
211
227
|
throw new Error("Cannot pass type parameters through interop");
|
|
212
228
|
}
|
|
229
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
230
|
+
throw new Error(`Cannot pass import types through interop`);
|
|
231
|
+
}
|
|
213
232
|
convertTypeReference(type) {
|
|
214
233
|
throw new Error(`Cannot pass type references through interop`);
|
|
215
234
|
}
|
|
@@ -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,9 +147,11 @@ 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;
|
|
@@ -154,7 +159,5 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
154
159
|
popNamespace(ident?: boolean): void;
|
|
155
160
|
castToInt(value: string, bitness: 8 | 32): string;
|
|
156
161
|
castToBoolean(value: string): string;
|
|
157
|
-
makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
|
|
158
|
-
makeLengthDeserializer(deserializer: string): LanguageStatement | undefined;
|
|
159
162
|
}
|
|
160
163
|
//# sourceMappingURL=CJLanguageWriter.d.ts.map
|