@idlizer/core 2.1.9-arktscgen-5 → 2.1.9-arktscgen-8

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 (58) hide show
  1. package/build/lib/src/Language.d.ts +0 -1
  2. package/build/lib/src/Language.js +7 -8
  3. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +4 -15
  4. package/build/lib/src/LanguageWriters/ArgConvertors.js +103 -102
  5. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +8 -30
  6. package/build/lib/src/LanguageWriters/LanguageWriter.js +15 -67
  7. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +2 -2
  8. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +17 -1
  9. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +121 -6
  10. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +6 -0
  11. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +1 -2
  12. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +3 -19
  13. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +0 -5
  14. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +0 -9
  15. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +3 -5
  16. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +9 -22
  17. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +6 -9
  18. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +23 -66
  19. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +1 -7
  20. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +4 -14
  21. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +11 -8
  22. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +116 -27
  23. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +4 -5
  24. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +10 -26
  25. package/build/lib/src/config.d.ts +336 -1
  26. package/build/lib/src/config.js +11 -3
  27. package/build/lib/src/diagnosticmessages.d.ts +45 -0
  28. package/build/lib/src/diagnosticmessages.js +66 -0
  29. package/build/lib/src/diagnostictypes.d.ts +140 -0
  30. package/build/lib/src/diagnostictypes.js +72 -0
  31. package/build/lib/src/formatter.d.ts +3 -0
  32. package/build/lib/src/formatter.js +98 -0
  33. package/build/lib/src/from-idl/deserialize.d.ts +1 -0
  34. package/build/lib/src/from-idl/deserialize.js +107 -5
  35. package/build/lib/src/idl.d.ts +7 -0
  36. package/build/lib/src/idl.js +15 -3
  37. package/build/lib/src/index.d.ts +7 -1
  38. package/build/lib/src/index.js +7 -1
  39. package/build/lib/src/peer-generation/Materialized.d.ts +4 -20
  40. package/build/lib/src/peer-generation/Materialized.js +9 -62
  41. package/build/lib/src/peer-generation/PeerClass.d.ts +0 -2
  42. package/build/lib/src/peer-generation/PeerClass.js +4 -6
  43. package/build/lib/src/peer-generation/PeerLibrary.js +1 -5
  44. package/build/lib/src/peer-generation/PeerMethod.d.ts +25 -27
  45. package/build/lib/src/peer-generation/PeerMethod.js +83 -93
  46. package/build/lib/src/peer-generation/idl/common.js +1 -1
  47. package/build/lib/src/peer-generation/isMaterialized.js +0 -4
  48. package/build/lib/src/peer-generation/modules.d.ts +1 -0
  49. package/build/lib/src/peer-generation/modules.js +4 -0
  50. package/build/lib/src/peer-generation/unions.d.ts +0 -2
  51. package/build/lib/src/peer-generation/unions.js +3 -23
  52. package/build/lib/src/transformers/FqnTransformer.d.ts +4 -0
  53. package/build/lib/src/transformers/FqnTransformer.js +17 -0
  54. package/build/lib/src/transformers/GenericTransformer.d.ts +8 -0
  55. package/build/lib/src/transformers/GenericTransformer.js +141 -0
  56. package/build/lib/src/util.d.ts +4 -2
  57. package/build/lib/src/util.js +21 -12
  58. package/package.json +2 -2
@@ -72,6 +72,7 @@ export var IDLExtendedAttributes;
72
72
  IDLExtendedAttributes["NativeModule"] = "NativeModule";
73
73
  IDLExtendedAttributes["Optional"] = "Optional";
74
74
  IDLExtendedAttributes["OriginalEnumMemberName"] = "OriginalEnumMemberName";
75
+ IDLExtendedAttributes["OriginalGenericName"] = "OriginalGenericName";
75
76
  IDLExtendedAttributes["Predefined"] = "Predefined";
76
77
  IDLExtendedAttributes["Protected"] = "Protected";
77
78
  IDLExtendedAttributes["Synthetic"] = "Synthetic";
@@ -183,11 +184,11 @@ export function forEachChild(node, cbEnter, cbLeave) {
183
184
  cleanup === null || cleanup === void 0 ? void 0 : cleanup();
184
185
  }
185
186
  /** Updates tree in place! */
