@idlizer/core 2.1.0 → 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.
Files changed (82) hide show
  1. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +15 -2
  2. package/build/lib/src/LanguageWriters/ArgConvertors.js +93 -33
  3. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +34 -14
  4. package/build/lib/src/LanguageWriters/LanguageWriter.js +29 -52
  5. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +2 -1
  6. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +16 -5
  7. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +4 -2
  8. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +25 -15
  9. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +7 -18
  10. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.d.ts +4 -2
  11. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +13 -3
  12. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +2 -1
  13. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +24 -4
  14. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -2
  15. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +49 -29
  16. package/build/lib/src/LanguageWriters/nameConvertor.d.ts +3 -1
  17. package/build/lib/src/LanguageWriters/nameConvertor.js +5 -1
  18. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +21 -10
  19. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +56 -65
  20. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +4 -1
  21. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +1 -1
  22. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +16 -10
  23. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +18 -27
  24. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +14 -9
  25. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +18 -21
  26. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +11 -7
  27. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +42 -18
  28. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +14 -6
  29. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +49 -44
  30. package/build/lib/src/LibraryInterface.d.ts +1 -5
  31. package/build/lib/src/config.d.ts +1029 -66
  32. package/build/lib/src/config.js +15 -2
  33. package/build/lib/src/configDescriber.d.ts +30 -3
  34. package/build/lib/src/configDescriber.js +99 -1
  35. package/build/lib/src/from-idl/DtsPrinter.js +32 -20
  36. package/build/lib/src/from-idl/IDLLinter.d.ts +40 -7
  37. package/build/lib/src/from-idl/IDLLinter.js +211 -25
  38. package/build/lib/src/from-idl/common.js +1 -1
  39. package/build/lib/src/from-idl/deserialize.d.ts +4 -1
  40. package/build/lib/src/from-idl/deserialize.js +434 -346
  41. package/build/lib/src/idl.d.ts +28 -18
  42. package/build/lib/src/idl.js +376 -111
  43. package/build/lib/src/idlize.d.ts +3 -1
  44. package/build/lib/src/idlize.js +85 -28
  45. package/build/lib/src/index.d.ts +6 -3
  46. package/build/lib/src/index.js +5 -2
  47. package/build/lib/src/options.d.ts +1 -1
  48. package/build/lib/src/peer-generation/BuilderClass.d.ts +0 -2
  49. package/build/lib/src/peer-generation/BuilderClass.js +0 -8
  50. package/build/lib/src/peer-generation/LayoutManager.d.ts +10 -3
  51. package/build/lib/src/peer-generation/LayoutManager.js +3 -2
  52. package/build/lib/src/peer-generation/Materialized.d.ts +1 -1
  53. package/build/lib/src/peer-generation/Materialized.js +2 -2
  54. package/build/lib/src/peer-generation/PeerClass.d.ts +3 -8
  55. package/build/lib/src/peer-generation/PeerClass.js +0 -1
  56. package/build/lib/src/peer-generation/PeerFile.d.ts +1 -2
  57. package/build/lib/src/peer-generation/PeerFile.js +1 -1
  58. package/build/lib/src/peer-generation/PeerLibrary.d.ts +12 -9
  59. package/build/lib/src/peer-generation/PeerLibrary.js +136 -71
  60. package/build/lib/src/peer-generation/ReferenceResolver.d.ts +1 -1
  61. package/build/lib/src/peer-generation/ReferenceResolver.js +2 -2
  62. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +1 -0
  63. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +6 -2
  64. package/build/lib/src/peer-generation/idl/common.d.ts +2 -1
  65. package/build/lib/src/peer-generation/idl/common.js +13 -2
  66. package/build/lib/src/peer-generation/isEnumType.d.ts +5 -0
  67. package/build/lib/src/peer-generation/isEnumType.js +29 -0
  68. package/build/lib/src/peer-generation/isMaterialized.js +25 -8
  69. package/build/lib/src/peer-generation/modules.d.ts +10 -0
  70. package/build/lib/src/peer-generation/modules.js +38 -0
  71. package/build/lib/src/peer-generation/unions.d.ts +3 -2
  72. package/build/lib/src/peer-generation/unions.js +6 -2
  73. package/build/lib/src/resolveNamedNode.d.ts +3 -0
  74. package/build/lib/src/resolveNamedNode.js +105 -0
  75. package/build/lib/src/util.d.ts +7 -0
  76. package/build/lib/src/util.js +39 -0
  77. package/build/lib/src/visitor.d.ts +0 -1
  78. package/build/lib/src/visitor.js +1 -7
  79. package/package.json +2 -2
  80. package/webidl2.js/dist/webidl2.js +35 -7
  81. package/build/lib/src/configMerge.d.ts +0 -2
  82. package/build/lib/src/configMerge.js +0 -42
