@idlizer/core 2.1.5 → 2.1.9-arktscgen-4

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 (75) hide show
  1. package/build/lib/src/IndentedPrinter.js +2 -0
  2. package/build/lib/src/Language.d.ts +1 -0
  3. package/build/lib/src/Language.js +3 -0
  4. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +18 -4
  5. package/build/lib/src/LanguageWriters/ArgConvertors.js +162 -26
  6. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +38 -8
  7. package/build/lib/src/LanguageWriters/LanguageWriter.js +46 -4
  8. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +1 -0
  9. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +37 -14
  10. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +1 -0
  11. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +55 -54
  12. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -1
  13. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +2 -2
  14. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +1 -0
  15. package/build/lib/src/LanguageWriters/convertors/KotlinConvertor.d.ts +24 -0
  16. package/build/lib/src/LanguageWriters/convertors/KotlinConvertor.js +69 -0
  17. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +25 -0
  18. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +128 -0
  19. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -2
  20. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +44 -9
  21. package/build/lib/src/LanguageWriters/index.js +4 -0
  22. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +12 -7
  23. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +43 -27
  24. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +1 -1
  25. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +11 -2
  26. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +43 -10
  27. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +5 -2
  28. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +45 -11
  29. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -2
  30. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +3 -3
  31. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +149 -0
  32. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +495 -0
  33. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +8 -5
  34. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +17 -13
  35. package/build/lib/src/LibraryInterface.d.ts +2 -0
  36. package/build/lib/src/config.d.ts +673 -44
  37. package/build/lib/src/config.js +20 -0
  38. package/build/lib/src/configDescriber.d.ts +2 -2
  39. package/build/lib/src/configDescriber.js +3 -3
  40. package/build/lib/src/from-idl/DtsPrinter.js +12 -8
  41. package/build/lib/src/from-idl/IDLLinter.d.ts +0 -1
  42. package/build/lib/src/from-idl/IDLLinter.js +1 -7
  43. package/build/lib/src/from-idl/deserialize.d.ts +7 -1
  44. package/build/lib/src/from-idl/deserialize.js +72 -40
  45. package/build/lib/src/idl.d.ts +8 -15
  46. package/build/lib/src/idl.js +69 -72
  47. package/build/lib/src/idlize.js +2 -0
  48. package/build/lib/src/index.d.ts +2 -0
  49. package/build/lib/src/index.js +2 -0
  50. package/build/lib/src/peer-generation/LayoutManager.d.ts +4 -1
  51. package/build/lib/src/peer-generation/LayoutManager.js +5 -1
  52. package/build/lib/src/peer-generation/Materialized.d.ts +7 -3
  53. package/build/lib/src/peer-generation/Materialized.js +18 -4
  54. package/build/lib/src/peer-generation/PeerLibrary.d.ts +5 -2
  55. package/build/lib/src/peer-generation/PeerLibrary.js +30 -10
  56. package/build/lib/src/peer-generation/PeerMethod.d.ts +1 -1
  57. package/build/lib/src/peer-generation/getSuperType.d.ts +5 -0
  58. package/build/lib/src/peer-generation/getSuperType.js +55 -0
  59. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +4 -0
  60. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +7 -0
  61. package/build/lib/src/peer-generation/idl/common.d.ts +1 -0
  62. package/build/lib/src/peer-generation/idl/common.js +9 -3
  63. package/build/lib/src/peer-generation/isExternalType.d.ts +4 -0
  64. package/build/lib/src/peer-generation/isExternalType.js +15 -0
  65. package/build/lib/src/peer-generation/isMaterialized.js +18 -6
  66. package/build/lib/src/peer-generation/unions.js +1 -1
  67. package/build/lib/src/util.d.ts +4 -1
  68. package/build/lib/src/util.js +25 -10
  69. package/build/lib/src/visitor.d.ts +2 -0
  70. package/build/lib/src/visitor.js +108 -1
  71. package/package.json +2 -2
  72. package/webidl2.js/dist/webidl2.js +62 -16
  73. package/webidl2.js/LICENSE +0 -21
  74. package/webidl2.js/README.md +0 -827
  75. package/webidl2.js/dist/package.json +0 -3
