@idlizer/core 2.1.10-arktscgen-4 → 2.1.10-arktscgen-6

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 (122) hide show
  1. package/build/lib/src/Language.d.ts +0 -1
  2. package/build/lib/src/Language.js +1 -3
  3. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +18 -7
  4. package/build/lib/src/LanguageWriters/ArgConvertors.js +95 -103
  5. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +13 -7
  6. package/build/lib/src/LanguageWriters/LanguageWriter.js +10 -2
  7. package/build/lib/src/LanguageWriters/common.d.ts +1 -0
  8. package/build/lib/src/LanguageWriters/common.js +2 -1
  9. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +0 -1
  10. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +1 -3
  11. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +14 -8
  12. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +88 -36
  13. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -0
  14. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +10 -8
  15. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +1 -1
  16. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +9 -5
  17. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -4
  18. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +98 -44
  19. package/build/lib/src/LanguageWriters/index.d.ts +5 -4
  20. package/build/lib/src/LanguageWriters/index.js +8 -15
  21. package/build/lib/src/LanguageWriters/nameConvertor.d.ts +2 -0
  22. package/build/lib/src/LanguageWriters/nameConvertor.js +11 -0
  23. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +2 -0
  24. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +13 -1
  25. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +2 -0
  26. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +8 -2
  27. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +2 -10
  28. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +52 -92
  29. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +8 -0
  30. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +75 -27
  31. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +5 -0
  32. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +58 -18
  33. package/build/lib/src/LibraryInterface.d.ts +0 -1
  34. package/build/lib/src/config.d.ts +2 -1461
  35. package/build/lib/src/config.js +16 -32
  36. package/build/lib/src/configMerge.d.ts +3 -0
  37. package/build/lib/src/configMerge.js +63 -0
  38. package/build/lib/src/diagnostictypes.d.ts +1 -5
  39. package/build/lib/src/diagnostictypes.js +1 -27
  40. package/build/lib/src/from-idl/DtsPrinter.js +13 -6
  41. package/build/lib/src/from-idl/IDLLinter.d.ts +3 -4
  42. package/build/lib/src/from-idl/IDLLinter.js +30 -32
  43. package/build/lib/src/from-idl/deserialize.d.ts +3 -4
  44. package/build/lib/src/from-idl/deserialize.js +30 -642
  45. package/build/lib/src/from-idl/parser.d.ts +20 -2
  46. package/build/lib/src/from-idl/parser.js +97 -29
  47. package/build/lib/src/idl/builders.d.ts +43 -0
  48. package/build/lib/src/idl/builders.js +135 -0
  49. package/build/lib/src/idl/discriminators.d.ts +53 -0
  50. package/build/lib/src/idl/discriminators.js +232 -0
  51. package/build/lib/src/idl/dump.d.ts +48 -0
  52. package/build/lib/src/idl/dump.js +327 -0
  53. package/build/lib/src/idl/index.d.ts +9 -0
  54. package/build/lib/src/idl/index.js +23 -0
  55. package/build/lib/src/idl/keywords.d.ts +2 -0
  56. package/build/lib/src/{options.js → idl/keywords.js} +7 -3
  57. package/build/lib/src/idl/node.d.ts +233 -0
  58. package/build/lib/src/idl/node.js +103 -0
  59. package/build/lib/src/idl/stdlib.d.ts +34 -0
  60. package/build/lib/src/idl/stdlib.js +54 -0
  61. package/build/lib/src/idl/utils.d.ts +44 -0
  62. package/build/lib/src/idl/utils.js +215 -0
  63. package/build/lib/src/idl/visitors.d.ts +15 -0
  64. package/build/lib/src/idl/visitors.js +593 -0
  65. package/build/lib/src/index.d.ts +5 -6
  66. package/build/lib/src/index.js +6 -7
  67. package/build/lib/src/inheritance.d.ts +0 -2
  68. package/build/lib/src/inheritance.js +0 -17
  69. package/build/lib/src/inputPaths.d.ts +11 -0
  70. package/build/lib/src/inputPaths.js +81 -0
  71. package/build/lib/src/languageSpecificKeywords.d.ts +0 -1
  72. package/build/lib/src/languageSpecificKeywords.js +0 -5
  73. package/build/lib/src/peer-generation/ConflictingDeclarations.d.ts +6 -0
  74. package/build/lib/src/peer-generation/ConflictingDeclarations.js +43 -0
  75. package/build/lib/src/peer-generation/LayoutManager.d.ts +3 -1
  76. package/build/lib/src/peer-generation/LayoutManager.js +15 -0
  77. package/build/lib/src/peer-generation/Materialized.d.ts +8 -0
  78. package/build/lib/src/peer-generation/Materialized.js +26 -1
  79. package/build/lib/src/peer-generation/PeerLibrary.d.ts +10 -18
  80. package/build/lib/src/peer-generation/PeerLibrary.js +63 -227
  81. package/build/lib/src/peer-generation/ReferenceResolver.d.ts +6 -1
  82. package/build/lib/src/peer-generation/ReferenceResolver.js +93 -2
  83. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +6 -0
  84. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +15 -3
  85. package/build/lib/src/peer-generation/idl/common.d.ts +6 -2
  86. package/build/lib/src/peer-generation/idl/common.js +7 -7
  87. package/build/lib/src/peer-generation/isMaterialized.js +2 -3
  88. package/build/lib/src/peer-generation/modules.js +2 -0
  89. package/build/lib/src/peer-generation/toDeclaration.d.ts +4 -0
  90. package/build/lib/src/peer-generation/toDeclaration.js +53 -0
  91. package/build/lib/src/peer-generation/unions.d.ts +1 -1
  92. package/build/lib/src/peer-generation/unions.js +15 -7
  93. package/build/lib/src/resolveNamedNode.d.ts +1 -0
  94. package/build/lib/src/resolveNamedNode.js +7 -0
  95. package/build/lib/src/transformers/FqnTransformer.d.ts +1 -1
  96. package/build/lib/src/transformers/FqnTransformer.js +20 -12
  97. package/build/lib/src/transformers/GenericTransformer.d.ts +4 -3
  98. package/build/lib/src/transformers/GenericTransformer.js +252 -158
  99. package/build/lib/src/transformers/IdlTransformer.d.ts +6 -0
  100. package/build/lib/src/transformers/IdlTransformer.js +7 -0
  101. package/build/lib/src/transformers/NullTransformer.d.ts +1 -1
  102. package/build/lib/src/transformers/NullTransformer.js +27 -21
  103. package/build/lib/src/transformers/OnSerializeTransformer.d.ts +1 -1
  104. package/build/lib/src/transformers/OnSerializeTransformer.js +28 -13
  105. package/build/lib/src/util.d.ts +9 -39
  106. package/build/lib/src/util.js +65 -369
  107. package/package.json +44 -49
  108. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +0 -37
  109. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +0 -210
  110. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +0 -83
  111. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +0 -295
  112. package/build/lib/src/from-idl/webidl2-utils.d.ts +0 -21
  113. package/build/lib/src/from-idl/webidl2-utils.js +0 -87
  114. package/build/lib/src/idl.d.ts +0 -439
  115. package/build/lib/src/idl.js +0 -1367
  116. package/build/lib/src/idlize.d.ts +0 -25
  117. package/build/lib/src/idlize.js +0 -198
  118. package/build/lib/src/options.d.ts +0 -13
  119. package/build/lib/src/peer-generation/BuilderClass.d.ts +0 -20
  120. package/build/lib/src/peer-generation/BuilderClass.js +0 -68
  121. package/webidl2.js/dist/webidl2.js +0 -4622
  122. package/webidl2.js/package.json +0 -55