@@ -80,7 +80,10 @@ export declare class CJLanguageWriter extends LanguageWriter {
80
80
  name: string;
81
81
  stringId: string | undefined;
82
82
  numberId: number;
83
- }[], op: (writer: LanguageWriter) => void): void;
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;
@@ -89,15 +92,23 @@ export declare class CJLanguageWriter extends LanguageWriter {
89
92
  writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
90
93
  writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
91
94
  writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
92
- writeProperty(propName: string, propType: idl.IDLType, mutable?: boolean, getterLambda?: (writer: this) => void, setterLambda?: (writer: this) => void): void;
93
95
  writeTypeDeclaration(decl: idl.IDLTypedef): void;
94
96
  writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
95
97
  writeMethodImplementation(method: Method, op: (writer: this) => void): void;
98
+ writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
99
+ method: Method;
100
+ op?: () => void;
101
+ }, setter?: {
102
+ method: Method;
103
+ op: () => void;
104
+ }): void;
105
+ writeGetterImplementation(method: Method, op?: (writer: this) => void): void;
106
+ writeSetterImplementation(method: Method, op: (writer: this) => void): void;
96
107
  writeCJForeign(op: (writer: CJLanguageWriter) => void): void;
97
108
  private writeDeclaration;
98
109
  writeNativeFunctionCall(printer: LanguageWriter, name: string, signature: MethodSignature): void;
99
110
  writeNativeMethodDeclaration(method: Method): void;
100
- makeEnumCast(_enumEntry: idl.IDLEnum, enumName: string): string;
111
+ i32FromEnum(value: LanguageExpression, _enumEntry: idl.IDLEnum): LanguageExpression;
101
112
  makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
102
113
  makeClassInit(type: idl.IDLType, parameters: LanguageExpression[]): LanguageExpression;
103
114
  makeArrayInit(type: idl.IDLContainerType, size?: number): LanguageExpression;
@@ -117,14 +128,14 @@ export declare class CJLanguageWriter extends LanguageWriter {
117
128
  makeDefinedCheck(value: string): LanguageExpression;
118
129
  makeNewObject(objectName: string, params?: LanguageExpression[]): LanguageExpression;
119
130
  writePrintLog(message: string): void;
120
- makeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
131
+ makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
121
132
  typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
122
133
  getObjectAccessor(convertor: BaseArgConvertor, value: string, args?: ObjectArgs): string;
123
134
  makeUndefined(): LanguageExpression;
124
135
  makeUnwrapOptional(expression: LambdaExpression): LanguageExpression;
125
136
  makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
126
137
  makeRuntimeType(rt: RuntimeType): LanguageExpression;
127
- makeRuntimeTypeGetterCall(value: string): LanguageExpression;
138
+ protected makeRuntimeTypeGetterCall(value: string): LanguageExpression;
128
139
  makeMapInsert(keyAccessor: string, key: string, valueAccessor: string, value: string): LanguageStatement;
129
140
  makeNull(value?: string): LanguageExpression;
130
141
  getTagType(): idl.IDLType;
@@ -136,9 +147,11 @@ export declare class CJLanguageWriter extends LanguageWriter {
136
147
  makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, type: string, convertorIndex?: number): LanguageExpression;
137
148
  makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index: number): LanguageExpression;
138
149
  makeTupleAccess(value: string, index: number): LanguageExpression;
139
- enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
140
- ordinalFromEnum(value: LanguageExpression, _: idl.IDLType): LanguageExpression;
141
- makeEnumEntity(enumEntity: idl.IDLEnum, isExport: boolean): LanguageStatement;
150
+ enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
151
+ makeEnumEntity(enumEntity: idl.IDLEnum, options: {
152
+ isExport: boolean;
153
+ isDeclare?: boolean;
154
+ }): LanguageStatement;
142
155
  makeEquals(args: LanguageExpression[]): LanguageExpression;
143
156
  runtimeType(param: ArgConvertor, valueType: string, value: string): void;
144
157
  escapeKeyword(word: string): string;
@@ -146,7 +159,5 @@ export declare class CJLanguageWriter extends LanguageWriter {
146
159
  popNamespace(ident?: boolean): void;
147
160
  castToInt(value: string, bitness: 8 | 32): string;
148
161
  castToBoolean(value: string): string;
149
- makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
150
- makeLengthDeserializer(deserializer: string): LanguageStatement | undefined;
151
162
  }
152
163
  //# sourceMappingURL=CJLanguageWriter.d.ts.map
@@ -283,7 +283,7 @@ export class CJLanguageWriter extends LanguageWriter {
283
283
  this.popIndent();
284
284
  this.printer.print(`}`);
285
285
  }
