@idlizer/core 2.0.15

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.
Files changed (78) hide show
  1. package/build/lib/src/IndentedPrinter.d.ts +28 -0
  2. package/build/lib/src/IndentedPrinter.js +81 -0
  3. package/build/lib/src/Language.d.ts +15 -0
  4. package/build/lib/src/Language.js +42 -0
  5. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +318 -0
  6. package/build/lib/src/LanguageWriters/ArgConvertors.js +1015 -0
  7. package/build/lib/src/LanguageWriters/InteropConvertor.d.ts +36 -0
  8. package/build/lib/src/LanguageWriters/InteropConvertor.js +174 -0
  9. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +386 -0
  10. package/build/lib/src/LanguageWriters/LanguageWriter.js +746 -0
  11. package/build/lib/src/LanguageWriters/common.d.ts +17 -0
  12. package/build/lib/src/LanguageWriters/common.js +33 -0
  13. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +8 -0
  14. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +35 -0
  15. package/build/lib/src/LanguageWriters/index.d.ts +3 -0
  16. package/build/lib/src/LanguageWriters/index.js +3 -0
  17. package/build/lib/src/LanguageWriters/nameConvertor.d.ts +28 -0
  18. package/build/lib/src/LanguageWriters/nameConvertor.js +61 -0
  19. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +147 -0
  20. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +578 -0
  21. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +46 -0
  22. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +121 -0
  23. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +116 -0
  24. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +472 -0
  25. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +72 -0
  26. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +329 -0
  27. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +83 -0
  28. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +275 -0
  29. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +93 -0
  30. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +390 -0
  31. package/build/lib/src/LibraryInterface.d.ts +21 -0
  32. package/build/lib/src/LibraryInterface.js +2 -0
  33. package/build/lib/src/config.d.ts +8 -0
  34. package/build/lib/src/config.js +20 -0
  35. package/build/lib/src/from-idl/DtsPrinter.d.ts +35 -0
  36. package/build/lib/src/from-idl/DtsPrinter.js +375 -0
  37. package/build/lib/src/from-idl/common.d.ts +5 -0
  38. package/build/lib/src/from-idl/common.js +83 -0
  39. package/build/lib/src/from-idl/deserialize.d.ts +9 -0
  40. package/build/lib/src/from-idl/deserialize.js +384 -0
  41. package/build/lib/src/from-idl/toString.d.ts +2 -0
  42. package/build/lib/src/from-idl/toString.js +18 -0
  43. package/build/lib/src/from-idl/webidl2-utils.d.ts +20 -0
  44. package/build/lib/src/from-idl/webidl2-utils.js +84 -0
  45. package/build/lib/src/idl.d.ts +404 -0
  46. package/build/lib/src/idl.js +1015 -0
  47. package/build/lib/src/idlize.d.ts +4 -0
  48. package/build/lib/src/idlize.js +52 -0
  49. package/build/lib/src/index.d.ts +34 -0
  50. package/build/lib/src/index.js +48 -0
  51. package/build/lib/src/inheritance.d.ts +16 -0
  52. package/build/lib/src/inheritance.js +76 -0
  53. package/build/lib/src/languageSpecificKeywords.d.ts +5 -0
  54. package/build/lib/src/languageSpecificKeywords.js +51 -0
  55. package/build/lib/src/library.d.ts +67 -0
  56. package/build/lib/src/library.js +190 -0
  57. package/build/lib/src/options.d.ts +11 -0
  58. package/build/lib/src/options.js +16 -0
  59. package/build/lib/src/peer-generation/PrimitiveType.d.ts +24 -0
  60. package/build/lib/src/peer-generation/PrimitiveType.js +52 -0
  61. package/build/lib/src/peer-generation/ReferenceResolver.d.ts +9 -0
  62. package/build/lib/src/peer-generation/ReferenceResolver.js +37 -0
  63. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +28 -0
  64. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +82 -0
  65. package/build/lib/src/peer-generation/idl/common.d.ts +9 -0
  66. package/build/lib/src/peer-generation/idl/common.js +70 -0
  67. package/build/lib/src/peer-generation/unions.d.ts +29 -0
  68. package/build/lib/src/peer-generation/unions.js +111 -0
  69. package/build/lib/src/rand_utils.d.ts +6 -0
  70. package/build/lib/src/rand_utils.js +100 -0
  71. package/build/lib/src/util.d.ts +75 -0
  72. package/build/lib/src/util.js +622 -0
  73. package/package.json +49 -0
  74. package/webidl2.js/LICENSE +21 -0
  75. package/webidl2.js/README.md +827 -0
  76. package/webidl2.js/dist/package.json +3 -0
  77. package/webidl2.js/dist/webidl2.js +4547 -0
  78. package/webidl2.js/package.json +55 -0