@@ -3,7 +3,6 @@ export declare class Language {
3
3
  extension: string;
4
4
  static TS: Language;
5
5
  static ARKTS: Language;
6
- static JAVA: Language;
7
6
  static CPP: Language;
8
7
  static CJ: Language;
9
8
  static KOTLIN: Language;
@@ -26,7 +26,6 @@ export class Language {
26
26
  static fromString(name) {
27
27
  switch (name) {
28
28
  case "arkts": return Language.ARKTS;
29
- case "java": return Language.JAVA;
30
29
  case "ts": return Language.TS;
31
30
  case "cangjie": return Language.CJ;
32
31
  case "cpp": return Language.CPP;
@@ -37,8 +36,7 @@ export class Language {
37
36
  }
38
37
  Language.TS = new Language("TS", ".ts");
39
38
  Language.ARKTS = new Language("ArkTS", ".ts"); // using .ts for ArkTS until we get rit of tsc preprocessing
40
- Language.JAVA = new Language("Java", ".java");
41
- Language.CPP = new Language("C++", ".cc");
39
+ Language.CPP = new Language("C++", ".cpp");
42
40
  Language.CJ = new Language("CangJie", ".cj");
43
41
  Language.KOTLIN = new Language("Kotlin", ".kt");
44
42
  //# sourceMappingURL=Language.js.map
@@ -1,12 +1,11 @@
1
1
  import * as idl from "../idl";
2
2
  import { Language } from "../Language";
3
- import { ExpressionAssigner, LanguageExpression, LanguageStatement, LanguageWriter, Method } from "./LanguageWriter";
3
+ import { BranchStatement, ExpressionAssigner, LanguageExpression, LanguageStatement, LanguageWriter } from "./LanguageWriter";
4
4
  import { NativeModuleType, RuntimeType } from "./common";
5
5
  import { LibraryInterface } from "../LibraryInterface";
6
6
  import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
7
7
  import { PeerLibrary } from "../peer-generation/PeerLibrary";
8
- import { PeerMethodSignature } from "../peer-generation/PeerMethod";
9
- export declare function getSerializerName(declaration: idl.IDLEntry): string;
8
+ export declare function getSerializerName(_library: LibraryInterface, _language: Language, declaration: idl.IDLEntry): string;
10
9
  export interface ArgConvertor {
11
10
  param: string;
12
11
  idlType: idl.IDLType;
@@ -26,9 +25,6 @@ export interface ArgConvertor {
26
25
  getMembers(): string[];
27
26
  getObjectAccessor(languge: Language, value: string, args?: Record<string, string>, writer?: LanguageWriter): string;
28
27
  }
29
- export declare function isDirectConvertedType(originalType: idl.IDLType | undefined, library: PeerLibrary): boolean;
30
- export declare function isVMContextMethod(method: Method | PeerMethodSignature): boolean;
31
- export declare function isDirectMethod(method: Method, library: PeerLibrary): boolean;
32
28
  export declare abstract class BaseArgConvertor implements ArgConvertor {
33
29
  idlType: idl.IDLType;
34
30
  runtimeTypes: RuntimeType[];
@@ -106,8 +102,9 @@ export declare class NumberConvertor extends BaseArgConvertor {
106
102
  isPointerType(): boolean;
107
103
  }
108
104
  export declare class NumericConvertor extends BaseArgConvertor {
105
+ protected library: LibraryInterface;
109
106
  private readonly interopNameConvertor;
110
- constructor(param: string, type: idl.IDLPrimitiveType);
107
+ constructor(library: LibraryInterface, param: string, type: idl.IDLPrimitiveType);
111
108
  convertorArg(param: string, writer: LanguageWriter): string;
112
109
  convertorSerialize(param: string, value: string, writer: LanguageWriter): LanguageStatement;
113
110
  convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
@@ -277,6 +274,13 @@ export declare class OptionConvertor extends BaseArgConvertor {
277
274
  isPointerType(): boolean;
278
275
  getObjectAccessor(language: Language, value: string, args?: Record<string, string>): string;
279
276
  }
277
+ declare class ConvertorItem {
278
+ convertor: ArgConvertor;
279
+ index: number;
280
+ type: idl.IDLType;
281
+ elemName?: string | undefined;
282
+ constructor(convertor: ArgConvertor, index: number, type: idl.IDLType, elemName?: string | undefined);
283
+ }
280
284
  export declare class UnionConvertor extends BaseArgConvertor {
281
285
  private library;
282
286
  private type;
@@ -284,7 +288,13 @@ export declare class UnionConvertor extends BaseArgConvertor {
284
288
  private unionChecker;
285
289
  constructor(library: LibraryInterface, param: string, type: idl.IDLUnionType);
286
290
  convertorArg(param: string, writer: LanguageWriter): string;
291
+ isSequence(type: idl.IDLType): boolean;
292
+ isIndexedDiscriminator(writer: LanguageWriter): boolean;
287
293
  convertorSerialize(param: string, value: string, printer: LanguageWriter): LanguageStatement;
294
+ makeStoreSelector(param: string, index: number, printer: LanguageWriter): LanguageStatement;
295
+ makeBranch(param: string, value: string, printer: LanguageWriter, convertorItem: ConvertorItem): BranchStatement;
296
+ makeArrayBranch(param: string, value: string, printer: LanguageWriter, arrayConvertorItems: ConvertorItem[]): BranchStatement[];
297
+ convertorSerializeMultiBranch(param: string, value: string, printer: LanguageWriter, convertors: ConvertorItem[]): LanguageStatement;
288
298
  convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
289
299
  nativeType(): idl.IDLType;
290
300
  interopType(): idl.IDLType;
@@ -356,4 +366,5 @@ export declare class TransformOnSerializeConvertor extends BaseArgConvertor {
356
366
  convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
357
367
  }
358
368
  export declare function createOutArgConvertor(library: PeerLibrary, type: idl.IDLType | undefined, otherParams: string[]): ArgConvertor | undefined;
369
+ export {};
359
370
  //# sourceMappingURL=ArgConvertors.d.ts.map
@@ -14,84 +14,17 @@
14
14
  */
15
15
  import * as idl from "../idl";
16
16
  import { Language } from "../Language";
17
- import { BlockStatement, PrintHint, StringExpression, MethodModifier, NamedMethodSignature, ProxyStatement, ExpressionStatement } from "./LanguageWriter";
17
+ import { BlockStatement, PrintHint, StringExpression, NamedMethodSignature, ProxyStatement, ExpressionStatement } from "./LanguageWriter";
18
18
  import { RuntimeType } from "./common";
19
19
  import { generatorConfiguration, generatorTypePrefix } from "../config";
20
20
  import { capitalize, getExtractor, getTransformer, hashCodeFromString, throwException, warn } from "../util";
21
21
  import { UnionRuntimeTypeChecker } from "../peer-generation/unions";
22
22
  import { CppConvertor, CppNameConvertor } from "./convertors/CppConvertors";
23
- import { createEmptyReferenceResolver } from "../peer-generation/ReferenceResolver";
24
23
  import { PrimitiveTypesInstance } from "../peer-generation/PrimitiveType";
25
- import { qualifiedName } from "../peer-generation/idl/common";
26
24
  import { LayoutNodeRole } from "../peer-generation/LayoutManager";
27
- import { PeerMethodSignature } from "../peer-generation/PeerMethod";
28
25
  import { isInExternalModule } from "../peer-generation/modules";
29
- export function getSerializerName(declaration) {
30
- return `${idl.getQualifiedName(declaration, "namespace.name").split('.').join('_')}_serializer`;
31
- }
32
- export function isDirectConvertedType(originalType, library) {
33
- const debug = false;
34
- if (originalType == undefined)
35
- return true; // TODO: is it correct?
36
- if (debug)
37
- console.log(`IDL type ${idl.DebugUtils.debugPrintType(originalType)}`);
38
- if (originalType == idl.IDLInteropReturnBufferType)
39
- return false;
40
- if (originalType == idl.IDLThisType)
41
- return true; /* Because this type for native is pointer, right? */
42
- if (originalType == idl.IDLSerializerBuffer)
43
- return true;
44
- let convertor = library.typeConvertor("x", originalType, false);
45
- // Resolve aliases.
46
- while (convertor instanceof TypeAliasConvertor) {
47
- convertor = convertor.convertor;
48
- }
49
- if (convertor instanceof ArrayConvertor ||
50
- convertor instanceof CustomTypeConvertor ||
51
- convertor instanceof UnionConvertor ||
52
- convertor instanceof CallbackConvertor ||
53
- convertor instanceof MapConvertor ||
54
- convertor instanceof TupleConvertor ||
55
- convertor instanceof AggregateConvertor ||
56
- convertor instanceof OptionConvertor ||
57
- convertor instanceof ImportTypeConvertor) {
58
- // try { console.log(`convertor is ${convertor.constructor.name} for ${JSON.stringify(originalType)}`) } catch (e) {}
59
- return false;
60
- }
61
- let type = convertor.interopType();
62
- if (debug)
63
- console.log(`converted type ${idl.DebugUtils.debugPrintType(originalType)}`);
64
- let result = type == idl.IDLI8Type || type == idl.IDLU8Type
65
- || type == idl.IDLI16Type || type == idl.IDLU16Type
66
- || type == idl.IDLI32Type || type == idl.IDLU32Type
67
- || type == idl.IDLF32Type
68
- || type == idl.IDLI64Type || type == idl.IDLU64Type
69
- || type == idl.IDLPointerType
70
- || type == idl.IDLBooleanType
71
- || type == idl.IDLVoidType
72
- || type == idl.IDLUndefinedType
73
- || type == idl.IDLSerializerBuffer
74
- || type == idl.IDLNumberType;
75
- if (!result && debug)
76
- console.log(`type ${idl.DebugUtils.debugPrintType(type)} is not direct`);
77
- return result;
78
- }
79
- export function isVMContextMethod(method) {
80
- var _a, _b;
81
- const isPromise = !!idl.asPromise(method instanceof PeerMethodSignature ? method.returnType : method.signature.returnType);
82
- return isPromise ||
83
- !!((_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.THROWS)) ||
84
- !!((_b = method.modifiers) === null || _b === void 0 ? void 0 : _b.includes(MethodModifier.FORCE_CONTEXT)) ||
85
- generatorConfiguration().forceContext.includes(method.name);
86
- }
87
- export function isDirectMethod(method, library) {
88
- if (isVMContextMethod(method)) {
89
- return false;
90
- }
91
- let result = isDirectConvertedType(method.signature.returnType, library) &&
92
- method.signature.args.every((arg) => isDirectConvertedType(arg, library));
93
- // if (!result) console.log(`method ${method.name} is not direct`)
94
- return result;
26
+ export function getSerializerName(_library, _language, declaration) {
27
+ return `${idl.getQualifiedName(declaration, "package.namespace.name").split('.').map(capitalize).join('')}SerializerImpl`;
95
28
  }
96
29
  export class BaseArgConvertor {
97
30
  constructor(idlType, runtimeTypes, isScoped, useArray, param) {
@@ -298,10 +231,11 @@ export class NumberConvertor extends BaseArgConvertor {
298
231
  }
299
232
  }
300
233
  export class NumericConvertor extends BaseArgConvertor {
301
- constructor(param, type) {
234
+ constructor(library, param, type) {
302
235
  // check numericPrimitiveTypes.include(type)
303
236
  super(type, [RuntimeType.NUMBER], false, false, param);
304
- this.interopNameConvertor = new CppNameConvertor(createEmptyReferenceResolver());
237
+ this.library = library;
238
+ this.interopNameConvertor = new CppNameConvertor(this.library);
305
239
  }
306
240
  convertorArg(param, writer) {
307
241
  return param;
@@ -368,7 +302,7 @@ export class ObjectConvertor extends BaseArgConvertor {
368
302
  return assigneer(writer.makeCast(writer.makeMethodCall(deserializerName, 'readObject', []), this.idlType, { optional: false }));
369
303
  }
370
304
  holdResource(name, holder, writer) {
371
- writer.writeStatement(writer.makeAssign(name, idl.createReferenceType(`CallbackResource`), writer.makeString(`{${this.param}.resource.resourceId, holdManagedCallbackResource, releaseManagedCallbackResource}`), true));
305
+ writer.writeStatement(writer.makeAssign(name, idl.createReferenceType(`idlize.stdlib.CallbackResource`), writer.makeString(`{${this.param}.resource.resourceId, holdManagedCallbackResource, releaseManagedCallbackResource}`), true));
372
306
  writer.writeExpressionStatement(writer.makeMethodCall(holder, 'holdCallbackResource', [
373
307
  writer.makeString('&' + name)
374
308
  ]));
@@ -541,8 +475,8 @@ export class TupleConvertor extends AggregateConvertor {
541
475
  convertorSerialize(param, value, printer) {
542
476
  const stmts = this.memberConvertors.flatMap((it, index) => {
543
477
  return [
544
- printer.makeAssign(`${value}_${index}`, undefined, printer.makeTupleAccess(value, index), true),
545
- it.convertorSerialize(param, `${value}_${index}`, printer)
478
+ printer.makeAssign(`${value}N${index}`, undefined, printer.makeTupleAccess(value, index), true),
479
+ it.convertorSerialize(param, `${value}N${index}`, printer)
546
480
  ];
547
481
  });
548
482
  return printer.makeBlock(stmts, false);
@@ -577,12 +511,12 @@ export class InterfaceConvertor extends BaseArgConvertor {
577
511
  throw new Error("Must never be used");
578
512
  }
579
513
  convertorSerialize(param, value, writer) {
580
- const accessor = getSerializerName(this.declaration);
514
+ const accessor = getSerializerName(this.library, writer.language, this.declaration);
581
515
  writer.addFeature(accessor, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
582
516
  return writer.makeStatement(writer.makeStaticMethodCall(accessor, 'write', [writer.makeString(`${param}Serializer`), writer.makeString(writer.escapeKeyword(value))]));
583
517
  }
584
518
  convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
585
- const accessor = getSerializerName(this.declaration);
519
+ const accessor = getSerializerName(this.library, writer.language, this.declaration);
586
520
  writer.addFeature(accessor, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
587
521
  return assigneer(writer.makeStaticMethodCall(accessor, 'read', [writer.makeString(deserializerName)]));
588
522
  }
@@ -882,13 +816,13 @@ export class OptionConvertor extends BaseArgConvertor {
882
816
  throw new Error("Must never be used");
883
817
  }
884
818
  convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
885
- const runtimeBufferName = `${bufferName}_runtimeType`;
819
+ const runtimeBufferName = `${bufferName}RuntimeType`;
886
820
  const statements = [];
887
821
  statements.push(writer.makeAssign(runtimeBufferName, undefined, writer.makeCast(writer.makeString(`${deserializerName}.readInt8()`), writer.getRuntimeType()), true));
888
822
  const bufferType = this.nativeType();
889
823
  statements.push(writer.makeAssign(bufferName, bufferType, writer.language === Language.CPP ? undefined : writer.makeNull(this.type), true, false)); // maybe change to generic None
890
824
  const thenStatement = new BlockStatement([
891
- this.typeConvertor.convertorDeserialize(`${bufferName}_`, deserializerName, (expr) => {
825
+ this.typeConvertor.convertorDeserialize(`${bufferName}Opt`, deserializerName, (expr) => {
892
826
  const receiver = writer.language === Language.CPP
893
827
  ? `${bufferName}.value` : bufferName;
894
828
  return writer.makeAssign(receiver, undefined, expr, false);
@@ -912,6 +846,14 @@ export class OptionConvertor extends BaseArgConvertor {
912
846
  return language === Language.CPP ? `${value}.value` : value;
913
847
  }
914
848
  }
849
+ class ConvertorItem {
850
+ constructor(convertor, index, type, elemName) {
851
+ this.convertor = convertor;
852
+ this.index = index;
853
+ this.type = type;
854
+ this.elemName = elemName;
855
+ }
856
+ }
915
857
  export class UnionConvertor extends BaseArgConvertor {
916
858
  constructor(library, param, type) {
917
859
  super(idl.IDLObjectType, [], false, true, param);
@@ -925,20 +867,68 @@ export class UnionConvertor extends BaseArgConvertor {
925
867
  convertorArg(param, writer) {
926
868
  throw new Error("Do not use for union");
927
869
  }
870
+ isSequence(type) {
871
+ return idl.isContainerType(type) && idl.IDLContainerUtils.isSequence(type);
872
+ }
873
+ isIndexedDiscriminator(writer) {
874
+ // Indexed discriminator is only used in CPP
875
+ // All other languages check the first array element type for arrays discrimination
876
+ if (writer.language == Language.CPP)
877
+ return true;
878
+ return false;
879
+ }
928
880
  convertorSerialize(param, value, printer) {
929
- const branches = this.memberConvertors.map((it, index) => {
930
- const discriminator = this.unionChecker.makeDiscriminator(value, index, printer);
931
- const statements = [];
932
- statements.push(printer.makeStatement(printer.makeMethodCall(`${param}Serializer`, "writeInt8", [printer.makeString(printer.castToInt(index.toString(), 8))])));
933
- if (!(it instanceof UndefinedConvertor)) {
934
- const varName = `${value}ForIdx${index}`;
935
- statements.push(printer.makeAssign(varName, undefined, printer.makeUnionVariantCast(it.getObjectAccessor(printer.language, value), printer.getNodeName(it.idlType), it, index), true));
936
- statements.push(it.convertorSerialize(param, varName, printer));
937
- }
938
- const stmt = new BlockStatement(statements, false);
939
- return { expr: discriminator, stmt };
940
- });
941
- return printer.makeMultiBranchCondition(branches);
881
+ const convertorItems = this.memberConvertors.map((it, index) => new ConvertorItem(it, index, it.idlType));
882
+ if (this.isIndexedDiscriminator(printer))
883
+ return printer.makeMultiBranchCondition(convertorItems.map(it => this.makeBranch(param, value, printer, it)));
884
+ // Make arrays type descrimination
885
+ return this.convertorSerializeMultiBranch(param, value, printer, convertorItems);
886
+ }
887
+ makeStoreSelector(param, index, printer) {
888
+ return printer.makeStatement(printer.makeMethodCall(`${param}Serializer`, "writeInt8", [printer.makeString(printer.castToInt(index.toString(), 8))]));
889
+ }
890
+ makeBranch(param, value, printer, convertorItem) {
891
+ var _a;
892
+ const convertor = convertorItem.convertor;
893
+ const index = convertorItem.index;
894
+ const type = convertorItem.type;
895
+ const discriminator = this.unionChecker.makeDiscriminator((_a = convertorItem.elemName) !== null && _a !== void 0 ? _a : value, index, printer, this.library, type);
896
+ const statements = [];
897
+ statements.push(this.makeStoreSelector(param, index, printer));
898
+ if (!(convertor instanceof UndefinedConvertor)) {
899
+ const varName = `${value}ForIdx${index}`;
900
+ statements.push(printer.makeAssign(varName, undefined, printer.makeUnionVariantCast(convertor.getObjectAccessor(printer.language, value), printer.getNodeName(convertor.idlType), convertor, index), true));
901
+ statements.push(convertor.convertorSerialize(param, varName, printer));
902
+ }
903
+ const stmt = new BlockStatement(statements, false);
904
+ return { expr: discriminator, stmt };
905
+ }
906
+ makeArrayBranch(param, value, printer, arrayConvertorItems) {
907
+ if (arrayConvertorItems.length == 0)
908
+ return [];
909
+ const arrayConvertorItem = arrayConvertorItems[0];
910
+ const elemName = `${value}Elem`;
911
+ const elemAccess = printer.makeString(`${value}[0]`);
912
+ const checkZeroArray = printer.makeCondition(printer.makeString(`${value}.length == 0`), new BlockStatement([
913
+ this.makeStoreSelector(param, arrayConvertorItem.index, printer),
914
+ printer.makeStatement(printer.makeMethodCall(`${param}Serializer`, "writeInt32", [printer.makeString("0")]))
915
+ ], true, false), new BlockStatement([
916
+ printer.makeAssign(elemName, undefined, elemAccess, true, true),
917
+ this.convertorSerializeMultiBranch(param, value, printer, arrayConvertorItems.map(it => new ConvertorItem(it.convertor, it.index, it.type.elementType[0], elemName)))
918
+ ], true, false));
919
+ const arrayMultiBranch = {
920
+ expr: this.unionChecker.makeDiscriminator(value, arrayConvertorItems[0].index, printer, this.library, arrayConvertorItem.type),
921
+ stmt: checkZeroArray
922
+ };
923
+ return [arrayMultiBranch];
924
+ }
925
+ convertorSerializeMultiBranch(param, value, printer, convertors) {
926
+ return printer.makeMultiBranchCondition([
927
+ ...convertors
928
+ .filter(it => !this.isSequence(it.type))
929
+ .map(it => this.makeBranch(param, value, printer, it)),
930
+ ...this.makeArrayBranch(param, value, printer, convertors.filter(it => this.isSequence(it.type)))
931
+ ]);
942
932
  }
943
933
  convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
944
934
  const statements = [];
@@ -983,7 +973,7 @@ export class UnionConvertor extends BaseArgConvertor {
983
973
  return language === Language.CPP && (args === null || args === void 0 ? void 0 : args.index) ? `${value}.value${args.index}` : value;
984
974
  }
985
975
  unionDiscriminator(value, index, writer, duplicates) {
986
- return writer.makeNaryOp("||", this.memberConvertors.map((_, n) => this.unionChecker.makeDiscriminator(value, n, writer)));
976
+ return writer.makeNaryOp("||", this.memberConvertors.map((_, n) => this.unionChecker.makeDiscriminator(value, n, writer, this.library)));
987
977
  }
988
978
  }
989
979
  export class FunctionConvertor extends BaseArgConvertor {
@@ -1018,10 +1008,10 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
1018
1008
  this.declaration = declaration;
1019
1009
  }
1020
1010
  convertorArg(param, writer) {
1011
+ const nameConvertor = this.library.createTypeNameConvertor(Language.CPP);
1021
1012
  switch (writer.language) {
1022
1013
  case Language.CPP:
1023
- return `static_cast<${generatorTypePrefix()}${qualifiedName(this.declaration, "_", "namespace.name")}>(${param})`;
1024
- case Language.JAVA:
1014
+ return `static_cast<${nameConvertor.convert(this.declaration)}>(${param})`;
1025
1015
  case Language.CJ:
1026
1016
  return `MaterializedBase.toPeerPtr(${writer.escapeKeyword(param)})`;
1027
1017
  default:
@@ -1033,12 +1023,12 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
1033
1023
  }
1034
1024
  }
1035
1025
  convertorSerialize(param, value, printer) {
1036
- const accessorRoot = getSerializerName(this.declaration);
1026
+ const accessorRoot = getSerializerName(this.library, printer.language, this.declaration);
1037
1027
  printer.addFeature(accessorRoot, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
1038
1028
  return printer.makeStatement(printer.makeStaticMethodCall(accessorRoot, 'write', [printer.makeString(`${param}Serializer`), printer.makeString(value)]));
1039
1029
  }
1040
1030
  convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
1041
- const accessorRoot = getSerializerName(this.declaration);
1031
+ const accessorRoot = getSerializerName(this.library, writer.language, this.declaration);
1042
1032
  writer.addFeature(accessorRoot, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
1043
1033
  const readStatement = writer.makeCast(writer.makeStaticMethodCall(accessorRoot, "read", [writer.makeString(deserializerName)]), this.declaration);
1044
1034
  return assigneer(readStatement);
@@ -1115,8 +1105,10 @@ export class CallbackConvertor extends BaseArgConvertor {
1115
1105
  writer.makeStatement(writer.makeMethodCall(`${param}Serializer`, "writePointer", [writer.makeCast(new StringExpression(`${value}.callSync`), idl.IDLPointerType, { unsafe: true })]))
1116
1106
  ], false);
1117
1107
  }
1118
- if (this.isTransformed)
1119
- value = `CallbackTransformer.transformFrom${this.library.getInteropName(this.decl)}(${value})`;
1108
+ if (this.isTransformed) {
1109
+ const convertor = this.library.createTypeNameConvertor(Language.CPP);
1110
+ value = `CallbackTransformer.transformFrom${convertor.convert(this.decl)}(${value})`;
1111
+ }
1120
1112
  return writer.makeStatement(writer.makeMethodCall(`${param}Serializer`, `holdAndWriteCallback`, [writer.makeString(`${value}`)]));
1121
1113
  }
1122
1114
  convertorDeserialize(bufferName, deserializerName, assigneer, writer, useSyncVersion = true) {
@@ -1141,7 +1133,7 @@ export class CallbackConvertor extends BaseArgConvertor {
1141
1133
  const continuationValueName = bufferName + "BufContinuationValue";
1142
1134
  const continuationCallbackName = bufferName + "BufContinuationCallback";
1143
1135
  const statements = [];
1144
- statements.push(writer.makeAssign(resourceName, idl.createReferenceType("CallbackResource"), writer.makeMethodCall(deserializerName, 'readCallbackResource', []), true));
1136
+ statements.push(writer.makeAssign(resourceName, idl.createReferenceType("idlize.stdlib.CallbackResource"), writer.makeMethodCall(deserializerName, 'readCallbackResource', []), true));
1145
1137
  statements.push(writer.makeAssign(callName, idl.IDLPointerType, writer.makeMethodCall(deserializerName, `readPointer`, []), true));
1146
1138
  statements.push(writer.makeAssign(callSyncName, idl.IDLPointerType, writer.makeMethodCall(deserializerName, 'readPointer', []), true));
1147
1139
  const callbackSignature = new NamedMethodSignature(this.decl.returnType, this.decl.parameters.map(it => idl.maybeOptional(it.type, it.isOptional)), this.decl.parameters.map(it => it.name));
@@ -1167,7 +1159,7 @@ export class CallbackConvertor extends BaseArgConvertor {
1167
1159
  ];
1168
1160
  }
1169
1161
  const result = writer.makeLambda(callbackSignature, [
1170
- writer.makeAssign(`${argsSerializer}Serializer`, idl.createReferenceType('SerializerBase'), writer.makeMethodCall('SerializerBase', 'hold', []), true),
1162
+ writer.makeAssign(`${argsSerializer}Serializer`, idl.createReferenceType('idlize.internal.SerializerBase'), writer.makeMethodCall('SerializerBase', 'hold', []), true),
1171
1163
  new ExpressionStatement(writer.makeMethodCall(`${argsSerializer}Serializer`, `writeInt32`, [writer.makeString(`${resourceName}.resourceId`)])),
1172
1164
  new ExpressionStatement(writer.makeMethodCall(`${argsSerializer}Serializer`, `writePointer`, [writer.makeString(callName)])),
1173
1165
  new ExpressionStatement(writer.makeMethodCall(`${argsSerializer}Serializer`, `writePointer`, [writer.makeString(callSyncName)])),
@@ -1221,7 +1213,7 @@ function warnCustomObject(type, msg) {
1221
1213
  }
1222
1214
  export const CallbackKind = "CallbackKind";
1223
1215
  export function generateCallbackKindName(callback) {
1224
- return `Kind_${callback.name}`;
1216
+ return `KIND_${callback.name.toUpperCase()}`;
1225
1217
  }
1226
1218
  export function generateCallbackKindAccess(callback, language) {
1227
1219
  const name = generateCallbackKindName(callback);
@@ -1250,7 +1242,7 @@ export function generateCallbackAPIArguments(library, callback) {
1250
1242
  }
1251
1243
  export function maybeTransformManagedCallback(callback, library) {
1252
1244
  if (callback.name === "CustomBuilder")
1253
- return library.resolveTypeReference(idl.createReferenceType("CustomNodeBuilder"));
1245
+ return library.resolveTypeReference(idl.createReferenceType("arkui.component.idlize.CustomNodeBuilder"));
1254
1246
  return undefined;
1255
1247
  }
1256
1248
  class PromiseOutArgConvertor extends BaseArgConvertor {
@@ -109,6 +109,12 @@ export declare class MultiBranchIfStatement implements LanguageStatement {
109
109
  constructor(statements: BranchStatement[], elseStatement: LanguageStatement | undefined);
110
110
  write(writer: LanguageWriter): void;
111
111
  }
112
+ export type EnumMember = {
113
+ name: string;
114
+ alias?: string;
115
+ stringId: string | undefined;
116
+ numberId: number;
117
+ };
112
118
  export declare class TsEnumEntityStatement implements LanguageStatement {
113
119
  private readonly enumEntity;
114
120
  private readonly options;
@@ -146,8 +152,11 @@ export declare enum FieldModifier {
146
152
  FINAL = 5,
147
153
  VOLATILE = 6,
148
154
  INTERNAL = 7,
149
- OVERRIDE = 8
155
+ OVERRIDE = 8,
156
+ GET = 9,
157
+ SET = 10
150
158
  }
159
+ export declare const ACCESS_MODIFIERS_SET: Set<FieldModifier>;
151
160
  export declare enum MethodModifier {
152
161
  PUBLIC = 0,
153
162
  PRIVATE = 1,
@@ -254,13 +263,9 @@ export declare abstract class LanguageWriter {
254
263
  })[];
255
264
  addFeature(node: idl.IDLEntry | idl.IDLReferenceType): void;
256
265
  addFeature(feature: string, module: string): void;
266
+ abstract get interopModule(): string;
257
267
  abstract writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isExport?: boolean): void;
258
- abstract writeEnum(name: string, members: {
259
- name: string;
260
- alias?: string;
261
- stringId: string | undefined;
262
- numberId: number;
263
- }[], options: {
268
+ abstract writeEnum(name: string, members: EnumMember[], options: {
264
269
  isExport: boolean;
265
270
  isDeclare?: boolean;
266
271
  }, op?: (writer: this) => void): void;
@@ -280,6 +285,7 @@ export declare abstract class LanguageWriter {
280
285
  }, initExpr?: LanguageExpression): void;
281
286
  abstract writeTypeDeclaration(decl: idl.IDLTypedef): void;
282
287
  abstract writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
288
+ abstract writeImports(moduleName: string, importedFeatures: string[], aliases: string[]): void;
283
289
  abstract makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression | undefined, isDeclared: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
284
290
  abstract makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
285
291
  abstract makeThrowError(message: string): LanguageStatement;
@@ -15,6 +15,7 @@
15
15
  import * as idl from "../idl";
16
16
  import * as fs from "fs";
17
17
  import { RuntimeType } from "./common";
18
+ import { withInsideInstanceof } from "./nameConvertor";
18
19
  export class TernaryExpression {
19
20
  constructor(condition, trueExpression, falseExpression) {
20
21
  this.condition = condition;
@@ -307,7 +308,14 @@ export var FieldModifier;
307
308
  FieldModifier[FieldModifier["VOLATILE"] = 6] = "VOLATILE";
308
309
  FieldModifier[FieldModifier["INTERNAL"] = 7] = "INTERNAL";
309
310
  FieldModifier[FieldModifier["OVERRIDE"] = 8] = "OVERRIDE";
311
+ FieldModifier[FieldModifier["GET"] = 9] = "GET";
312
+ FieldModifier[FieldModifier["SET"] = 10] = "SET";
310
313
  })(FieldModifier || (FieldModifier = {}));
314
+ export const ACCESS_MODIFIERS_SET = new Set([
315
+ FieldModifier.PRIVATE,
316
+ FieldModifier.PROTECTED,
317
+ FieldModifier.PUBLIC
318
+ ]);
311
319
  export var MethodModifier;
312
320
  (function (MethodModifier) {
313
321
  MethodModifier[MethodModifier["PUBLIC"] = 0] = "PUBLIC";
@@ -683,11 +691,11 @@ export class LanguageWriter {
683
691
  op(this);
684
692
  }
685
693
  instanceOf(value, type) {
686
- return this.makeString(`${value} instanceof ${this.getNodeName(type)}`);
694
+ return this.makeString(`${value} instanceof ${withInsideInstanceof(true, () => this.getNodeName(type))}`);
687
695
  }
688
696
  // The version of instanceOf() which does not use ArgConvertors
689
697
  typeInstanceOf(type, value, members) {
690
- return this.makeString(`${value} instanceof ${this.getNodeName(type)}`);
698
+ return this.makeString(`${value} instanceof ${withInsideInstanceof(true, () => this.getNodeName(type))}`);
691
699
  }
692
700
  /**
693
701
  * Writes `namespace <namespace> {` and adds extra indent
@@ -14,4 +14,5 @@ export declare class NativeModuleType {
14
14
  name: string;
15
15
  constructor(name: string);
16
16
  }
17
+ export declare const InteropModuleType: NativeModuleType;
17
18
  //# sourceMappingURL=common.d.ts.map
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2024 Huawei Device Co., Ltd.
2
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
3
3
  * Licensed under the Apache License, Version 2.0 (the "License");
4
4
  * you may not use this file except in compliance with the License.
5
5
  * You may obtain a copy of the License at
@@ -30,4 +30,5 @@ export class NativeModuleType {
30
30
  this.name = name;
31
31
  }
32
32
  }
33
+ export const InteropModuleType = new NativeModuleType("InteropNativeModule");
33
34
  //# sourceMappingURL=common.js.map
@@ -32,5 +32,4 @@ export declare class CJIDLTypeToForeignStringConvertor extends CJTypeNameConvert
32
32
  export declare class CJInteropArgConvertor extends InteropArgConvertor {
33
33
  convertPrimitiveType(type: idl.IDLPrimitiveType): string;
34
34
  }
35
- export declare function removePoints(s: string): string;
36
35
  //# sourceMappingURL=CJConvertors.d.ts.map
@@ -15,6 +15,7 @@
15
15
  import * as idl from '../../idl';
16
16
  import { CJKeywords } from '../../languageSpecificKeywords';
17
17
  import { generateSyntheticIdlNodeName } from '../../peer-generation/idl/common';
18
+ import { removePoints } from '../../util';
18
19
  import { convertNode, convertType } from '../nameConvertor';
19
20
  import { InteropArgConvertor } from './InteropConvertors';
20
21
  export class CJTypeNameConvertor {
@@ -199,7 +200,4 @@ export class CJInteropArgConvertor extends InteropArgConvertor {
199
200
  return super.convertPrimitiveType(type);
200
201
  }
201
202
  }
202
- export function removePoints(s) {
203
- return s.split(/[\.\-]/g).join('_');
204
- }
205
203
  //# sourceMappingURL=CJConvertors.js.map
@@ -1,16 +1,16 @@
1
1
  import * as idl from '../../idl';
2
2
  import { IdlNameConvertor, NodeConvertor, TypeConvertor } from "../nameConvertor";
3
3
  import { InteropArgConvertor } from './InteropConvertors';
4
- import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
4
+ import { LibraryInterface } from '../../LibraryInterface';
5
5
  export interface ConvertResult {
6
6
  text: string;
7
7
  noPrefix: boolean;
8
8
  resolvedType: idl.IDLType;
9
9
  }
10
10
  export declare class GenericCppConvertor implements NodeConvertor<ConvertResult> {
11
- protected resolver: ReferenceResolver;
12
- constructor(resolver: ReferenceResolver);
13
- private make;
11
+ protected library: LibraryInterface;
12
+ constructor(library: LibraryInterface);
13
+ protected make(text: string, resolvedType: idl.IDLType, noPrefix?: boolean): ConvertResult;
14
14
  convertNode(node: idl.IDLNode): ConvertResult;
15
15
  convertNamespace(node: idl.IDLNamespace): ConvertResult;
16
16
  convertInterface(node: idl.IDLInterface): ConvertResult;
@@ -29,6 +29,8 @@ export declare class GenericCppConvertor implements NodeConvertor<ConvertResult>
29
29
  convertPrimitiveType(type: idl.IDLPrimitiveType): ConvertResult;
30
30
  private qualifiedName;
31
31
  private computeTargetTypeLiteralName;
32
+ protected isInsideStructure: boolean;
33
+ protected insideStructure<T>(cb: () => T): T;
32
34
  }
33
35
  export declare class CppConvertor extends GenericCppConvertor implements IdlNameConvertor {
34
36
  private unwrap;
@@ -36,9 +38,13 @@ export declare class CppConvertor extends GenericCppConvertor implements IdlName
36
38
  convert(node: idl.IDLNode): string;
37
39
  }
38
40
  export declare class CppNameConvertor implements IdlNameConvertor {
39
- protected resolver: ReferenceResolver;
41
+ protected library: LibraryInterface;
40
42
  private readonly cppConvertor;
41
- constructor(resolver: ReferenceResolver);
43
+ constructor(library: LibraryInterface);
44
+ convert(node: idl.IDLNode): string;
45
+ }
46
+ export declare class StructureNameConvertor extends CppConvertor {
47
+ constructor(library: LibraryInterface);
42
48
  convert(node: idl.IDLNode): string;
43
49
  }
44
50
  export declare class CppInteropArgConvertor extends InteropArgConvertor {
@@ -47,9 +53,9 @@ export declare class CppInteropArgConvertor extends InteropArgConvertor {
47
53
  convertPrimitiveType(type: idl.IDLPrimitiveType): string;
48
54
  }
49
55
  export declare class CppReturnTypeConvertor implements TypeConvertor<string> {
50
- private resolver;
56
+ private library;
51
57
  private convertor;
52
- constructor(resolver: ReferenceResolver);
58
+ constructor(library: LibraryInterface);
53
59
  isVoid(returnType: idl.IDLType): boolean;
54
60
  convert(type: idl.IDLType): string;
55
61
  convertContainer(type: idl.IDLContainerType): string;