286
- writeEnum(name, members, op) {
286
+ writeEnum(name, members, options, op) {
287
287
  this.printer.print(`public enum ${name}{`);
288
288
  this.pushIndent();
289
289
  for (const member of members) {
@@ -348,33 +348,6 @@ export class CJLanguageWriter extends LanguageWriter {
348
348
  this.popIndent();
349
349
  this.printer.print(`}`);
350
350
  }
351
- writeProperty(propName, propType, mutable, getterLambda, setterLambda) {
352
- let shortName = propName.concat("_container");
353
- if (!getterLambda) {
354
- this.print(`private var ${shortName}: ${this.getNodeName(propType)}`);
355
- }
356
- this.print(`${mutable ? "mut " : ""}prop ${propName}: ${this.getNodeName(propType)} {`);
357
- this.pushIndent();
358
- this.print(`get() {`);
359
- this.pushIndent();
360
- if (getterLambda) {
361
- getterLambda(this);
362
- }
363
- else {
364
- this.print(`return ${shortName}`);
365
- }
366
- this.popIndent();
367
- this.print(`}`);
368
- if (mutable) {
369
- this.print(`set(x) { ${shortName} = x }`);
370
- this.pushIndent();
371
- if (setterLambda)
372
- setterLambda(this);
373
- this.popIndent();
374
- }
375
- this.popIndent();
376
- this.print(`}`);
377
- }
378
351
  writeTypeDeclaration(decl) {
379
352
  throw new Error(`writeTypeDeclaration not implemented`);
380
353
  }
@@ -389,6 +362,51 @@ export class CJLanguageWriter extends LanguageWriter {
389
362
  this.popIndent();
390
363
  this.printer.print(`}`);
391
364
  }
365
+ writeProperty(propName, propType, modifiers, getter, setter) {
366
+ let containerName = propName.concat("_container");
367
+ let truePropName = this.escapeKeyword(propName);
368
+ if (getter) {
369
+ if (!getter.op) {
370
+ this.print(`private var ${containerName}: ${this.getNodeName(propType)}`);
371
+ }
372
+ }
373
+ let isStatic = modifiers.includes(FieldModifier.STATIC);
374
+ let isMutable = !modifiers.includes(FieldModifier.READONLY);
375
+ this.print(`public ${isMutable ? "mut " : ""}${isStatic ? "static " : "open "}prop ${truePropName}: ${this.getNodeName(propType)}`);
376
+ if (getter) {
377
+ this.print('{');
378
+ this.pushIndent();
379
+ this.writeGetterImplementation(getter.method, getter.op);
380
+ if (isMutable) {
381
+ if (setter) {
382
+ this.writeSetterImplementation(setter.method, setter ? setter.op : (writer) => { this.print(`${containerName} = ${truePropName}`); });
383
+ }
384
+ else {
385
+ this.print(`set(${truePropName}) {`);
386
+ this.pushIndent();
387
+ this.print(`${containerName} = ${truePropName}`);
388
+ this.popIndent();
389
+ this.print(`}`);
390
+ }
391
+ }
392
+ this.popIndent();
393
+ this.print('}');
394
+ }
395
+ }
396
+ writeGetterImplementation(method, op) {
397
+ this.print(`get() {`);
398
+ this.pushIndent();
399
+ op ? op(this) : this.print(`return ${method.signature.argsNames.map(arg => `${arg}_container`).join(', ')}`);
400
+ this.popIndent();
401
+ this.print('}');
402
+ }
403
+ writeSetterImplementation(method, op) {
404
+ this.print(`set(${method.signature.argsNames.join(', ')}) {`);
405
+ this.pushIndent();
406
+ op(this);
407
+ this.popIndent();
408
+ this.print('}');
409
+ }
392
410
  writeCJForeign(op) {
393
411
  this.print(`foreign {`);
394
412
  this.pushIndent();
@@ -399,7 +417,7 @@ export class CJLanguageWriter extends LanguageWriter {
399
417
  writeDeclaration(name, signature, modifiers, postfix) {
400
418
  let prefix = modifiers === null || modifiers === void 0 ? void 0 : modifiers.filter(it => this.supportedModifiers.includes(it)).map(it => this.mapMethodModifier(it)).join(" ");
401
419
  prefix = prefix ? prefix + " " : "";
402
- this.print(`${prefix}func ${name}(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(it)}`).join(", ")}): ${this.getNodeName(signature.returnType)}${postfix !== null && postfix !== void 0 ? postfix : ""}`);
420
+ this.print(`${prefix}${((modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.SETTER)) || (modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.GETTER))) ? '' : 'func '}${name}(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(it)}`).join(", ")}): ${this.getNodeName(signature.returnType)}${postfix !== null && postfix !== void 0 ? postfix : ""}`);
403
421
  }