@@ -0,0 +1,329 @@
1
+ /*
2
+ * Copyright (c) 2024 Huawei Device Co., Ltd.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ */
15
+ import { IndentedPrinter } from "../../IndentedPrinter";
16
+ import { LambdaExpression, MethodModifier } from "../LanguageWriter";
17
+ import { TSCastExpression, TSLanguageWriter } from "./TsLanguageWriter";
18
+ import { getExtAttribute, IDLI32Type, IDLThisType } from '../../idl';
19
+ import { AggregateConvertor, ArrayConvertor, CustomTypeConvertor, InterfaceConvertor, MaterializedClassConvertor, OptionConvertor, UnionConvertor } from "../ArgConvertors";
20
+ import * as idl from '../../idl';
21
+ import { convertDeclaration } from "../nameConvertor";
22
+ import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
23
+ import { Language } from "../../Language";
24
+ import { RuntimeType } from "../common";
25
+ import { throwException } from "../../util";
26
+ ////////////////////////////////////////////////////////////////
27
+ // STATEMENTS //
28
+ ////////////////////////////////////////////////////////////////
29
+ export class EtsAssignStatement {
30
+ constructor(variableName, type, expression, isDeclared = true, isConst = true) {
31
+ this.variableName = variableName;
32
+ this.type = type;
33
+ this.expression = expression;
34
+ this.isDeclared = isDeclared;
35
+ this.isConst = isConst;
36
+ }
37
+ write(writer) {
38
+ if (this.isDeclared) {
39
+ const typeClause = this.type !== undefined ? `: ${writer.getNodeName(this.type)}` : '';
40
+ const maybeAssign = this.expression !== undefined ? " = " : "";
41
+ const initValue = this.expression !== undefined ? this.expression : writer.makeString("");
42
+ writer.print(`${this.isConst ? "const" : "let"} ${this.variableName} ${typeClause}${maybeAssign}${initValue.asString()}`);
43
+ }
44
+ else {
45
+ writer.print(`${this.variableName} = ${this.expression.asString()}`);
46
+ }
47
+ }
48
+ }
49
+ class ArkTSMapForEachStatement {
50
+ constructor(map, key, value, op) {
51
+ this.map = map;
52
+ this.key = key;
53
+ this.value = value;
54
+ this.op = op;
55
+ }
56
+ write(writer) {
57
+ writer.print(`// TODO: map serialization not implemented`);
58
+ }
59
+ }
60
+ export class ArkTSEnumEntityStatement {
61
+ constructor(enumEntity, isExport) {
62
+ this.enumEntity = enumEntity;
63
+ this.isExport = isExport;
64
+ }
65
+ write(writer) {
66
+ const enumName = convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), this.enumEntity);
67
+ const members = this.enumEntity.elements
68
+ .flatMap((member, index) => {
69
+ var _a;
70
+ const initText = (_a = member.initializer) !== null && _a !== void 0 ? _a : index;
71
+ const isTypeString = typeof initText !== "number";
72
+ const originalName = getExtAttribute(member, idl.IDLExtendedAttributes.OriginalEnumMemberName);
73
+ const res = [{
74
+ name: member.name,
75
+ alias: undefined,
76
+ stringId: isTypeString ? initText : undefined,
77
+ numberId: initText
78
+ }];
79
+ if (originalName !== undefined) {
80
+ res.push({
81
+ name: originalName,
82
+ alias: undefined,
83
+ stringId: isTypeString ? initText : undefined,
84
+ numberId: initText
85
+ });
86
+ //TODO: enums do not support member aliases
87
+ // res.push({
88
+ // name: originalName,
89
+ // alias: member.name,
90
+ // stringId: undefined,
91
+ // numberId: initText as number
92
+ // })
93
+ }
94
+ return res;
95
+ });
96
+ writer.writeEnum(enumName, members);
97
+ }
98
+ }
99
+ export class ETSLambdaExpression extends LambdaExpression {
100
+ constructor(writer, convertor, signature, resolver, body) {
101
+ super(writer, signature, resolver, body);
102
+ this.convertor = convertor;
103
+ }
104
+ get statementHasSemicolon() {
105
+ return false;
106
+ }
107
+ asString() {
108
+ const params = this.signature.args.map((it, i) => {
109
+ const maybeOptional = idl.isOptionalType(it) ? "?" : "";
110
+ return `${this.signature.argName(i)}${maybeOptional}: ${this.convertor.convert(it)}`;
111
+ });
112
+ // Workaround to fix ArkTS error: SyntaxError: Unexpected token, arrow (=>)
113
+ // Issue: https://rnd-gitlab-msc.huawei.com/rus-os-team/virtual-machines-and-tools/panda/-/issues/21333
114
+ let isRetTypeCallback = idl.isCallback(this.signature.returnType);
115
+ if (idl.isReferenceType(this.signature.returnType)) {
116
+ const resolved = this.resolver.resolveTypeReference(idl.createReferenceType(this.signature.returnType.name, undefined, this.signature.returnType));
117
+ isRetTypeCallback = resolved !== undefined && idl.isCallback(resolved);
118
+ }
119
+ return `(${params.join(", ")})${isRetTypeCallback
120
+ ? "" : `:${this.convertor.convert(this.signature.returnType)}`} => { ${this.bodyAsString()} }`;
121
+ }
122
+ }
123
+ ////////////////////////////////////////////////////////////////
124
+ // UTILS //
125
+ ////////////////////////////////////////////////////////////////
126
+ export function generateTypeCheckerName(typeName) {
127
+ typeName = typeName.replaceAll('[]', 'BracketsArray')
128
+ .replaceAll('.', ''); // Todo: hack for namespaces
129
+ return `is${typeName.replaceAll('[]', 'Brackets')}`;
130
+ }
131
+ export function makeArrayTypeCheckCall(valueAccessor, typeName, writer) {
132
+ return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(typeName), [writer.makeString(valueAccessor)
133
+ ]);
134
+ }
135
+ ////////////////////////////////////////////////////////////////
136
+ // WRITER //
137
+ ////////////////////////////////////////////////////////////////
138
+ export class ETSLanguageWriter extends TSLanguageWriter {
139
+ constructor(printer, resolver, typeConvertor, arrayConvertor) {
140
+ super(printer, resolver, typeConvertor, Language.ARKTS);
141
+ this.arrayConvertor = arrayConvertor;
142
+ }
143
+ fork(options) {
144
+ var _a;
145
+ return new ETSLanguageWriter(new IndentedPrinter(), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.arrayConvertor);
146
+ }
147
+ writeNativeMethodDeclaration(name, signature) {
148
+ if (signature.returnType === IDLThisType) {
149
+ throw new Error('static method can not return this!');
150
+ }
151
+ this.writeMethodDeclaration(name, signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
152
+ }
153
+ makeAssign(variableName, type, expr, isDeclared = true, isConst = true) {
154
+ return new EtsAssignStatement(variableName, type, expr, isDeclared, isConst);
155
+ }
156
+ makeLambda(signature, body) {
157
+ return new ETSLambdaExpression(this, this.typeConvertor, signature, this.resolver, body);
158
+ }
159
+ makeMapForEach(map, key, value, op) {
160
+ return new ArkTSMapForEachStatement(map, key, value, op);
161
+ }
162
+ makeMapSize(map) {
163
+ return this.makeString(`${super.makeMapSize(map).asString()} as int32`); // TODO: cast really needed?
164
+ }
165
+ get supportedModifiers() {
166
+ return [MethodModifier.PUBLIC, MethodModifier.PRIVATE, MethodModifier.NATIVE, MethodModifier.STATIC];
167
+ }
168
+ makeUnsafeCast(convertor, param) {
169
+ if (idl.isEnum(convertor.idlType) && !param.endsWith(".value")) {
170
+ const isStringEnum = idl.isStringEnum(convertor.idlType);
171
+ return `(${param} as ${this.typeConvertor.convert(convertor.idlType)}).${isStringEnum ? 'ordinal' : 'value'}`;
172
+ }
173
+ return super.makeUnsafeCast(convertor, param);
174
+ }
175
+ runtimeType(param, valueType, value) {
176
+ super.runtimeType(param, valueType, value);
177
+ }
178
+ makeUnionVariantCast(value, type, convertor, index) {
179
+ return this.makeString(`${value} as ${type}`);
180
+ }
181
+ enumFromOrdinal(value, enumEntry) {
182
+ const enumName = this.getNodeName(enumEntry);
183
+ return this.makeString(`${value.asString()} as ${enumName}`);
184
+ }
185
+ ordinalFromEnum(value, _) {
186
+ return this.makeCast(this.makeString(`${value.asString()}`), IDLI32Type);
187
+ }
188
+ makeDiscriminatorFromFields(convertor, value, accessors, duplicates) {
189
+ if (convertor instanceof AggregateConvertor
190
+ || convertor instanceof InterfaceConvertor
191
+ || convertor instanceof MaterializedClassConvertor
192
+ || convertor instanceof CustomTypeConvertor) {
193
+ return this.instanceOf(convertor, value, duplicates);
194
+ }
195
+ return this.makeString(`${value} instanceof ${convertor.targetType(this)}`);
196
+ }
197
+ makeValueFromOption(value, destinationConvertor) {
198
+ if (idl.isEnum(this.resolver.toDeclaration(destinationConvertor.nativeType()))) {
199
+ return this.makeCast(this.makeString(value), destinationConvertor.idlType);
200
+ }
201
+ return super.makeValueFromOption(value, destinationConvertor);
202
+ }
203
+ makeCallIsResource(value) {
204
+ return this.makeString(`isResource(${value})`);
205
+ }
206
+ makeEnumEntity(enumEntity, isExport) {
207
+ return new ArkTSEnumEntityStatement(enumEntity, isExport);
208
+ }
209
+ getObjectAccessor(convertor, value, args) {
210
+ return super.getObjectAccessor(convertor, value, args);
211
+ }
212
+ writeMethodCall(receiver, method, params, nullable = false) {
213
+ // ArkTS does not support - 'this.?'
214
+ super.writeMethodCall(receiver, method, params, nullable && receiver !== "this");
215
+ }
216
+ writeProperty(propName, propType) {
217
+ throw new Error("writeProperty for ArkTS is not implemented yet.");
218
+ }
219
+ makeEnumCast(value, _unsafe, convertor) {
220
+ if (convertor === undefined) {
221
+ throwException(`The makeEnumCast function required EnumConvertor`);
222
+ }
223
+ const decl = this.resolver.toDeclaration(convertor.nativeType());
224
+ if (!idl.isEnum(decl)) {
225
+ throwException(`Declaration type must be Enum`);
226
+ }
227
+ return this.makeCast(this.makeString(`${value}${idl.isStringEnum(decl) ? "" : ".valueOf()"}`), IDLI32Type).asString();
228
+ }
229
+ makeUnionVariantCondition(convertor, valueName, valueType, type, convertorIndex, runtimeTypeIndex) {
230
+ if (idl.isEnum(this.resolver.toDeclaration(convertor.nativeType()))) {
231
+ return this.instanceOf(convertor, valueName);
232
+ }
233
+ // TODO: in ArkTS SerializerBase.runtimeType returns RuntimeType.OBJECT for enum type and not RuntimeType.NUMBER as in TS
234
+ if (convertor instanceof UnionConvertor || convertor instanceof OptionConvertor) {
235
+ // Unwrapping of type
236
+ const idlType = convertor instanceof UnionConvertor
237
+ ? convertor.nativeType().types[runtimeTypeIndex]
238
+ : idl.maybeUnwrapOptionalType(convertor.nativeType());
239
+ if (idlType !== undefined && idl.isReferenceType(idlType)) {
240
+ const resolved = this.resolver.resolveTypeReference(idl.createReferenceType(idlType.name, undefined, idlType));
241
+ type = resolved != undefined && idl.isEnum(resolved) ? RuntimeType[RuntimeType.OBJECT] : type;
242
+ }
243
+ }
244
+ return super.makeUnionVariantCondition(convertor, valueName, valueType, type, convertorIndex);
245
+ }
246
+ makeCastCustomObject(customName, isGenericType) {
247
+ if (isGenericType) {
248
+ return this.makeCast(this.makeString(customName), idl.IDLObjectType);
249
+ }
250
+ return super.makeCastCustomObject(customName, isGenericType);
251
+ }
252
+ makeHasOwnProperty(value, valueTypeName, property, propertyTypeName) {
253
+ return this.makeNaryOp("&&", [
254
+ this.makeString(`${value} instanceof ${valueTypeName}`),
255
+ this.makeString(`isInstanceOf("${propertyTypeName}", ${value}.${property})`)
256
+ ]);
257
+ }
258
+ makeEquals(args) {
259
+ // TODO: Error elimination: 'TypeError: Both operands have to be reference types'
260
+ // the '==' operator must be used when one of the operands is a reference
261
+ return super.makeNaryOp('==', args);
262
+ }
263
+ makeDiscriminatorConvertor(convertor, value, index) {
264
+ return this.instanceOf(convertor, value);
265
+ // Or this ????????
266
+ // return this.discriminatorFromExpressions(value, RuntimeType.OBJECT, [
267
+ // makeEnumTypeCheckerCall(value, this.getNodeName(convertor.idlType), this)
268
+ // ])
269
+ }
270
+ castToInt(value, bitness) {
271
+ return `${value} as int32`; // FIXME: is there int8 in ARKTS?
272
+ }
273
+ castToBoolean(value) { return `${value} ? 1 : 0`; }
274
+ instanceOf(convertor, value, duplicateMembers) {
275
+ if (convertor instanceof CustomTypeConvertor) {
276
+ return makeInterfaceTypeCheckerCall(value, this.getNodeName(convertor.idlType), [], duplicateMembers, this);
277
+ }
278
+ if (convertor instanceof InterfaceConvertor || convertor instanceof MaterializedClassConvertor) {
279
+ return makeInterfaceTypeCheckerCall(value, this.getNodeName(convertor.idlType), convertor.declaration.properties.filter(it => !it.isStatic).map(it => it.name), duplicateMembers, this);
280
+ }
281
+ if (convertor instanceof AggregateConvertor) {
282
+ return makeInterfaceTypeCheckerCall(value, convertor.aliasName !== undefined ? convertor.aliasName : this.getNodeName(convertor.idlType), convertor.members.map(it => it[0]), duplicateMembers, this);
283
+ }
284
+ if (convertor instanceof ArrayConvertor) {
285
+ return makeArrayTypeCheckCall(value, this.arrayConvertor.convert(convertor.idlType), this);
286
+ }
287
+ if (idl.isEnum(this.resolver.toDeclaration(convertor.nativeType()))) {
288
+ return makeEnumTypeCheckerCall(value, this.getNodeName(convertor.idlType), this);
289
+ }
290
+ return super.instanceOf(convertor, value, duplicateMembers);
291
+ }
292
+ typeInstanceOf(type, value, members) {
293
+ if (!members || members.length === 0) {
294
+ throw new Error("At least one member needs to provided to pass it to TypeChecker!");
295
+ }
296
+ const prop = members[0];
297
+ // Use the same typeInstanceOf<T>(...) method to compile the ETS code by two compilers ArkTS and TS
298
+ return this.makeString(`TypeChecker.typeInstanceOf<${this.getNodeName(type)}>(value, "${prop}")`);
299
+ }
300
+ makeTypeCast(value, type, options) {
301
+ return this.makeString(`TypeChecker.typeCast<${this.getNodeName(type)}>(value)`);
302
+ }
303
+ makeCast(value, type, options) {
304
+ var _a;
305
+ return new TSCastExpression(value, `${this.getNodeName(type)}`, (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
306
+ }
307
+ }
308
+ const builtInInterfaceTypes = new Map([
309
+ ["Resource",
310
+ (writer, value) => writer.makeCallIsResource(value)],
311
+ ["Object",
312
+ (writer, value) => writer.makeCallIsObject(value)],
313
+ ["ArrayBuffer",
314
+ (writer, value) => writer.makeCallIsArrayBuffer(value)]
315
+ ]);
316
+ function makeInterfaceTypeCheckerCall(valueAccessor, interfaceName, allFields, duplicates, writer) {
317
+ if (builtInInterfaceTypes.has(interfaceName)) {
318
+ return builtInInterfaceTypes.get(interfaceName)(writer, valueAccessor);
319
+ }
320
+ return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(interfaceName), [writer.makeString(valueAccessor),
321
+ ...allFields.map(it => {
322
+ return writer.makeString(duplicates.has(it) ? "true" : "false");
323
+ })
324
+ ]);
325
+ }
326
+ export function makeEnumTypeCheckerCall(valueAccessor, enumName, writer) {
327
+ return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(enumName), [writer.makeString(valueAccessor)]);
328
+ }
329
+ //# sourceMappingURL=ETSLanguageWriter.js.map
@@ -0,0 +1,83 @@
1
+ import { IndentedPrinter } from "../../IndentedPrinter";
2
+ import { AssignStatement, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
3
+ import { CLikeLanguageWriter } from "./CLikeLanguageWriter";
4
+ import * as idl from '../../idl';
5
+ import { ArgConvertor, BaseArgConvertor } from "../ArgConvertors";
6
+ import { IdlNameConvertor } from "../nameConvertor";
7
+ import { RuntimeType } from "../common";
8
+ import { ReferenceResolver } from "../../peer-generation/ReferenceResolver";
9
+ export declare class JavaCheckDefinedExpression implements LanguageExpression {
10
+ private value;
11
+ constructor(value: string);
12
+ asString(): string;
13
+ }
14
+ export declare class JavaCastExpression implements LanguageExpression {
15
+ value: LanguageExpression;
16
+ type: string;
17
+ private unsafe;
18
+ constructor(value: LanguageExpression, type: string, unsafe?: boolean);
19
+ asString(): string;
20
+ }
21
+ export declare class JavaAssignStatement extends AssignStatement {
22
+ variableName: string;
23
+ type: idl.IDLType | undefined;
24
+ expression: LanguageExpression;
25
+ isDeclared: boolean;
26
+ protected isConst: boolean;
27
+ constructor(variableName: string, type: idl.IDLType | undefined, expression: LanguageExpression, isDeclared?: boolean, isConst?: boolean);
28
+ write(writer: LanguageWriter): void;
29
+ }
30
+ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
31
+ protected typeConvertor: IdlNameConvertor;
32
+ constructor(printer: IndentedPrinter, resolver: ReferenceResolver, typeConvertor: IdlNameConvertor);
33
+ getNodeName(type: idl.IDLNode): string;
34
+ fork(options?: {
35
+ resolver?: ReferenceResolver;
36
+ }): LanguageWriter;
37
+ writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isExport?: boolean): void;
38
+ writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[]): void;
39
+ writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
40
+ writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
41
+ writeNativeMethodDeclaration(name: string, signature: MethodSignature): void;
42
+ writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
43
+ writeProperty(propName: string, propType: idl.IDLType): void;
44
+ makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
45
+ makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
46
+ makeReturn(expr: LanguageExpression): LanguageStatement;
47
+ makeCheckOptional(optional: LanguageExpression, doStatement: LanguageStatement): LanguageStatement;
48
+ makeDefinedCheck(value: string): LanguageExpression;
49
+ makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
50
+ makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
51
+ makeMapSize(map: string): LanguageExpression;
52
+ makeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
53
+ makeStatement(expr: LanguageExpression): LanguageStatement;
54
+ makeUnionSelector(value: string, valueType: string): LanguageStatement;
55
+ makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, _type: string, convertorIndex: number): LanguageExpression;
56
+ makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index: number): LanguageExpression;
57
+ makeUnionTypeDefaultInitializer(): LanguageExpression;
58
+ writePrintLog(message: string): void;
59
+ mapIDLContainerType(type: idl.IDLContainerType): string;
60
+ applyToObject(p: BaseArgConvertor, param: string, value: string, args?: ObjectArgs): LanguageStatement;
61
+ getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
62
+ makeUndefined(): LanguageExpression;
63
+ makeRuntimeType(rt: RuntimeType): LanguageExpression;
64
+ makeRuntimeTypeGetterCall(value: string): LanguageExpression;
65
+ makeMapInsert(keyAccessor: string, key: string, valueAccessor: string, value: string): LanguageStatement;
66
+ getTagType(): idl.IDLType;
67
+ getRuntimeType(): idl.IDLType;
68
+ makeTupleAssign(receiver: string, tupleFields: string[]): LanguageStatement;
69
+ get supportedModifiers(): MethodModifier[];
70
+ get supportedFieldModifiers(): FieldModifier[];
71
+ makeArrayInit(type: idl.IDLContainerType, size?: number): LanguageExpression;
72
+ makeClassInit(type: idl.IDLType, paramenters: LanguageExpression[]): LanguageExpression;
73
+ makeMapInit(type: idl.IDLType): LanguageExpression;
74
+ makeTupleAccess(value: string, index: number): LanguageExpression;
75
+ enumFromOrdinal(value: LanguageExpression, _: idl.IDLType): LanguageExpression;
76
+ ordinalFromEnum(value: LanguageExpression, _: idl.IDLType): LanguageExpression;
77
+ makeValueFromOption(value: string): LanguageExpression;
78
+ runtimeType(param: ArgConvertor, valueType: string, value: string): void;
79
+ makeEnumCast(enumName: string, _unsafe: boolean, _convertor: ArgConvertor | undefined): string;
80
+ castToBoolean(value: string): string;
81
+ makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
82
+ }
83
+ //# sourceMappingURL=JavaLanguageWriter.d.ts.map