@@ -15,7 +15,7 @@
15
15
  import { createReferenceType, forceAsNamedNode, IDLU32Type, IDLVoidType } from '../../idl';
16
16
  import { Language } from '../../Language';
17
17
  import { PrimitiveTypeList } from "../../peer-generation/PrimitiveType";
18
- import { AssignStatement, BlockStatement, FieldModifier, PrintHint, MethodModifier, NamedMethodSignature, StringExpression } from "../LanguageWriter";
18
+ import { AssignStatement, BlockStatement, FieldModifier, PrintHint, MethodModifier, NamedMethodSignature, StringExpression, MethodStaticCallExpression } from "../LanguageWriter";
19
19
  import { CDefinedExpression, CLikeExpressionStatement, CLikeLanguageWriter, CLikeLoopStatement, CLikeReturnStatement } from "./CLikeLanguageWriter";
20
20
  import { RuntimeType } from "../common";
21
21
  import { IndentedPrinter } from "../../IndentedPrinter";
@@ -66,6 +66,11 @@ export class CppPointerPropertyAccessExpression {
66
66
  return `${this.expression}->${this.name}`;
67
67
  }
68
68
  }
69
+ export class CPPMethodStaticCallExpression extends MethodStaticCallExpression {
70
+ asString() {
71
+ return `${this.receiver}::${this.name}(${this.params.map(it => it.asString()).join(', ')})`;
72
+ }
73
+ }
69
74
  ////////////////////////////////////////////////////////////////
70
75
  // STATEMENTS //
71
76
  ////////////////////////////////////////////////////////////////
@@ -162,8 +167,13 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
162
167
  constructor(printer, resolver, typeConvertor, primitivesTypes) {
163
168
  super(printer, resolver, Language.CPP);
164
169
  this.primitivesTypes = primitivesTypes;
170
+ this.classMode = 'normal';
171
+ this.currentClass = [];
165
172
  this.typeConvertor = typeConvertor;
166
173
  }
174
+ changeModeTo(mode) {
175
+ this.classMode = mode;
176
+ }
167
177
  getNodeName(type) {
168
178
  return this.typeConvertor.convert(type);
169
179
  }
@@ -171,14 +181,28 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
171
181
  var _a;
172
182
  return new CppLanguageWriter(new IndentedPrinter(), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.primitivesTypes);
173
183
  }
184
+ writeDeclaration(name, signature, modifiers, postfix) {
185
+ const realName = this.classMode === 'normal' ? name : `${this.currentClass.at(0)}::${name}`;
186
+ const newModifiers = this.classMode === 'normal'
187
+ ? modifiers
188
+ : (modifiers !== null && modifiers !== void 0 ? modifiers : []).filter(it => it !== MethodModifier.STATIC).concat(MethodModifier.INLINE);
189
+ super.writeDeclaration(realName, signature, newModifiers, postfix);
190
+ }
174
191
  writeClass(name, op, superClass, interfaces) {
175
- const superClasses = (superClass ? [superClass] : []).concat(interfaces !== null && interfaces !== void 0 ? interfaces : []);
176
- const extendsClause = superClasses.length > 0 ? ` : ${superClasses.map(c => `public ${c}`).join(", ")}` : '';
177
- this.printer.print(`class ${name}${extendsClause} {`);
178
- this.pushIndent();
192
+ if (this.classMode === 'normal') {
193
+ const superClasses = (superClass ? [superClass] : []).concat(interfaces !== null && interfaces !== void 0 ? interfaces : []);
194
+ const extendsClause = superClasses.length > 0 ? ` : ${superClasses.map(c => `public ${c}`).join(", ")}` : '';
195
+ this.printer.print(`class ${name}${extendsClause} {`);
196
+ this.pushIndent();
197
+ }
198
+ if (this.classMode === 'detached') {
199
+ this.currentClass.push(name);
200
+ }
179
201
  op(this);
180
- this.popIndent();
181
- this.printer.print(`};`);
202
+ if (this.classMode === 'normal') {
203
+ this.popIndent();
204
+ this.printer.print(`};`);
205
+ }
182
206
  }
