@idlizer/core 2.0.43 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +17 -1
- package/build/lib/src/LanguageWriters/ArgConvertors.js +115 -13
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +13 -5
- package/build/lib/src/LanguageWriters/LanguageWriter.js +9 -3
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +1 -1
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +15 -13
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +0 -1
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +4 -0
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +2 -1
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +10 -2
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +47 -29
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +10 -3
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +7 -10
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +0 -5
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +1 -42
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +9 -3
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +30 -7
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +8 -2
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +38 -11
- package/build/lib/src/LibraryInterface.d.ts +0 -1
- package/build/lib/src/config.d.ts +889 -0
- package/build/lib/src/config.js +11 -0
- package/build/lib/src/from-idl/DtsPrinter.js +2 -2
- package/build/lib/src/idl.d.ts +4 -2
- package/build/lib/src/idl.js +13 -2
- package/build/lib/src/idlize.d.ts +1 -0
- package/build/lib/src/idlize.js +3 -2
- package/build/lib/src/index.d.ts +2 -0
- package/build/lib/src/index.js +2 -0
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +1 -3
- package/build/lib/src/peer-generation/PeerLibrary.js +23 -9
- package/build/lib/src/peer-generation/PeerMethod.js +2 -16
- package/build/lib/src/peer-generation/isEnumType.d.ts +5 -0
- package/build/lib/src/peer-generation/isEnumType.js +29 -0
- package/build/lib/src/peer-generation/isMaterialized.js +16 -1
- package/build/lib/src/peer-generation/modules.d.ts +10 -0
- package/build/lib/src/peer-generation/modules.js +38 -0
- package/build/lib/src/util.d.ts +1 -0
- package/build/lib/src/util.js +6 -0
- package/package.json +2 -2
- package/build/lib/src/configMerge.d.ts +0 -2
- package/build/lib/src/configMerge.js +0 -42
- package/webidl2.js/LICENSE +0 -21
- package/webidl2.js/README.md +0 -827
- package/webidl2.js/dist/package.json +0 -3
|
@@ -12,15 +12,15 @@
|
|
|
12
12
|
* See the License for the specific language governing permissions and
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
|
-
import { createReferenceType, forceAsNamedNode, IDLU32Type,
|
|
15
|
+
import { createReferenceType, forceAsNamedNode, IDLU32Type, IDLVoidType } from '../../idl';
|
|
16
16
|
import { Language } from '../../Language';
|
|
17
17
|
import { PrimitiveTypeList } from "../../peer-generation/PrimitiveType";
|
|
18
18
|
import { AssignStatement, BlockStatement, FieldModifier, PrintHint, MethodModifier, NamedMethodSignature, StringExpression } from "../LanguageWriter";
|
|
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
|
////////////////////////////////////////////////////////////////
|
|
@@ -217,7 +217,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
217
217
|
this.popIndent();
|
|
218
218
|
this.print(`}`);
|
|
219
219
|
}
|
|
220
|
-
writeProperty(propName, propType,
|
|
220
|
+
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
221
221
|
throw new Error("writeProperty for c++ is not implemented yet.");
|
|
222
222
|
}
|
|
223
223
|
writeTypeDeclaration(decl) {
|
|
@@ -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;
|
|
@@ -463,7 +460,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
463
460
|
}
|
|
464
461
|
makeSerializerConstructorSignatures() {
|
|
465
462
|
const fromBufferCtor = new NamedMethodSignature(IDLVoidType, [
|
|
466
|
-
|
|
463
|
+
idl.IDLSerializerBuffer,
|
|
467
464
|
IDLU32Type,
|
|
468
465
|
createReferenceType("CallbackResourceHolder")
|
|
469
466
|
], ["data", "dataLength", "resourceHolder"], [undefined, `0`, `nullptr`], [undefined, undefined, undefined, PrintHint.AsPointer]);
|
|
@@ -42,7 +42,6 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
42
42
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
43
43
|
makeMapSize(map: string): LanguageExpression;
|
|
44
44
|
get supportedModifiers(): MethodModifier[];
|
|
45
|
-
makeUnsafeCast(convertor: ArgConvertor, param: string): string;
|
|
46
45
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
47
46
|
makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index?: number): LanguageExpression;
|
|
48
47
|
enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
|
|
@@ -55,12 +54,8 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
55
54
|
makeEnumEntity(enumEntity: IDLEnum, isExport: boolean): LanguageStatement;
|
|
56
55
|
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
57
56
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
58
|
-
isDirectType(type: IDLType): boolean;
|
|
59
57
|
isQuickType(type: IDLType): boolean;
|
|
60
|
-
tryWriteQuick(method: Method): void;
|
|
61
58
|
writeNativeMethodDeclaration(method: Method): void;
|
|
62
|
-
writeProperty(propName: string, propType: IDLType): void;
|
|
63
|
-
makeEnumCast(value: string, _unsafe: boolean, convertor: ArgConvertor | undefined): string;
|
|
64
59
|
makeUnionVariantCondition(convertor: ArgConvertor, valueName: string, valueType: string, type: string, convertorIndex: number, runtimeTypeIndex: number): LanguageExpression;
|
|
65
60
|
makeCastCustomObject(customName: string, isGenericType: boolean): LanguageExpression;
|
|
66
61
|
makeHasOwnProperty(value: string, valueTypeName: string, property: string, propertyTypeName: string): LanguageExpression;
|
|
@@ -15,14 +15,13 @@
|
|
|
15
15
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
16
16
|
import { LambdaExpression, MethodModifier } from "../LanguageWriter";
|
|
17
17
|
import { TSCastExpression, TSLanguageWriter } from "./TsLanguageWriter";
|
|
18
|
-
import { getExtAttribute,
|
|
18
|
+
import { getExtAttribute, IDLThisType } from '../../idl';
|
|
19
19
|
import { AggregateConvertor, ArrayConvertor, CustomTypeConvertor, InterfaceConvertor, MaterializedClassConvertor, OptionConvertor, UnionConvertor, BufferConvertor } from "../ArgConvertors";
|
|
20
20
|
import * as idl from '../../idl';
|
|
21
21
|
import { convertDeclaration } from "../nameConvertor";
|
|
22
22
|
import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
|
|
23
23
|
import { Language } from "../../Language";
|
|
24
24
|
import { RuntimeType } from "../common";
|
|
25
|
-
import { throwException } from "../../util";
|
|
26
25
|
////////////////////////////////////////////////////////////////
|
|
27
26
|
// STATEMENTS //
|
|
28
27
|
////////////////////////////////////////////////////////////////
|
|
@@ -177,13 +176,6 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
177
176
|
get supportedModifiers() {
|
|
178
177
|
return [MethodModifier.PUBLIC, MethodModifier.PRIVATE, MethodModifier.NATIVE, MethodModifier.STATIC];
|
|
179
178
|
}
|
|
180
|
-
makeUnsafeCast(convertor, param) {
|
|
181
|
-
if (idl.isEnum(convertor.idlType) && !param.endsWith(".value")) {
|
|
182
|
-
const isStringEnum = idl.isStringEnum(convertor.idlType);
|
|
183
|
-
return `(${param} as ${this.typeConvertor.convert(convertor.idlType)}).${isStringEnum ? 'ordinal' : 'value'}`;
|
|
184
|
-
}
|
|
185
|
-
return super.makeUnsafeCast(convertor, param);
|
|
186
|
-
}
|
|
187
179
|
runtimeType(param, valueType, value) {
|
|
188
180
|
super.runtimeType(param, valueType, value);
|
|
189
181
|
}
|
|
@@ -226,48 +218,15 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
226
218
|
// ArkTS does not support - 'this.?'
|
|
227
219
|
super.writeMethodCall(receiver, method, params, nullable && receiver !== "this");
|
|
228
220
|
}
|
|
229
|
-
isDirectType(type) {
|
|
230
|
-
let converted = this.getNodeName(type);
|
|
231
|
-
return type == idl.IDLI32Type || type == idl.IDLPointerType || type == idl.IDLBooleanType
|
|
232
|
-
|| type == idl.IDLVoidType || converted == "KPointer" || converted == "KInt";
|
|
233
|
-
}
|
|
234
221
|
isQuickType(type) {
|
|
235
222
|
return idl.asPromise(type) == undefined;
|
|
236
223
|
}
|
|
237
|
-
tryWriteQuick(method) {
|
|
238
|
-
var _a;
|
|
239
|
-
if ((_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.THROWS))
|
|
240
|
-
return;
|
|
241
|
-
if (false && this.isDirectType(method.signature.returnType) && method.signature.args.every((type) => this.isDirectType(type))) {
|
|
242
|
-
this.print('@ani.unsafe.Direct');
|
|
243
|
-
return;
|
|
244
|
-
}
|
|
245
|
-
if (this.isQuickType(method.signature.returnType)) {
|
|
246
|
-
this.print('@ani.unsafe.Quick');
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
224
|
writeNativeMethodDeclaration(method) {
|
|
251
225
|
if (method.signature.returnType === IDLThisType) {
|
|
252
226
|
throw new Error('static method can not return this!');
|
|
253
227
|
}
|
|
254
|
-
this.tryWriteQuick(method);
|
|
255
228
|
this.writeMethodDeclaration(method.name, method.signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
|
|
256
229
|
}
|
|
257
|
-
writeProperty(propName, propType) {
|
|
258
|
-
throw new Error("writeProperty for ArkTS is not implemented yet.");
|
|
259
|
-
}
|
|
260
|
-
makeEnumCast(value, _unsafe, convertor) {
|
|
261
|
-
if (convertor === undefined) {
|
|
262
|
-
throwException(`The makeEnumCast function required EnumConvertor`);
|
|
263
|
-
}
|
|
264
|
-
const decl = this.resolver.toDeclaration(convertor.nativeType());
|
|
265
|
-
if (!idl.isEnum(decl)) {
|
|
266
|
-
throwException(`Declaration type must be Enum`);
|
|
267
|
-
}
|
|
268
|
-
// ((value as Axis) as int) - in case when Axis was casted to Object in Map<Axis, Smth>
|
|
269
|
-
return this.makeCast(this.makeCast(this.makeString(value), convertor.idlType), IDLI32Type).asString();
|
|
270
|
-
}
|
|
271
230
|
makeUnionVariantCondition(convertor, valueName, valueType, type, convertorIndex, runtimeTypeIndex) {
|
|
272
231
|
if (idl.isEnum(this.resolver.toDeclaration(convertor.nativeType()))) {
|
|
273
232
|
return this.instanceOf(convertor, valueName);
|
|
@@ -40,7 +40,13 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
40
40
|
writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
41
41
|
writeNativeMethodDeclaration(method: Method): void;
|
|
42
42
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
43
|
-
writeProperty(propName: string, propType: idl.IDLType
|
|
43
|
+
writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
|
|
44
|
+
method: Method;
|
|
45
|
+
op: () => void;
|
|
46
|
+
}, setter?: {
|
|
47
|
+
method: Method;
|
|
48
|
+
op: () => void;
|
|
49
|
+
}): void;
|
|
44
50
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
45
51
|
writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
46
52
|
makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
|
|
@@ -74,11 +80,11 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
74
80
|
makeClassInit(type: idl.IDLType, paramenters: LanguageExpression[]): LanguageExpression;
|
|
75
81
|
makeMapInit(type: idl.IDLType): LanguageExpression;
|
|
76
82
|
makeTupleAccess(value: string, index: number): LanguageExpression;
|
|
77
|
-
enumFromOrdinal(value: LanguageExpression,
|
|
83
|
+
enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
|
|
78
84
|
ordinalFromEnum(value: LanguageExpression, _: idl.IDLType): LanguageExpression;
|
|
79
85
|
makeValueFromOption(value: string): LanguageExpression;
|
|
80
86
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
81
|
-
makeEnumCast(
|
|
87
|
+
makeEnumCast(_enumEntry: idl.IDLEnum, enumName: string): string;
|
|
82
88
|
castToBoolean(value: string): string;
|
|
83
89
|
makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
|
|
84
90
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { Language } from '../../Language';
|
|
16
16
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
17
|
-
import { AssignStatement, CheckOptionalStatement, FieldModifier, LambdaExpression, MethodModifier, } from "../LanguageWriter";
|
|
17
|
+
import { AssignStatement, CheckOptionalStatement, FieldModifier, LambdaExpression, Method, MethodModifier, MethodSignature, NamedMethodSignature, } from "../LanguageWriter";
|
|
18
18
|
import { CLikeExpressionStatement, CLikeLanguageWriter, CLikeLoopStatement, CLikeReturnStatement } from "./CLikeLanguageWriter";
|
|
19
19
|
import * as idl from '../../idl';
|
|
20
20
|
import { RuntimeType } from "../common";
|
|
@@ -149,8 +149,29 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
149
149
|
this.popIndent();
|
|
150
150
|
this.printer.print(`}`);
|
|
151
151
|
}
|
|
152
|
-
writeProperty(propName, propType) {
|
|
153
|
-
|
|
152
|
+
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
153
|
+
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
154
|
+
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
155
|
+
let containerName = propName.concat("_container");
|
|
156
|
+
if (getter) {
|
|
157
|
+
if (!getter.op) {
|
|
158
|
+
this.print(`private var ${this.getNodeName(propType)} ${containerName};`);
|
|
159
|
+
}
|
|
160
|
+
this.writeGetterImplementation(new Method(propName, new MethodSignature(propType, []), isStatic ? [MethodModifier.STATIC, MethodModifier.PUBLIC] : [MethodModifier.PUBLIC]), getter ? getter.op :
|
|
161
|
+
(writer) => {
|
|
162
|
+
writer.print(`return ${containerName}`);
|
|
163
|
+
});
|
|
164
|
+
if (isMutable) {
|
|
165
|
+
const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
|
|
166
|
+
this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC, MethodModifier.PUBLIC] : [MethodModifier.PUBLIC]), setter ? setter.op :
|
|
167
|
+
(writer) => {
|
|
168
|
+
writer.print(`${containerName} = ${propName};`);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
this.writeMethodDeclaration(propName, new MethodSignature(propType, []));
|
|
174
|
+
}
|
|
154
175
|
}
|
|
155
176
|
writeTypeDeclaration(decl) {
|
|
156
177
|
throw new Error(`Type declarations do not exist in Java, use something else`);
|
|
@@ -255,11 +276,13 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
255
276
|
makeTupleAccess(value, index) {
|
|
256
277
|
return this.makeString(`${value}.value${index}`);
|
|
257
278
|
}
|
|
258
|
-
enumFromOrdinal(value,
|
|
259
|
-
|
|
279
|
+
enumFromOrdinal(value, enumEntry) {
|
|
280
|
+
const enumName = idl.forceAsNamedNode(enumEntry).name;
|
|
281
|
+
const ordinal = value.asString();
|
|
282
|
+
return this.makeString(`${enumName}.values()[${ordinal}]`);
|
|
260
283
|
}
|
|
261
284
|
ordinalFromEnum(value, _) {
|
|
262
|
-
return this.makeString(`${value.asString()}.
|
|
285
|
+
return this.makeString(`${value.asString()}.ordinal()`);
|
|
263
286
|
}
|
|
264
287
|
makeValueFromOption(value) {
|
|
265
288
|
return this.makeString(`${value}`);
|
|
@@ -267,7 +290,7 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
267
290
|
runtimeType(param, valueType, value) {
|
|
268
291
|
this.writeStatement(this.makeAssign(valueType, undefined, this.makeRuntimeTypeGetterCall(value), false));
|
|
269
292
|
}
|
|
270
|
-
makeEnumCast(
|
|
293
|
+
makeEnumCast(_enumEntry, enumName) {
|
|
271
294
|
return `${enumName}.value`;
|
|
272
295
|
}
|
|
273
296
|
castToBoolean(value) { return value; }
|
|
@@ -53,7 +53,13 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
53
53
|
writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
|
|
54
54
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
55
55
|
writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
56
|
-
writeProperty(propName: string, propType: idl.IDLType
|
|
56
|
+
writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
|
|
57
|
+
method: Method;
|
|
58
|
+
op: () => void;
|
|
59
|
+
}, setter?: {
|
|
60
|
+
method: Method;
|
|
61
|
+
op: () => void;
|
|
62
|
+
}): void;
|
|
57
63
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
58
64
|
writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
59
65
|
private writeDeclaration;
|
|
@@ -85,7 +91,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
85
91
|
get supportedFieldModifiers(): FieldModifier[];
|
|
86
92
|
enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
|
|
87
93
|
ordinalFromEnum(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
|
|
88
|
-
makeEnumCast(
|
|
94
|
+
makeEnumCast(enumEntry: idl.IDLEnum, param: string): string;
|
|
89
95
|
castToBoolean(value: string): string;
|
|
90
96
|
makeCallIsObject(value: string): LanguageExpression;
|
|
91
97
|
escapeKeyword(keyword: string): string;
|
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
|
+
import { isOptionalType } from '../../idl';
|
|
16
17
|
import { Language } from '../../Language';
|
|
17
18
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
18
|
-
import { AssignStatement, BlockStatement, CheckOptionalStatement, ExpressionStatement, FieldModifier, IfStatement, LambdaExpression, LanguageWriter, Method, MethodModifier, NamedMethodSignature, NaryOpExpression, ReturnStatement, StringExpression } from "../LanguageWriter";
|
|
19
|
+
import { AssignStatement, BlockStatement, CheckOptionalStatement, ExpressionStatement, FieldModifier, IfStatement, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, NamedMethodSignature, NaryOpExpression, ReturnStatement, StringExpression } from "../LanguageWriter";
|
|
19
20
|
import { RuntimeType } from "../common";
|
|
20
21
|
import { rightmostIndexOf, throwException } from "../../util";
|
|
21
22
|
import { TSKeywords } from '../../languageSpecificKeywords';
|
|
22
|
-
import {
|
|
23
|
+
import { isStringEnumType } from '../../peer-generation/isEnumType';
|
|
23
24
|
////////////////////////////////////////////////////////////////
|
|
24
25
|
// EXPRESSIONS //
|
|
25
26
|
////////////////////////////////////////////////////////////////
|
|
@@ -223,7 +224,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
223
224
|
this.writeDeclaration(name, signature, true, false, modifiers);
|
|
224
225
|
}
|
|
225
226
|
writeConstructorImplementation(className, signature, op, superCall, modifiers) {
|
|
226
|
-
this.writeDeclaration(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') : ''}
|
|
227
|
+
this.writeDeclaration(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}constructor`, signature, false, true);
|
|
227
228
|
this.pushIndent();
|
|
228
229
|
if (superCall) {
|
|
229
230
|
this.print(`super(${superCall.signature.args.map((_, i) => superCall === null || superCall === void 0 ? void 0 : superCall.signature.argName(i)).join(", ")})`);
|
|
@@ -239,8 +240,29 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
239
240
|
this.popIndent();
|
|
240
241
|
this.printer.print(`}`);
|
|
241
242
|
}
|
|
242
|
-
writeProperty(propName, propType) {
|
|
243
|
-
|
|
243
|
+
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
244
|
+
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
245
|
+
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
246
|
+
let containerName = propName.concat("_container");
|
|
247
|
+
if (getter) {
|
|
248
|
+
if (!getter.op) {
|
|
249
|
+
this.print(`private var ${this.getNodeName(propType)} ${containerName}`);
|
|
250
|
+
}
|
|
251
|
+
this.writeGetterImplementation(new Method(propName, new MethodSignature(propType, []), isStatic ? [MethodModifier.STATIC] : []), getter ? getter.op :
|
|
252
|
+
(writer) => {
|
|
253
|
+
writer.print(`return ${containerName}`);
|
|
254
|
+
});
|
|
255
|
+
if (isMutable) {
|
|
256
|
+
const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
|
|
257
|
+
this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC] : []), setter ? setter.op :
|
|
258
|
+
(writer) => {
|
|
259
|
+
writer.print(`${containerName} = ${propName}`);
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
this.writeFieldDeclaration(propName, propType, modifiers, idl.isOptionalType(propType));
|
|
265
|
+
}
|
|
244
266
|
}
|
|
245
267
|
writeTypeDeclaration(decl) {
|
|
246
268
|
var _a;
|
|
@@ -378,7 +400,11 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
378
400
|
return [FieldModifier.PUBLIC, FieldModifier.PRIVATE, FieldModifier.PROTECTED, FieldModifier.READONLY, FieldModifier.STATIC];
|
|
379
401
|
}
|
|
380
402
|
enumFromOrdinal(value, enumEntry) {
|
|
381
|
-
|
|
403
|
+
const enumName = idl.forceAsNamedNode(enumEntry).name;
|
|
404
|
+
const ordinal = value.asString();
|
|
405
|
+
return isStringEnumType(enumEntry, this.resolver)
|
|
406
|
+
? this.makeString(`Object.values(${enumName})[${ordinal}]`)
|
|
407
|
+
: this.makeString(`${ordinal}`);
|
|
382
408
|
}
|
|
383
409
|
ordinalFromEnum(value, enumEntry) {
|
|
384
410
|
const enumName = idl.forceAsNamedNode(enumEntry).name;
|
|
@@ -388,11 +414,12 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
388
414
|
}
|
|
389
415
|
return value;
|
|
390
416
|
}
|
|
391
|
-
makeEnumCast(
|
|
392
|
-
if
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
417
|
+
makeEnumCast(enumEntry, param) {
|
|
418
|
+
// Take the ordinal value if Enum is a string, and valueOf when it is an integer
|
|
419
|
+
// Enum.valueOf() - compatible with ArkTS/TS
|
|
420
|
+
return idl.isStringEnum(enumEntry)
|
|
421
|
+
? this.ordinalFromEnum(this.makeString(param), idl.createReferenceType(enumEntry)).asString()
|
|
422
|
+
: `${param}.valueOf()`;
|
|
396
423
|
}
|
|
397
424
|
castToBoolean(value) { return `+${value}`; }
|
|
398
425
|
makeCallIsObject(value) {
|
|
@@ -9,7 +9,6 @@ export interface LibraryFileInterface {
|
|
|
9
9
|
export interface LibraryInterface extends ReferenceResolver {
|
|
10
10
|
language: Language;
|
|
11
11
|
get files(): LibraryFileInterface[];
|
|
12
|
-
get libraryPackages(): string[] | undefined;
|
|
13
12
|
typeConvertor(param: string, type: idl.IDLType, isOptionalParam?: boolean): ArgConvertor;
|
|
14
13
|
declarationConvertor(param: string, type: idl.IDLReferenceType, declaration: idl.IDLEntry | undefined): ArgConvertor;
|
|
15
14
|
getInteropName(node: idl.IDLNode): string;
|