186
- function updateEachChild(node, op, cbLeave) {
187
+ export function updateEachChild(node, op, cbLeave) {
187
188
  var _a;
188
189
  const old = node;
189
190
  node = op(old);
190
- if (node.kind !== old.kind) {
191
+ if (node.kind !== old.kind && !(isType(old) && isType(node))) {
191
192
  throw new Error("Kinds must be the same!");
192
193
  }
193
194
  switch (node.kind) {
@@ -640,7 +641,18 @@ export function createConstant(name, type, value, nodeInitializer = {}) {
640
641
  }
641
642
  export function clone(node) {
642
643
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
643
- const make = (node) => node;
644
+ const make = (newnode) => {
645
+ if (node.nodeLocation) {
646
+ newnode.nodeLocation = node.nodeLocation;
647
+ }
648
+ if (node.nameLocation) {
649
+ newnode.nameLocation = node.nameLocation;
650
+ }
651
+ if (node.valueLocation) {
652
+ newnode.valueLocation = node.valueLocation;
653
+ }
654
+ return newnode;
655
+ };
644
656
  const get = (node) => node;
645
657
  switch (node.kind) {
646
658
  case IDLKind.Interface: {
@@ -12,6 +12,9 @@ export * from "./util";
12
12
  export * from "./rand_utils";
13
13
  export * from "./IndentedPrinter";
14
14
  export * from "./LibraryInterface";
15
+ export * from "./diagnostictypes";
16
+ export * from "./diagnosticmessages";
17
+ export * from "./formatter";
15
18
  export * from "./LanguageWriters/LanguageWriter";
16
19
  export * from "./LanguageWriters/ArgConvertors";
17
20
  export * from "./LanguageWriters/common";
@@ -22,12 +25,14 @@ export * from "./LanguageWriters/convertors/ETSConvertors";
22
25
  export * from "./LanguageWriters/convertors/JavaConvertors";
23
26
  export * from "./LanguageWriters/convertors/CJConvertors";
24
27
  export * from "./LanguageWriters/convertors/InteropConvertors";
28
+ export * from "./LanguageWriters/convertors/KotlinConvertors";
25
29
  export * from "./LanguageWriters/writers/CJLanguageWriter";
26
30
  export * from "./LanguageWriters/writers/CLikeLanguageWriter";
27
31
  export * from "./LanguageWriters/writers/CppLanguageWriter";
28
32
  export * from "./LanguageWriters/writers/JavaLanguageWriter";
29
33
  export * from "./LanguageWriters/writers/TsLanguageWriter";
30
34
  export * from "./LanguageWriters/writers/ETSLanguageWriter";
35
+ export * from "./LanguageWriters/writers/KotlinLanguageWriter";
31
36
  export * from "./LanguageWriters/nameConvertor";
32
37
  export * from "./peer-generation/idl/IdlNameConvertor";
33
38
  export * from "./peer-generation/LayoutManager";
@@ -40,11 +45,12 @@ export * from "./peer-generation/BuilderClass";
40
45
  export * from "./peer-generation/Materialized";
41
46
  export * from "./peer-generation/modules";
42
47
  export * from "./peer-generation/isMaterialized";
43
- export * from "./peer-generation/isExternalType";
44
48
  export * from "./peer-generation/isStructureType";
45
49
  export * from "./peer-generation/isEnumType";
46
50
  export * from "./peer-generation/unions";
47
51
  export * from "./peer-generation/getSuperType";
52
+ export * from "./transformers/FqnTransformer";
53
+ export * from "./transformers/GenericTransformer";
48
54
  export * from "./LanguageWriters";
49
55
  export * from "./peer-generation/ReferenceResolver";
50
56
  export * from "./peer-generation/idl/common";
@@ -26,6 +26,9 @@ export * from "./util";
26
26
  export * from "./rand_utils";
27
27
  export * from "./IndentedPrinter";
28
28
  export * from "./LibraryInterface";
29
+ export * from "./diagnostictypes";
30
+ export * from "./diagnosticmessages";
31
+ export * from "./formatter";
29
32
  export * from "./LanguageWriters/LanguageWriter";
30
33
  export * from "./LanguageWriters/ArgConvertors";
31
34
  export * from "./LanguageWriters/common";
@@ -36,12 +39,14 @@ export * from "./LanguageWriters/convertors/ETSConvertors";
36
39
  export * from "./LanguageWriters/convertors/JavaConvertors";
37
40
  export * from "./LanguageWriters/convertors/CJConvertors";
38
41
  export * from "./LanguageWriters/convertors/InteropConvertors";
42
+ export * from "./LanguageWriters/convertors/KotlinConvertors";
39
43
  export * from "./LanguageWriters/writers/CJLanguageWriter";
40
44
  export * from "./LanguageWriters/writers/CLikeLanguageWriter";
41
45
  export * from "./LanguageWriters/writers/CppLanguageWriter";
42
46
  export * from "./LanguageWriters/writers/JavaLanguageWriter";
43
47
  export * from "./LanguageWriters/writers/TsLanguageWriter";
44
48
  export * from "./LanguageWriters/writers/ETSLanguageWriter";
49
+ export * from "./LanguageWriters/writers/KotlinLanguageWriter";
45
50
  export * from "./LanguageWriters/nameConvertor";
46
51
  export * from "./peer-generation/idl/IdlNameConvertor";
47
52
  export * from "./peer-generation/LayoutManager";
@@ -54,11 +59,12 @@ export * from "./peer-generation/BuilderClass";
54
59
  export * from "./peer-generation/Materialized";
55
60
  export * from "./peer-generation/modules";
56
61
  export * from "./peer-generation/isMaterialized";
57
- export * from "./peer-generation/isExternalType";
58
62
  export * from "./peer-generation/isStructureType";
59
63
  export * from "./peer-generation/isEnumType";
60
64
  export * from "./peer-generation/unions";
61
65
  export * from "./peer-generation/getSuperType";
66
+ export * from "./transformers/FqnTransformer";
67
+ export * from "./transformers/GenericTransformer";
62
68
  export * from "./LanguageWriters";
63
69
  export * from "./peer-generation/ReferenceResolver";
64
70
  export * from "./peer-generation/idl/common";
@@ -1,9 +1,9 @@
1
1
  import * as idl from '../idl';
2
+ import { Language } from '../Language';
2
3
  import { ArgConvertor } from '../LanguageWriters/ArgConvertors';
3
4
  import { Field, Method } from '../LanguageWriters/LanguageWriter';
4
5
  import { PeerClassBase } from './PeerClass';
5
- import { PeerMethod } from './PeerMethod';
6
- import { ReferenceResolver } from './ReferenceResolver';
6
+ import { PeerMethod, PeerMethodSignature } from './PeerMethod';
7
7
  export declare class MaterializedField {
8
8
  field: Field;
9
9
  argConvertor: ArgConvertor;
@@ -14,25 +14,10 @@ export declare class MaterializedField {
14
14
  }
15
15
  export declare class MaterializedMethod extends PeerMethod {
16
16
  implementationParentName: string;
17
- outArgConvertor?: ArgConvertor | undefined;
18
- constructor(originalParentName: string, implementationParentName: string, argConvertors: ArgConvertor[], returnType: idl.IDLType, isCallSignature: boolean, method: Method, outArgConvertor?: ArgConvertor | undefined);
19
- get peerMethodName(): string;
20
- get implNamespaceName(): string;
21
- get toStringName(): string;
22
- dummyReturnValue(resolver: ReferenceResolver): string | undefined;
23
- get receiverType(): string;
24
- get apiCall(): string;
25
- get apiKind(): string;
26
- generateReceiver(): {
27
- argName: string;
28
- argType: string;
29
- } | undefined;
30
- getImplementationName(): string;
17
+ constructor(sig: PeerMethodSignature, originalParentName: string, implementationParentName: string, returnType: idl.IDLType, isCallSignature: boolean, method: Method);
31
18
  tsReturnType(): idl.IDLType | undefined;
32
19
  getPrivateMethod(): MaterializedMethod;
33
20
  withReturnType(returnType: idl.IDLType): MaterializedMethod;
34
- setOverloadIndex(index: number): void;
35
- getOverloadPostfix(): string;
36
21
  }
37
22
  export declare function copyMaterializedMethod(method: MaterializedMethod, overrides: {
38
23
  method?: Method;
@@ -54,7 +39,6 @@ export declare class MaterializedClass implements PeerClassBase {
54
39
  constructor(decl: idl.IDLInterface, className: string, isInterface: boolean, isStaticMaterialized: boolean, superClass: idl.IDLReferenceType | undefined, interfaces: idl.IDLReferenceType[] | undefined, generics: string[] | undefined, fields: MaterializedField[], ctors: MaterializedMethod[], // zero size when used for global functions
55
40
  finalizer: MaterializedMethod | undefined, // undefined when used for global functions
56
41
  methods: MaterializedMethod[], needBeGenerated?: boolean, taggedMethods?: idl.IDLMethod[]);
57
- getComponentName(): string;
58
42
  getImplementationName(): string;
59
43
  generatedName(isCallSignature: boolean): string;
60
44
  private _isGlobal;
@@ -63,6 +47,6 @@ export declare class MaterializedClass implements PeerClassBase {
63
47
  }
64
48
  export declare function createDestroyPeerMethod(clazz: MaterializedClass): MaterializedMethod | undefined;
65
49
  export declare function getInternalClassName(name: string): string;
66
- export declare function getInternalClassQualifiedName(target: idl.IDLEntry, pattern?: idl.QNPattern): string;
50
+ export declare function getInternalClassQualifiedName(target: idl.IDLEntry, pattern?: idl.QNPattern, language?: Language): string;
67
51
  export declare function getMaterializedFileName(name: string): string;
68
52
  //# sourceMappingURL=Materialized.d.ts.map
@@ -16,7 +16,7 @@ import * as idl from '../idl';
16
16
  import { copyMethod, Method, MethodModifier, NamedMethodSignature } from '../LanguageWriters/LanguageWriter';
17
17
  import { capitalize } from '../util';
18
18
  import { qualifiedName } from './idl/common';
19
- import { PeerMethod } from './PeerMethod';
19
+ import { PeerMethod, PeerMethodSignature } from './PeerMethod';
20
20
  export class MaterializedField {
21
21
  constructor(field, argConvertor, outArgConvertor, isNullableOriginalTypeField, extraMethodName = undefined) {
22
22
  this.field = field;
@@ -27,50 +27,9 @@ export class MaterializedField {
27
27
  }
28
28
  }
29
29
  export class MaterializedMethod extends PeerMethod {
30
- constructor(originalParentName, implementationParentName, argConvertors, returnType, isCallSignature, method, outArgConvertor) {
31
- super(originalParentName, argConvertors, returnType, isCallSignature, method, outArgConvertor);
30
+ constructor(sig, originalParentName, implementationParentName, returnType, isCallSignature, method) {
31
+ super(sig, originalParentName, returnType, isCallSignature, method);
32
32
  this.implementationParentName = implementationParentName;
33
- this.outArgConvertor = outArgConvertor;
34
- }
35
- get peerMethodName() {
36
- return this.overloadedName;
37
- }
38
- get implNamespaceName() {
39
- return `${capitalize(this.originalParentName)}Accessor`;
40
- }
41
- get toStringName() {
42
- switch (this.method.name) {
43
- case "ctor": return `new ${this.originalParentName}`;
44
- case "destructor": return `delete ${this.originalParentName}`;
45
- default: return super.toStringName;
46
- }
47
- }
48
- dummyReturnValue(resolver) {
49
- if (this.method.name === "ctor")
50
- return `(Ark_${this.originalParentName}) 100`;
51
- if (this.method.name === "getFinalizer")
52
- return `fnPtr<KNativePointer>(dummyClassFinalizer)`;
53
- return undefined;
54
- }
55
- get receiverType() {
56
- return `Ark_${this.originalParentName}`;
57
- }
58
- get apiCall() {
59
- return "GetAccessors()";
60
- }
61
- get apiKind() {
62
- return "Accessor";
63
- }
64
- generateReceiver() {
65
- if (!this.hasReceiver())
66
- return undefined;
67
- return {
68
- argName: 'peer',
69
- argType: `Ark_${this.originalParentName}`
70
- };
71
- }
72
- getImplementationName() {
73
- return this.implementationParentName;
74
33
  }
75
34
  tsReturnType() {
76
35
  return this.method.signature.returnType;
@@ -83,6 +42,7 @@ export class MaterializedMethod extends PeerMethod {
83
42
  method: copyMethod(this.method, {
84
43
  modifiers: ((_b = this.method.modifiers) !== null && _b !== void 0 ? _b : [])
85
44
  .filter(it => it !== MethodModifier.PUBLIC)
45
+ .filter(it => it !== MethodModifier.OVERRIDE)
86
46
  .concat([MethodModifier.PRIVATE])
87
47
  })
88
48
  });
@@ -96,19 +56,10 @@ export class MaterializedMethod extends PeerMethod {
96
56
  const method = copyMethod(this.method, { signature: signature });
97
57
  return copyMaterializedMethod(this, { method: method });
98
58
  }
99
- setOverloadIndex(index) {
100
- this.overloadIndex = index;
101
- }
102
- getOverloadPostfix() {
103
- var _a;
104
- return `${(_a = this.overloadIndex) !== null && _a !== void 0 ? _a : ""}`;
105
- }
106
59
  }
107
60
  export function copyMaterializedMethod(method, overrides) {
108
61
  var _a;
109
- const copied = new MaterializedMethod(method.originalParentName, method.implementationParentName, method.argConvertors, method.returnType, method.isCallSignature, (_a = overrides.method) !== null && _a !== void 0 ? _a : method.method, method.outArgConvertor);
110
- copied.setSameOverloadIndex(method);
111
- return copied;
62
+ return new MaterializedMethod(method.sig, method.originalParentName, method.implementationParentName, method.returnType, method.isCallSignature, (_a = overrides.method) !== null && _a !== void 0 ? _a : method.method);
112
63
  }
113
64
  export class MaterializedClass {
114
65
  constructor(decl, className, isInterface, isStaticMaterialized, superClass, interfaces, generics, fields, ctors, // zero size when used for global functions
@@ -128,16 +79,12 @@ export class MaterializedClass {
128
79
  this.needBeGenerated = needBeGenerated;
129
80
  this.taggedMethods = taggedMethods;
130
81
  this._isGlobal = false;
131
- PeerMethod.markAndGroupOverloads(methods);
132
- }
133
- getComponentName() {
134
- return this.className;
135
82
  }
136
83
  getImplementationName() {
137
84
  return this.isInterface ? getInternalClassName(this.className) : this.className;
138
85
  }
139
86
  generatedName(isCallSignature) {
140
- return this.className;
87
+ return this.getImplementationName();
141
88
  }
142
89
  setGlobalScope() {
143
90
  this._isGlobal = true;
@@ -150,13 +97,13 @@ export function createDestroyPeerMethod(clazz) {
150
97
  if (clazz.isGlobalScope() || clazz.isStaticMaterialized) {
151
98
  return undefined;
152
99
  }
153
- return new MaterializedMethod(idl.getQualifiedName(clazz.decl, "namespace.name").split('.').join('_'), clazz.getImplementationName(), [], idl.IDLVoidType, false, new Method('destroyPeer', new NamedMethodSignature(idl.IDLVoidType, [idl.createReferenceType(clazz.decl)], ['peer'])));
100
+ return new MaterializedMethod(new PeerMethodSignature(PeerMethodSignature.DESTROY, '%NEVER_USED$', [], idl.IDLVoidType, clazz.decl), idl.getQualifiedName(clazz.decl, "namespace.name").split('.').join('_'), clazz.getImplementationName(), idl.IDLVoidType, false, new Method('destroyPeer', new NamedMethodSignature(idl.IDLVoidType, [idl.createReferenceType(clazz.decl)], ['peer'])));
154
101
  }
155
102
  export function getInternalClassName(name) {
156
103
  return `${name}Internal`;
157
104
  }
158
- export function getInternalClassQualifiedName(target, pattern = "package.namespace.name") {
159
- return getInternalClassName(qualifiedName(target, ".", pattern));
105
+ export function getInternalClassQualifiedName(target, pattern = "package.namespace.name", language) {
106
+ return getInternalClassName(qualifiedName(target, language !== null && language !== void 0 ? language : ".", pattern));
160
107
  }
161
108
  export function getMaterializedFileName(name) {
162
109
  const pascalCase = name.split('_').map(x => capitalize(x)).join('');
@@ -2,7 +2,6 @@ import { IDLFile, IDLProperty } from "../idl";
2
2
  import { PeerMethod } from "./PeerMethod";
3
3
  export interface PeerClassBase {
4
4
  generatedName(isCallSignature: boolean): string;
5
- getComponentName(): string;
6
5
  }
7
6
  export declare class PeerClass implements PeerClassBase {
8
7
  readonly file: IDLFile;
@@ -10,7 +9,6 @@ export declare class PeerClass implements PeerClassBase {
10
9
  readonly originalFilename: string;
11
10
  constructor(file: IDLFile, componentName: string, originalFilename: string);
12
11
  generatedName(isCallSignature: boolean): string;
13
- getComponentName(): string;
14
12
  methods: PeerMethod[];
15
13
  originalClassName: string | undefined;
16
14
  originalInterfaceName: string | undefined;
@@ -13,8 +13,7 @@
13
13
  * limitations under the License.
14
14
  */
15
15
  import { IDLI32Type, IDLPointerType } from "../idl";
16
- import { NumericConvertor } from "../LanguageWriters/ArgConvertors";
17
- import { PeerMethod } from "./PeerMethod";
16
+ import { PeerMethod, PeerMethodArg, PeerMethodSignature } from "./PeerMethod";
18
17
  import { Method, MethodModifier, NamedMethodSignature } from "../LanguageWriters/LanguageWriter";
19
18
  export class PeerClass {
20
19
  constructor(file, componentName, originalFilename) {
@@ -33,11 +32,10 @@ export class PeerClass {
33
32
  generatedName(isCallSignature) {
34
33
  return isCallSignature ? this.originalInterfaceName : this.originalClassName;
35
34
  }
36
- getComponentName() {
37
- return this.componentName;
38
- }
39
35
  }
40
36
  export function createConstructPeerMethod(clazz) {
41
- return new PeerMethod(clazz.componentName, [new NumericConvertor('id', IDLI32Type), new NumericConvertor('flags', IDLI32Type)], IDLPointerType, false, new Method('construct', new NamedMethodSignature(IDLPointerType, [IDLI32Type, IDLI32Type], ['id', 'flags']), [MethodModifier.STATIC]));
37
+ // TODO here is class FQName needed, but can not calculate if from current PeerClass data
38
+ const classFQN = [clazz.componentName];
39
+ return new PeerMethod(new PeerMethodSignature(PeerMethodSignature.CTOR, classFQN.concat(PeerMethodSignature.CTOR).join('_'), [new PeerMethodArg('id', IDLI32Type), new PeerMethodArg('flags', IDLI32Type)], IDLPointerType), clazz.componentName, IDLPointerType, false, new Method('construct', new NamedMethodSignature(IDLPointerType, [IDLI32Type, IDLI32Type], ['id', 'flags']), [MethodModifier.STATIC]));
42
40
  }
43
41
  //# sourceMappingURL=PeerClass.js.map
@@ -17,7 +17,7 @@ import * as idl from '../idl';
17
17
  import { resolveNamedNode } from '../resolveNamedNode';
18
18
  import { Language } from '../Language';
19
19
  import { createLanguageWriter } from '../LanguageWriters';
20
- import { BufferConvertor, CallbackConvertor, DateConvertor, MapConvertor, PointerConvertor, TupleConvertor, TypeAliasConvertor, AggregateConvertor, StringConvertor, ClassConvertor, ArrayConvertor, FunctionConvertor, OptionConvertor, NumberConvertor, NumericConvertor, CustomTypeConvertor, UnionConvertor, MaterializedClassConvertor, BooleanConvertor, EnumConvertor, UndefinedConvertor, VoidConvertor, ImportTypeConvertor, InterfaceConvertor, BigIntToU64Convertor, ObjectConvertor, ExternalTypeConvertor, } from "../LanguageWriters/ArgConvertors";
20
+ import { BufferConvertor, CallbackConvertor, DateConvertor, MapConvertor, PointerConvertor, TupleConvertor, TypeAliasConvertor, AggregateConvertor, StringConvertor, ClassConvertor, ArrayConvertor, FunctionConvertor, OptionConvertor, NumberConvertor, NumericConvertor, CustomTypeConvertor, UnionConvertor, MaterializedClassConvertor, BooleanConvertor, EnumConvertor, UndefinedConvertor, VoidConvertor, ImportTypeConvertor, InterfaceConvertor, BigIntToU64Convertor, ObjectConvertor, } from "../LanguageWriters/ArgConvertors";
21
21
  import { CppNameConvertor } from '../LanguageWriters/convertors/CppConvertors';
22
22
  import { CJTypeNameConvertor } from '../LanguageWriters/convertors/CJConvertors';
23
23
  import { CppConvertor } from '../LanguageWriters/convertors/CppConvertors';
@@ -32,7 +32,6 @@ import { isMaterialized } from './isMaterialized';
32
32
  import { isInIdlizeInternal } from '../idlize';
33
33
  import { isInCurrentModule } from './modules';
34
34
  import { generatorConfiguration } from '../config';
35
- import { isExternalType } from './isExternalType';
36
35
  import { KotlinTypeNameConvertor } from '../LanguageWriters/convertors/KotlinConvertors';
37
36
  export const lenses = {
38
37
  globals: lib.lens(lib.select.files())
@@ -392,9 +391,6 @@ export class PeerLibrary {
392
391
  return new TypeAliasConvertor(this, param, declaration);
393
392
  }
394
393
  if (idl.isInterface(declaration)) {
395
- if (isExternalType(declaration, this)) {
396
- return new ExternalTypeConvertor(this, param, declaration);
397
- }
398
394
  if (isMaterialized(declaration, this)) {
399
395
  return new MaterializedClassConvertor(this, param, declaration);
400
396
  }
@@ -1,36 +1,34 @@
1
+ import * as idl from '../idl';
1
2
  import { IDLType } from "../idl";
2
- import { IdlNameConvertor } from "../LanguageWriters";
3
3
  import { ArgConvertor } from "../LanguageWriters/ArgConvertors";
4
- import { Method } from "../LanguageWriters/LanguageWriter";
5
- import { ReferenceResolver } from "./ReferenceResolver";
4
+ import { Method, MethodModifier } from "../LanguageWriters/LanguageWriter";
5
+ import { PeerLibrary } from './PeerLibrary';
6
+ export declare class PeerMethodArg {
7
+ readonly name: string;
8
+ readonly type: idl.IDLType;
9
+ constructor(name: string, type: idl.IDLType);
10
+ }
11
+ export declare class PeerMethodSignature {
12
+ readonly name: string;
13
+ readonly fqname: string;
14
+ readonly args: PeerMethodArg[];
15
+ readonly returnType: idl.IDLType;
16
+ readonly context: idl.IDLEntry | undefined;
17
+ readonly modifiers: (MethodModifier.FORCE_CONTEXT | MethodModifier.THROWS)[];
18
+ constructor(name: string, fqname: string, args: PeerMethodArg[], returnType: idl.IDLType, context?: idl.IDLEntry | undefined, modifiers?: (MethodModifier.FORCE_CONTEXT | MethodModifier.THROWS)[]);
19
+ static generateOverloadPostfix(decl: idl.IDLConstructor | idl.IDLMethod | idl.IDLCallable | idl.IDLProperty): string;
20
+ static get CTOR(): string;
21
+ static get GET_FINALIZER(): string;
22
+ static get DESTROY(): string;
23
+ }
6
24
  export declare class PeerMethod {
25
+ sig: PeerMethodSignature;
7
26
  originalParentName: string;
8
- argConvertors: ArgConvertor[];
9
27
  returnType: IDLType;
10
28
  isCallSignature: boolean;
11
29
  method: Method;
12
- outArgConvertor?: ArgConvertor | undefined;
13
- protected overloadIndex?: number;
14
- constructor(originalParentName: string, argConvertors: ArgConvertor[], returnType: IDLType, isCallSignature: boolean, method: Method, outArgConvertor?: ArgConvertor | undefined);
15
- get overloadedName(): string;
16
- get fullMethodName(): string;
17
- get peerMethodName(): string;
18
- get implNamespaceName(): string;
19
- get implName(): string;
20
- get toStringName(): string;
21
- dummyReturnValue(resolver: ReferenceResolver): string | undefined;
22
- get receiverType(): string;
23
- get apiCall(): string;
24
- get apiKind(): string;
25
- get argAndOutConvertors(): ArgConvertor[];
26
- hasReceiver(): boolean;
27
- generateAPIParameters(converter: IdlNameConvertor): string[];
28
- generateReceiver(): {
29
- argName: string;
30
- argType: string;
31
- } | undefined;
32
- getImplementationName(): string;
33
- static markAndGroupOverloads(methods: PeerMethod[]): PeerMethod[];
34
- setSameOverloadIndex(copyFrom: PeerMethod): void;
30
+ constructor(sig: PeerMethodSignature, originalParentName: string, returnType: IDLType, isCallSignature: boolean, method: Method);
31
+ argConvertors(library: PeerLibrary): ArgConvertor[];
32
+ argAndOutConvertors(library: PeerLibrary): ArgConvertor[];
35
33
  }
36
34
  //# sourceMappingURL=PeerMethod.d.ts.map
@@ -1,101 +1,91 @@
1
- import { generatorTypePrefix } from "../config";
2
- import { asPromise } from "../idl";
3
- import { isVMContextMethod } from "../LanguageWriters/ArgConvertors";
4
- import { mangleMethodName, MethodModifier } from "../LanguageWriters/LanguageWriter";
5
- import { capitalize, isDefined } from "../util";
6
- import { PrimitiveTypesInstance } from "./PrimitiveType";
1
+ /*
2
+ * Copyright (c) 2024 Huawei Device Co., Ltd.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ */
15
+ import * as idl from '../idl';
16
+ import { createOutArgConvertor } from "../LanguageWriters/ArgConvertors";
17
+ import { MethodModifier } from "../LanguageWriters/LanguageWriter";
18
+ export class PeerMethodArg {
19
+ constructor(name, type) {
20
+ this.name = name;
21
+ this.type = type;
22
+ }
23
+ }
24
+ export class PeerMethodSignature {
25
+ constructor(
26
+ // contextual name of method
27
+ name,
28
+ // unique name of method (used in global scopes like interop)
29
+ fqname, args, returnType, context = undefined,
30
+ // only modifiers affecting signature. Private, public, static and others - does not belong here
31
+ modifiers = []) {
32
+ this.name = name;
33
+ this.fqname = fqname;
34
+ this.args = args;
35
+ this.returnType = returnType;
36
+ this.context = context;
37
+ this.modifiers = modifiers;
38
+ }
39
+ static generateOverloadPostfix(decl) {
40
+ if (!decl.parent)
41
+ return ``;
42
+ let sameNamed = [];
43
+ if (idl.isMethod(decl) || idl.isProperty(decl)) {
44
+ let members = [];
45
+ if (idl.isInterface(decl.parent))
46
+ members = [...decl.parent.properties, ...decl.parent.methods];
47
+ else if (idl.isNamespace(decl.parent))
48
+ members = decl.parent.members;
49
+ else if (idl.isFile(decl.parent))
50
+ members = decl.parent.entries.filter(idl.isMethod);
51
+ sameNamed = members.filter(it => it.name === decl.name);
52
+ }
53
+ else if (idl.isConstructor(decl) && idl.isInterface(decl.parent)) {
54
+ sameNamed = decl.parent.constructors;
55
+ }
56
+ else if (idl.isCallable(decl) && idl.isInterface(decl.parent)) {
57
+ sameNamed = decl.parent.callables;
58
+ }
59
+ else {
60
+ throw new Error("unexpected type of declaration");
61
+ }
62
+ return sameNamed.length > 1 ? sameNamed.indexOf(decl).toString() : '';
63
+ }
64
+ static get CTOR() { return "construct"; }
65
+ static get GET_FINALIZER() { return "getFinalizer"; }
66
+ static get DESTROY() { return "destroyPeer"; }
67
+ }
7
68
  export class PeerMethod {
8
- constructor(originalParentName, argConvertors, returnType, isCallSignature, method, outArgConvertor) {
69
+ constructor(sig, originalParentName, returnType, isCallSignature, method) {
70
+ var _a, _b;
71
+ this.sig = sig;
9
72
  this.originalParentName = originalParentName;
10
- this.argConvertors = argConvertors;
11
73
  this.returnType = returnType;
12
74
  this.isCallSignature = isCallSignature;
13
75
  this.method = method;
14
- this.outArgConvertor = outArgConvertor;
15
- }
16
- get overloadedName() {
17
- return mangleMethodName(this.method, this.overloadIndex);
18
- }
19
- get fullMethodName() {
20
- return this.isCallSignature ? this.overloadedName : this.peerMethodName;
21
- }
22
- get peerMethodName() {
23
- const name = this.overloadedName;
24
- if (!this.hasReceiver())
25
- return name;
26
- if (name.startsWith("set") ||
27
- name.startsWith("get"))
28
- return name;
29
- return `set${capitalize(name)}`;
30
- }
31
- get implNamespaceName() {
32
- return `${capitalize(this.originalParentName)}Modifier`;
33
- }
34
- get implName() {
35
- return `${capitalize(this.overloadedName)}Impl`;
36
- }
37
- get toStringName() {
38
- return this.method.name;
39
- }
40
- dummyReturnValue(resolver) {
41
- return undefined;
42
- }
43
- get receiverType() {
44
- return "Ark_NodeHandle";
45
- }
46
- get apiCall() {
47
- return "GetNodeModifiers()";
48
- }
49
- get apiKind() {
50
- return "Modifier";
51
- }
52
- get argAndOutConvertors() {
53
- var _a;
54
- return this.argConvertors.concat((_a = this.outArgConvertor) !== null && _a !== void 0 ? _a : []);
55
- }
56
- hasReceiver() {
57
- var _a;
58
- return !((_a = this.method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.STATIC));
59
- }
60
- generateAPIParameters(converter) {
61
- const args = this.argAndOutConvertors.map(it => {
62
- let isPointer = it.isPointerType();
63
- return `${isPointer ? "const " : ""}${converter.convert(it.nativeType())}${isPointer ? "*" : ""} ${it.param}`;
64
- });
65
- const receiver = this.generateReceiver();
66
- if (receiver)
67
- args.unshift(`${receiver.argType} ${receiver.argName}`);
68
- if (!!asPromise(this.method.signature.returnType))
69
- args.unshift(`${generatorTypePrefix()}AsyncWorkerPtr asyncWorker`);
70
- if (isVMContextMethod(this.method))
71
- args.unshift(`${generatorTypePrefix()}VMContext vmContext`);
72
- return args;
73
- }
74
- generateReceiver() {
75
- if (!this.hasReceiver())
76
- return undefined;
77
- return {
78
- argName: "node",
79
- argType: PrimitiveTypesInstance.NativePointer.getText()
80
- };
81
- }
82
- getImplementationName() {
83
- return this.originalParentName;
84
- }
85
- static markAndGroupOverloads(methods) {
86
- let groupedMethods = [];
87
- for (const peerMethod of methods) {
88
- if (isDefined(peerMethod.overloadIndex))
89
- continue;
90
- const sameNamedMethods = methods.filter(it => it.method.name === peerMethod.method.name);
91
- if (sameNamedMethods.length > 1)
92
- sameNamedMethods.forEach((it, index) => it.overloadIndex = index);
93
- groupedMethods = groupedMethods.concat(sameNamedMethods);
94
- }
95
- return groupedMethods;
96
- }
97
- setSameOverloadIndex(copyFrom) {
98
- this.overloadIndex = copyFrom.overloadIndex;
76
+ // todo remove me
77
+ if ((_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.FORCE_CONTEXT))
78
+ sig.modifiers.push(MethodModifier.FORCE_CONTEXT);
79
+ if ((_b = method.modifiers) === null || _b === void 0 ? void 0 : _b.includes(MethodModifier.THROWS))
80
+ sig.modifiers.push(MethodModifier.THROWS);
81
+ }
82
+ argConvertors(library) {
83
+ return this.sig.args.map(it => library.typeConvertor(it.name, it.type, false));
84
+ }
85
+ argAndOutConvertors(library) {
86
+ const convertors = this.argConvertors(library);
87
+ const outArgConvertor = createOutArgConvertor(library, this.sig.returnType, this.sig.args.map(it => it.name));
88
+ return outArgConvertor ? convertors.concat(outArgConvertor) : convertors;
99
89
  }
100
90
  }
101
91
  //# sourceMappingURL=PeerMethod.js.map
@@ -38,7 +38,7 @@ export function qualifiedName(decl, languageOrDelimiter, pattern) {
38
38
  throw new Error("internal error, name required for no-named node");
39
39
  const delimiter = typeof languageOrDelimiter === "string"
40
40
  ? languageOrDelimiter
41
- : (languageOrDelimiter === Language.CPP ? '_' : '.');
41
+ : ([Language.CPP, Language.CJ, Language.KOTLIN].includes(languageOrDelimiter) ? '_' : '.');
42
42
  if (!idl.isEntry(decl))
43
43
  throw new Error(`Expected to have an IDLEntry, got ${idl.IDLKind[decl.kind]}`);
44
44
  return idl.getQualifiedName(decl, pattern).split(".").join(delimiter);
@@ -15,7 +15,6 @@
15
15
  import { generatorConfiguration } from '../config';
16
16
  import * as idl from '../idl';
17
17
  import { isBuilderClass } from './BuilderClass';
18
- import { isExternalType } from './isExternalType';
19
18
  import { getSuper } from './getSuperType';
20
19
  export function isMaterialized(declaration, resolver) {
21
20
  var _a;
@@ -45,9 +44,6 @@ export function isMaterialized(declaration, resolver) {
45
44
  if (generatorConfiguration().ignoreMaterialized.includes(declaration.name)) {
46
45
  return false;
47
46
  }
48
- if (isExternalType(declaration, resolver)) {
49
- return false;
50
- }
51
47
  // A materialized class is a class or an interface with methods
52
48
  // excluding components and related classes
53
49
  if (declaration.methods.length > 0 || declaration.constructors.length > 0)
@@ -2,6 +2,7 @@ import { ModuleConfiguration } from "../config";
2
2
  import * as idl from "../idl";
3
3
  export declare function isInModule(node: idl.IDLNode, module: ModuleConfiguration): boolean;
4
4
  export declare function isInModule(packageName: string, module: ModuleConfiguration): boolean;
5
+ export declare function isInExternalModule(node: idl.IDLNode): boolean;
5
6
  export declare function getModuleFor(node: idl.IDLNode): ModuleConfiguration;
6
7
  export declare function getModuleFor(packageName: string): ModuleConfiguration;
7
8
  export declare function currentModule(): ModuleConfiguration;