183
207
  writeInterface(name, op, superInterfaces, generics) {
184
208
  throw new Error("Method not implemented.");
@@ -191,6 +215,9 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
191
215
  super.writeMethodCall(receiver, method, params, nullable);
192
216
  }
193
217
  }
218
+ writeStaticMethodCall(receiver, method, params, nullable) {
219
+ this.printer.print(`${receiver}::${method}(${params.join(', ')});`);
220
+ }
194
221
  writeFieldDeclaration(name, type, modifiers, optional, initExpr) {
195
222
  let filter = function (modifier_name) {
196
223
  return modifier_name !== FieldModifier.STATIC;
@@ -201,9 +228,9 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
201
228
  this.printer.print(`${forceAsNamedNode(type).name} ${name};`);
202
229
  this.printer.popIndent();
203
230
  }
204
- writeConstructorImplementation(className, signature, op, superCall, modifiers) {
205
- const superInvocation = superCall
206
- ? ` : ${superCall.name}(${superCall.signature.args.map((_, i) => superCall === null || superCall === void 0 ? void 0 : superCall.signature.argName(i)).join(", ")})`
231
+ writeConstructorImplementation(className, signature, op, delegationCall, modifiers) {
232
+ const superInvocation = delegationCall
233
+ ? ` : ${delegationCall.delegationName}(${delegationCall.delegationArgs.map(it => it.asString()).join(", ")})`
207
234
  : "";
208
235
  const argList = signature.args.map((it, index) => {
209
236
  var _a;
@@ -293,6 +320,9 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
293
320
  makeUnionVariantCast(value, type, convertor, index) {
294
321
  return this.makeString(`${value}.value${index}`);
295
322
  }
323
+ makeStaticMethodCall(receiver, method, params, nullable) {
324
+ return new CPPMethodStaticCallExpression(receiver, method, params, nullable);
325
+ }
296
326
  makeLoop(counter, limit, statement) {
297
327
  return new CLikeLoopStatement(counter, limit, statement);
298
328
  }
@@ -435,6 +465,9 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
435
465
  case PrintHint.AsPointer:
436
466
  postfix = '*';
437
467
  break;
468
+ case PrintHint.AsReference:
469
+ postfix = '&';
470
+ break;
438
471
  case PrintHint.AsConstPointer:
439
472
  constModifier = 'const ';
440
473
  postfix = '*';
@@ -31,8 +31,8 @@ export declare class ETSLambdaExpression extends LambdaExpression {
31
31
  asString(): string;
32
32
  }
33
33
  export declare function generateTypeCheckerName(typeName: string): string;
34
- export declare function generateEnumToNumericName(typeName: string): string;
35
- export declare function generateEnumFromNumericName(typeName: string): string;
34
+ export declare function generateEnumToNumericName(entry: idl.IDLEntry): string;
35
+ export declare function generateEnumFromNumericName(entry: idl.IDLEntry): string;
36
36
  export declare function makeArrayTypeCheckCall(valueAccessor: string, typeName: string, writer: LanguageWriter): LanguageExpression;
37
37
  export declare class ETSLanguageWriter extends TSLanguageWriter {
38
38
  private arrayConvertor;
@@ -73,6 +73,9 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
73
73
  typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
74
74
  makeTypeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
75
75
  makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
76
+ static _isUseTypeChecker: boolean;
77
+ static get isUseTypeChecker(): boolean;
78
+ static useTypeChecker<T>(isUseTypeChecker: boolean, op: () => T): T;
76
79
  }
77
80
  export declare function makeEnumTypeCheckerCall(valueAccessor: string, enumName: string, writer: LanguageWriter): LanguageExpression;
78
81
  //# sourceMappingURL=ETSLanguageWriter.d.ts.map
@@ -130,16 +130,17 @@ export class ETSLambdaExpression extends LambdaExpression {
130
130
  // UTILS //
131
131
  ////////////////////////////////////////////////////////////////
132
132
  export function generateTypeCheckerName(typeName) {
133
- typeName = typeName.replaceAll('[]', 'BracketsArray')
134
- .replaceAll('.', ''); // Todo: hack for namespaces
133
+ typeName = typeName
134
+ .replaceAll('[]', 'BracketsArray')
135
+ .split('.').join('_');
135
136
  return `is${typeName.replaceAll('[]', 'Brackets')}`;
136
137
  }
137
- export function generateEnumToNumericName(typeName) {
138
- typeName = typeName.split(".").join("_");
138
+ export function generateEnumToNumericName(entry) {
139
+ const typeName = idl.getQualifiedName(entry, "namespace.name").split('.').join('_');
139
140
  return `${typeName}_ToNumeric`;
140
141
  }
141
- export function generateEnumFromNumericName(typeName) {
142
- typeName = typeName.split(".").join("_");
142
+ export function generateEnumFromNumericName(entry) {
143
+ const typeName = idl.getQualifiedName(entry, "namespace.name").split('.').join('_');
143
144
  return `${typeName}_FromNumeric`;
144
145
  }
145
146
  export function makeArrayTypeCheckCall(valueAccessor, typeName, writer) {
@@ -168,7 +169,7 @@ export class ETSLanguageWriter extends TSLanguageWriter {
168
169
  return new ArkTSMapForEachStatement(map, key, value, op);
169
170
  }
170
171
  makeMapSize(map) {
171
- return this.makeString(`${super.makeMapSize(map).asString()} as int32`); // TODO: cast really needed?
172
+ return this.makeString(`${super.makeMapSize(map).asString()}`); // TODO: cast really needed?
172
173
  }
173
174
  get supportedModifiers() {
174
175
  return [MethodModifier.PUBLIC, MethodModifier.PRIVATE, MethodModifier.NATIVE, MethodModifier.STATIC];
@@ -180,12 +181,21 @@ export class ETSLanguageWriter extends TSLanguageWriter {
180
181
  return this.makeString(`${value} as ${type}`);
181
182
  }
182
183
  i32FromEnum(value, enumEntry) {
183
- const enumName = this.getNodeName(enumEntry);
184
- return this.makeMethodCall('TypeChecker', generateEnumToNumericName(enumName), [value]);
184
+ if (ETSLanguageWriter.isUseTypeChecker) {
185
+ return this.makeMethodCall('TypeChecker', generateEnumToNumericName(enumEntry), [value]);
186
+ }
187
+ return idl.isStringEnum(enumEntry)
188
+ ? this.makeMethodCall(value.asString(), 'getOrdinal', [])
189
+ : this.makeMethodCall(value.asString(), 'valueOf', []);
185
190
  }
186
191
  enumFromI32(value, enumEntry) {
187
192
  const enumName = this.getNodeName(enumEntry);
188
- return this.makeMethodCall('TypeChecker', generateEnumFromNumericName(enumName), [value]);
193
+ if (ETSLanguageWriter.isUseTypeChecker) {
194
+ return this.makeMethodCall('TypeChecker', generateEnumFromNumericName(enumEntry), [value]);
195
+ }
196
+ return idl.isStringEnum(enumEntry)
197
+ ? this.makeString(`${enumName}.values()[${value.asString()}]`)
198
+ : this.makeMethodCall(enumName, 'fromValue', [value]);
189
199
  }
190
200
  makeDiscriminatorFromFields(convertor, value, accessors, duplicates) {
191
201
  if (convertor instanceof AggregateConvertor
@@ -269,7 +279,12 @@ export class ETSLanguageWriter extends TSLanguageWriter {
269
279
  // ])
270
280
  }
271
281
  castToInt(value, bitness) {
272
- return `${value} as int32`; // FIXME: is there int8 in ARKTS?
282
+ // This fix is used to avoid unnecessary writeInt8(value as int32) call, which is generated if value is already an int32
283
+ // The explicit cast forces ui2abc to call valueOf on an int, which fails the compilation
284
+ // TODO Fix this cast
285
+ if (bitness === 8)
286
+ return `(${value}).toChar()`;
287
+ return `(${value}).toInt()`; // FIXME: is there int8 in ARKTS?
273
288
  }
274
289
  castToBoolean(value) { return `${value} ? 1 : 0`; }
275
290
  instanceOf(convertor, value, duplicateMembers) {
@@ -306,9 +321,28 @@ export class ETSLanguageWriter extends TSLanguageWriter {
306
321
  }
307
322
  makeCast(value, node, options) {
308
323
  var _a;
324
+ if (node === idl.IDLI64Type)
325
+ return this.makeMethodCall(value.asString(), `toLong`, []);
326
+ if (node === idl.IDLI32Type)
327
+ return this.makeMethodCall(value.asString(), `toInt`, []);
328
+ if (node === idl.IDLI8Type)
329
+ return this.makeMethodCall(value.asString(), `toByte`, []);
330
+ if (node === idl.IDLF64Type)
331
+ return this.makeMethodCall(value.asString(), `toDouble`, []);
332
+ if (node === idl.IDLF32Type)
333
+ return this.makeMethodCall(value.asString(), `toFloat`, []);
309
334
  return new TSCastExpression(value, `${this.getNodeName(node)}`, (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
310
335
  }
336
+ static get isUseTypeChecker() { return this._isUseTypeChecker; }
337
+ static useTypeChecker(isUseTypeChecker, op) {
338
+ const prevIsUse = this.isReferenceRelativeToNamespaces;
339
+ this._isUseTypeChecker = isUseTypeChecker;
340
+ const result = op();
341
+ this._isUseTypeChecker = prevIsUse;
342
+ return result;
343
+ }
311
344
  }
345
+ ETSLanguageWriter._isUseTypeChecker = true;
312
346
  function makeInterfaceTypeCheckerCall(valueAccessor, interfaceName, allFields, duplicates, writer) {
313
347
  return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(interfaceName), [writer.makeString(valueAccessor),
314
348
  ...allFields.map(it => {
@@ -1,5 +1,5 @@
1
1
  import { IndentedPrinter } from "../../IndentedPrinter";
2
- import { AssignStatement, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
2
+ import { AssignStatement, DelegationCall, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
3
3
  import { CLikeLanguageWriter } from "./CLikeLanguageWriter";
4
4
  import * as idl from '../../idl';
5
5
  import { ArgConvertor, BaseArgConvertor } from "../ArgConvertors";
@@ -39,7 +39,7 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
39
39
  writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
40
40
  writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
41
41
  writeNativeMethodDeclaration(method: Method): void;
42
- writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
42
+ writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, delegationCall?: DelegationCall, modifiers?: MethodModifier[]): void;
43
43
  writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
44
44
  method: Method;
45
45
  op: () => void;
@@ -146,11 +146,11 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
146
146
  writeNativeMethodDeclaration(method) {
147
147
  this.writeMethodDeclaration(method.name, method.signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
148
148
  }
149
- writeConstructorImplementation(className, signature, op, superCall, modifiers) {
149
+ writeConstructorImplementation(className, signature, op, delegationCall, modifiers) {
150
150
  this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') : ''} ${className}(${signature.args.map((it, index) => `${this.getNodeName(it)} ${signature.argName(index)}`).join(", ")}) {`);
151
151
  this.pushIndent();
152
- if (superCall) {
153
- this.print(`super(${superCall.signature.args.map((_, i) => superCall === null || superCall === void 0 ? void 0 : superCall.signature.argName(i)).join(", ")});`);
152
+ if (delegationCall) {
153
+ this.print(`super(${delegationCall.delegationArgs.map(it => it.asString()).join(", ")});`);
154
154
  }
155
155
  op(this);
156
156
  this.popIndent();
@@ -0,0 +1,149 @@
1
+ import * as idl from '../../idl';
2
+ import { Language } from '../../Language';
3
+ import { IndentedPrinter } from "../../IndentedPrinter";
4
+ import { AssignStatement, DelegationCall, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
5
+ import { ArgConvertor } from "../ArgConvertors";
6
+ import { IdlNameConvertor } from "../nameConvertor";
7
+ import { RuntimeType } from "../common";
8
+ import { ReferenceResolver } from "../../peer-generation/ReferenceResolver";
9
+ export declare class KotlinEnumEntityStatement implements LanguageStatement {
10
+ private readonly enumEntity;
11
+ private readonly options;
12
+ constructor(enumEntity: idl.IDLEnum, options: {
13
+ isExport: boolean;
14
+ isDeclare: boolean;
15
+ });
16
+ write(writer: LanguageWriter): void;
17
+ private maybeQuoted;
18
+ }
19
+ export declare class KotlinEnumWithGetter implements LanguageStatement {
20
+ private readonly enumEntity;
21
+ private readonly isExport;
22
+ constructor(enumEntity: idl.IDLEnum, isExport: boolean);
23
+ write(writer: LanguageWriter): void;
24
+ }
25
+ export declare class KotlinThrowErrorStatement implements LanguageStatement {
26
+ message: string;
27
+ constructor(message: string);
28
+ write(writer: LanguageWriter): void;
29
+ }
30
+ export declare class KotlinLoopStatement implements LanguageStatement {
31
+ private counter;
32
+ private limit;
33
+ private statement;
34
+ constructor(counter: string, limit: string, statement: LanguageStatement | undefined);
35
+ write(writer: LanguageWriter): void;
36
+ }
37
+ export declare class KotlinAssignStatement extends AssignStatement {
38
+ variableName: string;
39
+ type: idl.IDLType | undefined;
40
+ expression: LanguageExpression;
41
+ isDeclared: boolean;
42
+ isConst: boolean;
43
+ constructor(variableName: string, type: idl.IDLType | undefined, expression: LanguageExpression, isDeclared?: boolean, isConst?: boolean);
44
+ write(writer: LanguageWriter): void;
45
+ }
46
+ export declare class KotlinNewObjectExpression implements LanguageExpression {
47
+ private objectName;
48
+ private params;
49
+ constructor(objectName: string, params: LanguageExpression[]);
50
+ asString(): string;
51
+ }
52
+ export declare class KotlinCheckDefinedExpression implements LanguageExpression {
53
+ private value;
54
+ constructor(value: string);
55
+ asString(): string;
56
+ }
57
+ export declare class KotlinLanguageWriter extends LanguageWriter {
58
+ protected typeConvertor: IdlNameConvertor;
59
+ constructor(printer: IndentedPrinter, resolver: ReferenceResolver, typeConvertor: IdlNameConvertor, language?: Language);
60
+ fork(options?: {
61
+ resolver?: ReferenceResolver;
62
+ }): LanguageWriter;
63
+ getNodeName(type: idl.IDLNode): string;
64
+ writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isAbstract?: boolean): void;
65
+ writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[], isDeclared?: boolean): void;
66
+ writeFunctionDeclaration(name: string, signature: MethodSignature, generics?: string[]): void;
67
+ writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void, generics?: string[]): void;
68
+ private generateFunctionDeclaration;
69
+ writeEnum(name: string, members: {
70
+ name: string;
71
+ alias?: string | undefined;
72
+ stringId: string | undefined;
73
+ numberId: number;
74
+ }[], options: {
75
+ isDeclare?: boolean;
76
+ isExport: boolean;
77
+ }): void;
78
+ private writeDeclaration;
79
+ writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
80
+ writeNativeMethodDeclaration(method: Method): void;
81
+ writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
82
+ writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, delegationCall?: DelegationCall, modifiers?: MethodModifier[]): void;
83
+ writeMethodImplementation(method: Method, op: (writer: this) => void): void;
84
+ writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
85
+ method: Method;
86
+ op: () => void;
87
+ }, setter?: {
88
+ method: Method;
89
+ op: () => void;
90
+ }): void;
91
+ writeGetterImplementation(method: Method, op?: (writer: this) => void): void;
92
+ writeSetterImplementation(method: Method, op: (writer: this) => void): void;
93
+ writeTypeDeclaration(decl: idl.IDLTypedef): void;
94
+ writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
95
+ makeNull(): LanguageExpression;
96
+ makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
97
+ makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
98
+ makeThrowError(message: string): LanguageStatement;
99
+ makeReturn(expr: LanguageExpression): LanguageStatement;
100
+ makeCheckOptional(optional: LanguageExpression, doStatement: LanguageStatement): LanguageStatement;
101
+ makeStatement(expr: LanguageExpression): LanguageStatement;
102
+ makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
103
+ makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
104
+ writePrintLog(message: string): void;
105
+ makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
106
+ typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
107
+ getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
108
+ makeUndefined(): LanguageExpression;
109
+ makeRuntimeType(rt: RuntimeType): LanguageExpression;
110
+ makeTupleAlloc(option: string): LanguageStatement;
111
+ makeArrayInit(type: idl.IDLContainerType, size?: number): LanguageExpression;
112
+ makeArrayLength(array: string, length?: string): LanguageExpression;
113
+ makeClassInit(type: idl.IDLType, paramenters: LanguageExpression[]): LanguageExpression;
114
+ makeMapInit(type: idl.IDLType): LanguageExpression;
115
+ makeMapInsert(keyAccessor: string, key: string, valueAccessor: string, value: string): LanguageStatement;
116
+ makeUnwrapOptional(expression: LanguageExpression): LanguageExpression;
117
+ makeDefinedCheck(value: string): LanguageExpression;
118
+ makeUnionSelector(value: string, valueType: string): LanguageStatement;
119
+ makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index: number): LanguageExpression;
120
+ makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
121
+ makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, type: string, _convertorIndex?: number, _runtimeTypeIndex?: number): LanguageExpression;
122
+ makeRuntimeTypeCondition(typeVarName: string, equals: boolean, type: RuntimeType, varName: string): LanguageExpression;
123
+ getTagType(): idl.IDLType;
124
+ getRuntimeType(): idl.IDLType;
125
+ makeTupleAssign(receiver: string, fields: string[]): LanguageStatement;
126
+ get supportedModifiers(): MethodModifier[];
127
+ get supportedFieldModifiers(): FieldModifier[];
128
+ enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
129
+ i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
130
+ makeEnumEntity(enumEntity: idl.IDLEnum, options: {
131
+ isExport: boolean;
132
+ isDeclare?: boolean;
133
+ }): LanguageStatement;
134
+ castToBoolean(value: string): string;
135
+ castToInt(value: string, bitness: 8 | 32): string;
136
+ makeCallIsObject(value: string): LanguageExpression;
137
+ makeNewObject(objectName: string, params?: LanguageExpression[]): LanguageExpression;
138
+ escapeKeyword(keyword: string): string;
139
+ makeDiscriminatorConvertor(convertor: ArgConvertor, value: string, index: number): LanguageExpression | undefined;
140
+ makeStaticBlock(op: (writer: LanguageWriter) => void): void;
141
+ pushNamespace(namespace: string, options: {
142
+ ident: boolean;
143
+ isDeclared?: boolean;
144
+ }): void;
145
+ popNamespace(options: {
146
+ ident: boolean;
147
+ }): void;
148
+ }
149
+ //# sourceMappingURL=KotlinLanguageWriter.d.ts.map