404
422
  writeNativeFunctionCall(printer, name, signature) {
405
423
  printer.print(`return unsafe { ${name}(${signature.args.map((it, index) => `${signature.argName(index)}`).join(", ")}) }`);
@@ -410,8 +428,8 @@ export class CJLanguageWriter extends LanguageWriter {
410
428
  name = name.startsWith('_') ? name.slice(1) : name;
411
429
  this.print(`func ${name}(${signture}): ${this.typeForeignConvertor.convert(method.signature.returnType)}`);
412
430
  }
413
- makeEnumCast(_enumEntry, enumName) {
414
- return `${enumName}.value`;
431
+ i32FromEnum(value, _enumEntry) {
432
+ return this.makeString(`${value.asString()}.value`);
415
433
  }
416
434
  makeAssign(variableName, type, expr, isDeclared = true, isConst = true) {
417
435
  return new CJAssignStatement(variableName, type, expr, isDeclared, isConst);
@@ -423,7 +441,7 @@ export class CJLanguageWriter extends LanguageWriter {
423
441
  return this.makeString(`ArrayList<${this.getNodeName(type.elementType[0])}>(Int64(${size !== null && size !== void 0 ? size : ''}))`);
424
442
  }
425
443
  makeMapInit(type) {
426
- throw new Error(`TBD`);
444
+ return this.makeString(`${this.getNodeName(type)}()`);
427
445
  }
428
446
  makeArrayLength(array, length) {
429
447
  return this.makeString(`${array}.size`);
@@ -477,9 +495,9 @@ export class CJLanguageWriter extends LanguageWriter {
477
495
  writePrintLog(message) {
478
496
  this.print(`println("${message}")`);
479
497
  }
480
- makeCast(value, type, options) {
498
+ makeCast(value, node, options) {
481
499
  var _a;
482
- return new CJCastExpression(value, this.getNodeName(type), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
500
+ return new CJCastExpression(value, this.getNodeName(node), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
483
501
  }
484
502
  typeInstanceOf(type, value, members) {
485
503
  if (idl.isInterface(type)) {
@@ -507,7 +525,7 @@ export class CJLanguageWriter extends LanguageWriter {
507
525
  return this.makeString(methodCall.asString() + '.ordinal');
508
526
  }
509
527
  makeMapInsert(keyAccessor, key, valueAccessor, value) {
510
- return this.makeStatement(this.makeMethodCall(keyAccessor, "set", [this.makeString(key), this.makeString(value)]));
528
+ return this.makeStatement(this.makeMethodCall(keyAccessor, "add", [this.makeString(key), this.makeString(value)]));
511
529
  }
512
530
  makeNull(value) {
513
531
  return new StringExpression(`Option.None`);
@@ -539,14 +557,11 @@ export class CJLanguageWriter extends LanguageWriter {
539
557
  makeTupleAccess(value, index) {
540
558
  return this.makeString(`${value}.value${index}`);
541
559
  }
542
- enumFromOrdinal(value, enumEntry) {
560
+ enumFromI32(value, enumEntry) {
543
561
  return this.makeString(`${this.getNodeName(enumEntry)}(${value.asString()})`);
544
562
  }
545
- ordinalFromEnum(value, _) {
546
- return this.makeString(`Int32(${value.asString()}.value)`);
547
- }
548
- makeEnumEntity(enumEntity, isExport) {
549
- return new CJEnumWithGetter(enumEntity, isExport);
563
+ makeEnumEntity(enumEntity, options) {
564
+ return new CJEnumWithGetter(enumEntity, options.isExport);
550
565
  }
551
566
  makeEquals(args) {
552
567
  return this.makeString(`refEq(${args.map(arg => `${arg.asString()}`).join(`, `)})`);
@@ -565,29 +580,5 @@ export class CJLanguageWriter extends LanguageWriter {
565
580
  castToBoolean(value) {
566
581
  return `if (${value}) { Int32(1) } else { Int32(0) }`;
567
582
  }
568
- makeLengthSerializer(serializer, value) {
569
- return this.makeBlock([
570
- this.makeStatement(this.makeMethodCall(serializer, "writeInt8", [this.makeRuntimeType(RuntimeType.STRING)])),
571
- this.makeStatement(this.makeMethodCall(serializer, "writeString", [this.makeString(`${value}.getValue1()`)]))
572
- ], false);
573
- }
574
- makeLengthDeserializer(deserializer) {
575
- const valueType = "valueType";
576
- return this.makeBlock([
577
- this.makeAssign(valueType, undefined, this.makeMethodCall(deserializer, "readInt8", []), true),
578
- this.makeMultiBranchCondition([{
579
- expr: this.makeRuntimeTypeCondition(valueType, true, RuntimeType.NUMBER, ''),
580
- stmt: this.makeReturn(this.makeString(`Ark_Length(${deserializer}.readFloat32())`))
581
- },
582
- {
583
- expr: this.makeRuntimeTypeCondition(valueType, true, RuntimeType.STRING, ''),
584
- stmt: this.makeReturn(this.makeString(`Ark_Length(${deserializer}.readString())`))
585
- },
586
- {
587
- expr: this.makeRuntimeTypeCondition(valueType, true, RuntimeType.OBJECT, ''),
588
- stmt: this.makeReturn(this.makeString(`Ark_Length(Resource(${deserializer}.readString(), "", 0.0, Option.None, Option.None))`))
589
- }], this.makeReturn(this.makeUndefined())),
590
- ], false);
591
- }
592
583
  }
593
584
  //# sourceMappingURL=CJLanguageWriter.js.map
@@ -37,7 +37,10 @@ export declare abstract class CLikeLanguageWriter extends LanguageWriter {
37
37
  name: string;
38
38
  stringId: string | undefined;
39
39
  numberId: number;
40
- }[], op: (writer: LanguageWriter) => void): void;
40
+ }[], options: {
41
+ isExport: boolean;
42
+ isDeclare?: boolean;
43
+ }, op: (writer: LanguageWriter) => void): void;
41
44
  writeMethodImplementation(method: Method, op: (writer: this) => void): void;
42
45
  private writeDeclaration;
43
46
  protected stringifyMethodReturnType(type: idl.IDLType, _?: PrintHint): string;
@@ -95,7 +95,7 @@ export class CLikeLanguageWriter extends LanguageWriter {
95
95
  writeMethodDeclaration(name, signature, modifiers) {
96
96
  this.writeDeclaration(name, signature, modifiers, ";");
97
97
  }
98
- writeEnum(name, members, op) {
98
+ writeEnum(name, members, options, op) {
99
99
  throw new Error("WriteEnum for C-family languages is not implemented");
100
100
  }
101
101
  writeMethodImplementation(method, op) {
@@ -11,9 +11,9 @@ import * as idl from "../../idl";
11
11
  export declare class CppCastExpression implements LanguageExpression {
12
12
  convertor: IdlNameConvertor;
13
13
  value: LanguageExpression;
14
- type: IDLType;
14
+ node: IDLNode;
15
15
  private options?;
16
- constructor(convertor: IdlNameConvertor, value: LanguageExpression, type: IDLType, options?: MakeCastOptions | undefined);
16
+ constructor(convertor: IdlNameConvertor, value: LanguageExpression, node: IDLNode, options?: MakeCastOptions | undefined);
17
17
  asString(): string;
18
18
  private mapTypeWithReceiver;
19
19
  }
@@ -46,7 +46,13 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
46
46
  writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
47
47
  writeFieldDeclaration(name: string, type: IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
48
48
  writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
49
- writeProperty(propName: string, propType: IDLType, mutable?: boolean): void;
49
+ writeProperty(propName: string, propType: IDLType, modifiers: FieldModifier[], getter?: {
50
+ method: Method;
51
+ op: () => void;
52
+ }, setter?: {
53
+ method: Method;
54
+ op: () => void;
55
+ }): void;
50
56
  writeTypeDeclaration(decl: IDLTypedef): void;
51
57
  writeConstant(constName: string, constType: IDLType, constVal?: string): void;
52
58
  /**
@@ -85,7 +91,7 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
85
91
  makeMapInit(type: IDLType): LanguageExpression;
86
92
  makeArrayResize(array: string, arrayType: string, length: string, deserializer: string): LanguageStatement;
87
93
  makeMapResize(mapTypeName: string, keyType: IDLType, valueType: IDLType, map: string, size: string, deserializer: string): LanguageStatement;
88
- makeCast(expr: LanguageExpression, type: IDLType, options?: MakeCastOptions): LanguageExpression;
94
+ makeCast(expr: LanguageExpression, node: IDLNode, options?: MakeCastOptions): LanguageExpression;
89
95
  makePointerPropertyAccessExpression(expression: string, name: string): CppPointerPropertyAccessExpression;
90
96
  writePrintLog(message: string): void;
91
97
  makeDefinedCheck(value: string): LanguageExpression;
@@ -101,19 +107,19 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
101
107
  makeTupleAssign(receiver: string, tupleFields: string[]): LanguageStatement;
102
108
  get supportedModifiers(): MethodModifier[];
103
109
  get supportedFieldModifiers(): FieldModifier[];
104
- enumFromOrdinal(value: LanguageExpression, type: IDLType): LanguageExpression;
105
- ordinalFromEnum(value: LanguageExpression, _: IDLType): LanguageExpression;
110
+ enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
106
111
  makeUnsafeCast(param: string): string;
107
112
  makeUnsafeCast_(value: LanguageExpression, type: IDLType, typeOptions?: PrintHint): string;
108
- makeEnumCast(enumEntry: idl.IDLEnum, value: string): string;
113
+ i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
109
114
  escapeKeyword(name: string): string;
110
- makeEnumEntity(enumEntity: IDLEnum, isExport: boolean): LanguageStatement;
115
+ makeEnumEntity(enumEntity: IDLEnum, options: {
116
+ isExport: boolean;
117
+ isDeclare?: boolean;
118
+ }): LanguageStatement;
111
119
  private decayTypeName;
112
120
  stringifyMethodReturnType(type: IDLType, hint?: PrintHint): string;
113
121
  stringifyMethodArgType(type: IDLType, hint?: PrintHint): string;
114
122
  stringifyTypeWithReceiver(type: IDLType, receiver?: string): string;
115
123
  makeSerializerConstructorSignatures(): NamedMethodSignature[] | undefined;
116
- makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
117
- makeLengthDeserializer(deserializer: string): LanguageStatement | undefined;
118
124
  }
119
125
  //# sourceMappingURL=CppLanguageWriter.d.ts.map
@@ -12,7 +12,7 @@
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, IDLUint8ArrayType, IDLVoidType } from '../../idl';
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";
@@ -25,15 +25,15 @@ import * as idl from "../../idl";
25
25
  // EXPRESSIONS //
26
26
  ////////////////////////////////////////////////////////////////
27
27
  export class CppCastExpression {
28
- constructor(convertor, value, type, options) {
28
+ constructor(convertor, value, node, options) {
29
29
  this.convertor = convertor;
30
30
  this.value = value;
31
- this.type = type;
31
+ this.node = node;
32
32
  this.options = options;
33
33
  }
34
34
  asString() {
35
35
  var _a, _b, _c, _d;
36
- if (forceAsNamedNode(this.type).name === "Tag") {
36
+ if (forceAsNamedNode(this.node).name === "Tag") {
37
37
  return `${this.value.asString()} == ${PrimitiveTypeList.UndefinedRuntime} ? ${PrimitiveTypeList.UndefinedTag} : ${PrimitiveTypeList.ObjectTag}`;
38
38
  }
39
39
  let resultName = '';
@@ -41,7 +41,7 @@ export class CppCastExpression {
41
41
  resultName = this.options.overrideTypeName;
42
42
  }
43
43
  else {
44
- const pureName = this.mapTypeWithReceiver(this.type, (_b = this.options) === null || _b === void 0 ? void 0 : _b.receiver);
44
+ const pureName = this.mapTypeWithReceiver((_b = this.options) === null || _b === void 0 ? void 0 : _b.receiver);
45
45
  const qualifiedName = ((_c = this.options) === null || _c === void 0 ? void 0 : _c.toRef) ? `${pureName}&` : pureName;
46
46
  resultName = qualifiedName;
47
47
  }
@@ -49,12 +49,12 @@ export class CppCastExpression {
49
49
  ? `reinterpret_cast<${resultName}>(${this.value.asString()})`
50
50
  : `static_cast<${resultName}>(${this.value.asString()})`;
51
51
  }
52
- mapTypeWithReceiver(type, receiver) {
52
+ mapTypeWithReceiver(receiver) {
53
53
  // make deducing type from receiver
54
54
  if (receiver !== undefined) {
55
55
  return `std::decay<decltype(${receiver})>::type`;
56
56
  }
57
- return this.convertor.convert(type);
57
+ return this.convertor.convert(this.node);
58
58
  }
59
59
  }
60
60
  export class CppPointerPropertyAccessExpression {
@@ -217,7 +217,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
217
217
  this.popIndent();
218
218
  this.print(`}`);
219
219
  }
220
- writeProperty(propName, propType, mutable = true) {
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) {
@@ -314,8 +314,8 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
314
314
  makeMapResize(mapTypeName, keyType, valueType, map, size, deserializer) {
315
315
  return new CppMapResizeStatement(mapTypeName, keyType, valueType, map, size, deserializer);
316
316
  }
317
- makeCast(expr, type, options) {
318
- return new CppCastExpression(this.typeConvertor, expr, type, options);
317
+ makeCast(expr, node, options) {
318
+ return new CppCastExpression(this.typeConvertor, expr, node, options);
319
319
  }
320
320
  makePointerPropertyAccessExpression(expression, name) {
321
321
  return new CppPointerPropertyAccessExpression(expression, name);
@@ -370,11 +370,8 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
370
370
  get supportedFieldModifiers() {
371
371
  return [];
372
372
  }
373
- enumFromOrdinal(value, type) {
374
- return this.makeString(`static_cast<${this.typeConvertor.convert(type)}>(` + value.asString() + `)`);
375
- }
376
- ordinalFromEnum(value, _) {
377
- return value;
373
+ enumFromI32(value, enumEntry) {
374
+ return this.makeString(`static_cast<${this.typeConvertor.convert(enumEntry)}>(` + value.asString() + `)`);
378
375
  }
379
376
  makeUnsafeCast(param) {
380
377
  return param;
@@ -396,13 +393,13 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
396
393
  }
397
394
  return `(${typeName}) (${value.asString()})`;
398
395
  }
399
- makeEnumCast(enumEntry, value) {
400
- return `static_cast<${this.typeConvertor.convert(idl.createReferenceType(enumEntry))}>(${value})`;
396
+ i32FromEnum(value, enumEntry) {
397
+ return this.makeString(`static_cast<${this.typeConvertor.convert(idl.createReferenceType(enumEntry))}>(${value.asString()})`);
401
398
  }
402
399
  escapeKeyword(name) {
403
400
  return cppKeywords.has(name) ? name + "_" : name;
404
401
  }
405
- makeEnumEntity(enumEntity, isExport) {
402
+ makeEnumEntity(enumEntity, options) {
406
403
  return new CppEnumEntityStatement(enumEntity);
407
404
  }
408
405
  decayTypeName(typeName) {
@@ -460,20 +457,14 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
460
457
  }
461
458
  makeSerializerConstructorSignatures() {
462
459
  const fromBufferCtor = new NamedMethodSignature(IDLVoidType, [
463
- IDLUint8ArrayType,
460
+ idl.IDLSerializerBuffer,
464
461
  IDLU32Type,
465
462
  createReferenceType("CallbackResourceHolder")
466
- ], ["data", "dataLength", "resourceHolder"], [undefined, `0`, `nullptr`], [undefined, undefined, undefined, PrintHint.AsPointer]);
463
+ ], ["data", "dataLength", "resourceHolder"], [undefined, `0`, `nullptr`], undefined, [undefined, undefined, undefined, PrintHint.AsPointer]);
467
464
  const ownedDataCtor = new NamedMethodSignature(IDLVoidType, [
468
465
  createReferenceType("CallbackResourceHolder")
469
- ], ["resourceHolder"], [`nullptr`], [undefined, PrintHint.AsPointer]);
466
+ ], ["resourceHolder"], [`nullptr`], undefined, [undefined, PrintHint.AsPointer]);
470
467
  return [ownedDataCtor, fromBufferCtor];
471
468
  }
472
- makeLengthSerializer(serializer, value) {
473
- return undefined;
474
- }
475
- makeLengthDeserializer(deserializer) {
476
- return undefined;
477
- }
478
469
  }
479
470
  //# sourceMappingURL=CppLanguageWriter.js.map
@@ -17,8 +17,11 @@ export declare class EtsAssignStatement implements LanguageStatement {
17
17
  }
18
18
  export declare class ArkTSEnumEntityStatement implements LanguageStatement {
19
19
  private readonly enumEntity;
20
- private readonly isExport;
21
- constructor(enumEntity: IDLEnum, isExport: boolean);
20
+ private readonly options;
21
+ constructor(enumEntity: IDLEnum, options: {
22
+ isExport: boolean;
23
+ isDeclare: boolean;
24
+ });
22
25
  write(writer: LanguageWriter): void;
23
26
  }
24
27
  export declare class ETSLambdaExpression extends LambdaExpression {
@@ -28,8 +31,8 @@ export declare class ETSLambdaExpression extends LambdaExpression {
28
31
  asString(): string;
29
32
  }
30
33
  export declare function generateTypeCheckerName(typeName: string): string;
31
- export declare function generateEnumToOrdinalName(typeName: string): string;
32
- export declare function generateEnumFromOrdinalName(typeName: string): string;
34
+ export declare function generateEnumToNumericName(typeName: string): string;
35
+ export declare function generateEnumFromNumericName(typeName: string): string;
33
36
  export declare function makeArrayTypeCheckCall(valueAccessor: string, typeName: string, writer: LanguageWriter): LanguageExpression;
34
37
  export declare class ETSLanguageWriter extends TSLanguageWriter {
35
38
  private arrayConvertor;
@@ -44,19 +47,21 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
44
47
  get supportedModifiers(): MethodModifier[];
45
48
  runtimeType(param: ArgConvertor, valueType: string, value: string): void;
46
49
  makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index?: number): LanguageExpression;
47
- enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
48
- ordinalFromEnum(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
50
+ i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
51
+ enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
49
52
  makeDiscriminatorFromFields(convertor: {
50
53
  targetType: (writer: LanguageWriter) => string;
51
54
  }, value: string, accessors: string[], duplicates: Set<string>): LanguageExpression;
52
55
  makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
53
56
  makeIsTypeCall(value: string, decl: idl.IDLInterface): LanguageExpression;
54
- makeEnumEntity(enumEntity: IDLEnum, isExport: boolean): LanguageStatement;
57
+ makeEnumEntity(enumEntity: IDLEnum, options: {
58
+ isExport: boolean;
59
+ isDeclare?: boolean;
60
+ }): LanguageStatement;
55
61
  getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
56
62
  writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
57
63
  isQuickType(type: IDLType): boolean;
58
64
  writeNativeMethodDeclaration(method: Method): void;
59
- writeProperty(propName: string, propType: IDLType): void;
60
65
  makeUnionVariantCondition(convertor: ArgConvertor, valueName: string, valueType: string, type: string, convertorIndex: number, runtimeTypeIndex: number): LanguageExpression;
61
66
  makeCastCustomObject(customName: string, isGenericType: boolean): LanguageExpression;
62
67
  makeHasOwnProperty(value: string, valueTypeName: string, property: string, propertyTypeName: string): LanguageExpression;
@@ -67,7 +72,7 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
67
72
  instanceOf(convertor: ArgConvertor, value: string, duplicateMembers?: Set<string>): LanguageExpression;
68
73
  typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
69
74
  makeTypeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
70
- makeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
75
+ makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
71
76
  }
72
77
  export declare function makeEnumTypeCheckerCall(valueAccessor: string, enumName: string, writer: LanguageWriter): LanguageExpression;
73
78
  //# sourceMappingURL=ETSLanguageWriter.d.ts.map
@@ -63,9 +63,9 @@ class ArkTSMapForEachStatement {
63
63
  }
64
64
  }
65
65
  export class ArkTSEnumEntityStatement {
66
- constructor(enumEntity, isExport) {
66
+ constructor(enumEntity, options) {
67
67
  this.enumEntity = enumEntity;
68
- this.isExport = isExport;
68
+ this.options = options;
69
69
  }
70
70
  write(writer) {
71
71
  let enumName = convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), this.enumEntity);
@@ -99,10 +99,7 @@ export class ArkTSEnumEntityStatement {
99
99
  }
100
100
  return res;
101
101
  });
102
- const nss = idl.getNamespacesPathFor(this.enumEntity);
103
- nss.forEach(it => writer.pushNamespace(it.name));
104
- writer.writeEnum(enumName, members);
105
- nss.forEach(() => writer.popNamespace());
102
+ writer.writeEnum(enumName, members, { isExport: this.options.isExport, isDeclare: this.options.isDeclare });
106
103
  }
107
104
  }
108
105
  export class ETSLambdaExpression extends LambdaExpression {
@@ -137,13 +134,13 @@ export function generateTypeCheckerName(typeName) {
137
134
  .replaceAll('.', ''); // Todo: hack for namespaces
138
135
  return `is${typeName.replaceAll('[]', 'Brackets')}`;
139
136
  }
140
- export function generateEnumToOrdinalName(typeName) {
137
+ export function generateEnumToNumericName(typeName) {
141
138
  typeName = typeName.split(".").join("_");
142
- return `${typeName}_ToOrdinal`;
139
+ return `${typeName}_ToNumeric`;
143
140
  }
144
- export function generateEnumFromOrdinalName(typeName) {
141
+ export function generateEnumFromNumericName(typeName) {
145
142
  typeName = typeName.split(".").join("_");
146
- return `${typeName}_FromOrdinal`;
143
+ return `${typeName}_FromNumeric`;
147
144
  }
148
145
  export function makeArrayTypeCheckCall(valueAccessor, typeName, writer) {
149
146
  return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(typeName), [writer.makeString(valueAccessor)
@@ -182,13 +179,13 @@ export class ETSLanguageWriter extends TSLanguageWriter {
182
179
  makeUnionVariantCast(value, type, convertor, index) {
183
180
  return this.makeString(`${value} as ${type}`);
184
181
  }
185
- enumFromOrdinal(value, enumEntry) {
182
+ i32FromEnum(value, enumEntry) {
186
183
  const enumName = this.getNodeName(enumEntry);
187
- return this.makeMethodCall('TypeChecker', generateEnumFromOrdinalName(enumName), [this.makeString(value.asString())]);
184
+ return this.makeMethodCall('TypeChecker', generateEnumToNumericName(enumName), [value]);
188
185
  }
189
- ordinalFromEnum(value, enumEntry) {
186
+ enumFromI32(value, enumEntry) {
190
187
  const enumName = this.getNodeName(enumEntry);
191
- return this.makeMethodCall('TypeChecker', generateEnumToOrdinalName(enumName), [this.makeString(value.asString())]);
188
+ return this.makeMethodCall('TypeChecker', generateEnumFromNumericName(enumName), [value]);
192
189
  }
193
190
  makeDiscriminatorFromFields(convertor, value, accessors, duplicates) {
194
191
  if (convertor instanceof AggregateConvertor
@@ -208,8 +205,11 @@ export class ETSLanguageWriter extends TSLanguageWriter {
208
205
  makeIsTypeCall(value, decl) {
209
206
  return makeInterfaceTypeCheckerCall(value, decl.name, decl.properties.map(it => it.name), new Set(), this);
210
207
  }
211
- makeEnumEntity(enumEntity, isExport) {
212
- return new ArkTSEnumEntityStatement(enumEntity, isExport);
208
+ makeEnumEntity(enumEntity, options) {
209
+ return new ArkTSEnumEntityStatement(enumEntity, {
210
+ isExport: options === null || options === void 0 ? void 0 : options.isExport,
211
+ isDeclare: !!(options === null || options === void 0 ? void 0 : options.isDeclare),
212
+ });
213
213
  }
214
214
  getObjectAccessor(convertor, value, args) {
215
215
  return super.getObjectAccessor(convertor, value, args);
@@ -227,9 +227,6 @@ export class ETSLanguageWriter extends TSLanguageWriter {
227
227
  }
228
228
  this.writeMethodDeclaration(method.name, method.signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
229
229
  }
230
- writeProperty(propName, propType) {
231
- throw new Error("writeProperty for ArkTS is not implemented yet.");
232
- }
233
230
  makeUnionVariantCondition(convertor, valueName, valueType, type, convertorIndex, runtimeTypeIndex) {
234
231
  if (idl.isEnum(this.resolver.toDeclaration(convertor.nativeType()))) {
235
232
  return this.instanceOf(convertor, valueName);
@@ -307,9 +304,9 @@ export class ETSLanguageWriter extends TSLanguageWriter {
307
304
  makeTypeCast(value, type, options) {
308
305
  return this.makeString(`TypeChecker.typeCast<${this.getNodeName(type)}>(value)`);
309
306
  }
310
- makeCast(value, type, options) {
307
+ makeCast(value, node, options) {
311
308
  var _a;
312
- return new TSCastExpression(value, `${this.getNodeName(type)}`, (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
309
+ return new TSCastExpression(value, `${this.getNodeName(node)}`, (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
313
310
  }
314
311
  }
315
312
  function makeInterfaceTypeCheckerCall(valueAccessor, interfaceName, allFields, duplicates, writer) {