@idlizer/core 2.0.15 → 2.0.19

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 (57) hide show
  1. package/build/lib/src/LanguageWriters/ArgConvertors.js +17 -5
  2. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +1 -0
  3. package/build/lib/src/LanguageWriters/LanguageWriter.js +10 -4
  4. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +30 -0
  5. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +154 -0
  6. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +5 -3
  7. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +13 -0
  8. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +118 -0
  9. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +32 -0
  10. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +175 -0
  11. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +27 -0
  12. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +173 -0
  13. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +1 -1
  14. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +1 -1
  15. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +5 -1
  16. package/build/lib/src/LibraryInterface.d.ts +2 -0
  17. package/build/lib/src/config.js +14 -0
  18. package/build/lib/src/configMerge.d.ts +2 -0
  19. package/build/lib/src/configMerge.js +42 -0
  20. package/build/lib/src/from-idl/common.d.ts +1 -1
  21. package/build/lib/src/from-idl/common.js +20 -11
  22. package/build/lib/src/idl.d.ts +6 -3
  23. package/build/lib/src/idl.js +15 -11
  24. package/build/lib/src/idlize.d.ts +1 -1
  25. package/build/lib/src/idlize.js +57 -13
  26. package/build/lib/src/index.d.ts +12 -0
  27. package/build/lib/src/index.js +12 -0
  28. package/build/lib/src/languageSpecificKeywords.js +1 -1
  29. package/build/lib/src/options.d.ts +1 -0
  30. package/build/lib/src/peer-generation/BuilderClass.d.ts +22 -0
  31. package/build/lib/src/peer-generation/BuilderClass.js +76 -0
  32. package/build/lib/src/peer-generation/LanguageWriters/index.d.ts +2 -0
  33. package/build/lib/src/peer-generation/LanguageWriters/index.js +2 -0
  34. package/build/lib/src/peer-generation/LanguageWriters/nameConvertor.d.ts +25 -0
  35. package/build/lib/src/peer-generation/LanguageWriters/nameConvertor.js +55 -0
  36. package/build/lib/src/peer-generation/LayoutManager.d.ts +15 -0
  37. package/build/lib/src/peer-generation/LayoutManager.js +32 -0
  38. package/build/lib/src/peer-generation/Materialized.d.ts +60 -0
  39. package/build/lib/src/peer-generation/Materialized.js +178 -0
  40. package/build/lib/src/peer-generation/PeerClass.d.ts +29 -0
  41. package/build/lib/src/peer-generation/PeerClass.js +44 -0
  42. package/build/lib/src/peer-generation/PeerFile.d.ts +13 -0
  43. package/build/lib/src/peer-generation/PeerFile.js +38 -0
  44. package/build/lib/src/peer-generation/PeerLibrary.d.ts +53 -0
  45. package/build/lib/src/peer-generation/PeerLibrary.js +340 -0
  46. package/build/lib/src/peer-generation/PeerMethod.d.ts +35 -0
  47. package/build/lib/src/peer-generation/PeerMethod.js +108 -0
  48. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +1 -0
  49. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +4 -1
  50. package/build/lib/src/peer-generation/idl/common.d.ts +1 -0
  51. package/build/lib/src/peer-generation/idl/common.js +5 -0
  52. package/build/lib/src/util.d.ts +8 -0
  53. package/build/lib/src/util.js +16 -0
  54. package/package.json +3 -7
  55. package/webidl2.js/LICENSE +0 -21
  56. package/webidl2.js/README.md +0 -827
  57. package/webidl2.js/dist/package.json +0 -3
@@ -123,7 +123,7 @@ export class StringConvertor extends BaseArgConvertor {
123
123
  convertorArg(param, writer) {
124
124
  return writer.language == Language.CPP
125
125
  ? writer.makeUnsafeCast_(writer.makeString(`&${param}`), this.idlType, PrintHint.AsConstPointer)
126
- : param;
126
+ : writer.escapeKeyword(param);
127
127
  }
128
128
  convertorSerialize(param, value, writer) {
129
129
  writer.writeMethodCall(`${param}Serializer`, `writeString`, [value]);
@@ -158,7 +158,7 @@ export class EnumConvertor extends BaseArgConvertor {
158
158
  this.enumEntry = enumEntry;
159
159
  }
160
160
  convertorArg(param, writer) {
161
- return writer.makeEnumCast(param, false, this);
161
+ return writer.makeEnumCast(writer.escapeKeyword(param), false, this);
162
162
  }
163
163
  convertorSerialize(param, value, writer) {
164
164
  value =
@@ -199,7 +199,7 @@ export class NumberConvertor extends BaseArgConvertor {
199
199
  convertorArg(param, writer) {
200
200
  return writer.language == Language.CPP
201
201
  ? writer.makeUnsafeCast_(writer.makeString(`&${param}`), this.idlType, PrintHint.AsConstPointer)
202
- : param;
202
+ : writer.escapeKeyword(param);
203
203
  }
204
204
  convertorSerialize(param, value, printer) {
205
205
  printer.writeMethodCall(`${param}Serializer`, "writeNumber", [value]);
@@ -698,14 +698,26 @@ export class OptionConvertor extends BaseArgConvertor {
698
698
  const valueType = `${value}_type`;
699
699
  const serializedType = (printer.language == Language.JAVA ? undefined : idl.IDLI32Type);
700
700
  printer.writeStatement(printer.makeAssign(valueType, serializedType, printer.makeRuntimeType(RuntimeType.UNDEFINED), true, false));
701
- printer.runtimeType(this, valueType, value);
702
- printer.writeMethodCall(`${param}Serializer`, "writeInt8", [printer.castToInt(valueType, 8)]);
701
+ if (printer.language != Language.CJ) {
702
+ printer.runtimeType(this, valueType, value);
703
+ printer.writeMethodCall(`${param}Serializer`, "writeInt8", [printer.castToInt(valueType, 8)]);
704
+ }
703
705
  printer.print(`if (${printer.makeRuntimeTypeCondition(valueType, false, RuntimeType.UNDEFINED, value).asString()}) {`);
704
706
  printer.pushIndent();
707
+ if (printer.language == Language.CJ) {
708
+ printer.writeMethodCall(`${param}Serializer`, "writeInt8", ["RuntimeType.OBJECT.ordinal"]); // everything is object, except None<T>
709
+ }
705
710
  printer.writeStatement(printer.makeAssign(`${value}_value`, undefined, printer.makeValueFromOption(value, this.typeConvertor), true));
706
711
  this.typeConvertor.convertorSerialize(param, this.typeConvertor.getObjectAccessor(printer.language, `${value}_value`), printer);
707
712
  printer.popIndent();
708
713
  printer.print(`}`);
714
+ if (printer.language == Language.CJ) {
715
+ printer.print('else {');
716
+ printer.pushIndent();
717
+ printer.writeMethodCall(`${param}Serializer`, "writeInt8", ["RuntimeType.UNDEFINED.ordinal"]); // undefined
718
+ printer.popIndent();
719
+ printer.print('}');
720
+ }
709
721
  }
710
722
  convertorCArg(param) {
711
723
  throw new Error("Must never be used");
@@ -273,6 +273,7 @@ export declare abstract class LanguageWriter {
273
273
  writeStatement(stmt: LanguageStatement): void;
274
274
  writeStatements(...statements: LanguageStatement[]): void;
275
275
  writeExpressionStatement(smth: LanguageExpression): void;
276
+ writeStaticBlock(op: (writer: this) => void): void;
276
277
  makeRef(type: idl.IDLType, _options?: MakeRefOptions): idl.IDLType;
277
278
  makeThis(): LanguageExpression;
278
279
  makeNull(value?: string): LanguageExpression;
@@ -281,11 +281,10 @@ export class LambdaExpression {
281
281
  stmt.write(writer);
282
282
  }
283
283
  }
284
- return writer.printer.getOutput()
285
- .map(line => line.trim())
284
+ return writer.getOutput()
286
285
  .filter(line => line !== "")
287
- .map(line => line === "{" || line === "}" || this.statementHasSemicolon ? line : `${line};`)
288
- .join(" ");
286
+ .map(line => line.endsWith('{') || line.endsWith('}') || line.endsWith(';') ? line : `${line};`)
287
+ .join("\n");
289
288
  }
290
289
  }
291
290
  ////////////////////////////////////////////////////////////////
@@ -438,6 +437,13 @@ export class LanguageWriter {
438
437
  writeExpressionStatement(smth) {
439
438
  this.writeStatement(new ExpressionStatement(smth));
440
439
  }
440
+ writeStaticBlock(op) {
441
+ this.print("static {");
442
+ this.pushIndent();
443
+ op(this);
444
+ this.popIndent();
445
+ this.print("}");
446
+ }
441
447
  makeRef(type, _options) {
442
448
  return type;
443
449
  }
@@ -0,0 +1,30 @@
1
+ import * as idl from '../../idl';
2
+ import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
3
+ import { IdlNameConvertor, NodeConvertor } from '../nameConvertor';
4
+ export declare class CJTypeNameConvertor implements NodeConvertor<string>, IdlNameConvertor {
5
+ protected resolver: ReferenceResolver;
6
+ constructor(resolver: ReferenceResolver);
7
+ convert(node: idl.IDLNode): string;
8
+ /***** TypeConvertor<string> **********************************/
9
+ convertOptional(type: idl.IDLOptionalType): string;
10
+ convertUnion(type: idl.IDLUnionType): string;
11
+ convertContainer(type: idl.IDLContainerType): string;
12
+ convertNamespace(node: idl.IDLNamespace): string;
13
+ convertInterface(node: idl.IDLInterface): string;
14
+ convertEnum(node: idl.IDLEnum): string;
15
+ convertTypedef(node: idl.IDLTypedef): string;
16
+ convertCallback(type: idl.IDLCallback): string;
17
+ convertMethod(node: idl.IDLMethod): string;
18
+ convertConstant(node: idl.IDLConstant): string;
19
+ convertImport(type: idl.IDLReferenceType, importClause: string): string;
20
+ convertTypeReference(type: idl.IDLReferenceType): string;
21
+ convertTypeParameter(type: idl.IDLTypeParameterType): string;
22
+ convertPrimitiveType(type: idl.IDLPrimitiveType): string;
23
+ private callbackType;
24
+ private productType;
25
+ }
26
+ export declare class CJIDLTypeToForeignStringConvertor extends CJTypeNameConvertor {
27
+ convert(type: idl.IDLNode): string;
28
+ convertPrimitiveType(type: idl.IDLPrimitiveType): string;
29
+ }
30
+ //# sourceMappingURL=CJConvertors.d.ts.map
@@ -0,0 +1,154 @@
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 { convertNode, convertType } from '../nameConvertor';
17
+ export class CJTypeNameConvertor {
18
+ constructor(resolver) {
19
+ this.resolver = resolver;
20
+ }
21
+ convert(node) {
22
+ return convertNode(this, node);
23
+ }
24
+ /***** TypeConvertor<string> **********************************/
25
+ convertOptional(type) {
26
+ return `Option<${this.convert(type.type)}>`;
27
+ }
28
+ convertUnion(type) {
29
+ return type.name;
30
+ }
31
+ convertContainer(type) {
32
+ if (idl.IDLContainerUtils.isSequence(type)) {
33
+ return `ArrayList<${convertType(this, type.elementType[0])}>`;
34
+ }
35
+ if (idl.IDLContainerUtils.isRecord(type)) {
36
+ const stringes = type.elementType.slice(0, 2).map(it => convertType(this, it));
37
+ return `Map<${stringes[0]}, ${stringes[1]}>`;
38
+ }
39
+ throw new Error(`IDL type ${idl.DebugUtils.debugPrintType(type)} not supported`);
40
+ }
41
+ convertNamespace(node) {
42
+ throw new Error('Method not implemented.');
43
+ }
44
+ convertInterface(node) {
45
+ return node.name;
46
+ }
47
+ convertEnum(node) {
48
+ return node.name;
49
+ }
50
+ convertTypedef(node) {
51
+ return node.name;
52
+ }
53
+ convertCallback(type) {
54
+ const params = type.parameters.map(it => `${it.name}: ${it.isOptional ? "?" : ""}${this.convert(it.type)}`);
55
+ return `\{(${params.join(", ")}) => ${this.convert(type.returnType)}\}`;
56
+ }
57
+ convertMethod(node) {
58
+ throw new Error('Method not implemented.');
59
+ }
60
+ convertConstant(node) {
61
+ throw new Error('Method not implemented.');
62
+ }
63
+ convertImport(type, importClause) {
64
+ return type.name;
65
+ }
66
+ convertTypeReference(type) {
67
+ if (type.name === "Object")
68
+ return "KPointer";
69
+ const importAttr = idl.getExtAttribute(type, idl.IDLExtendedAttributes.Import);
70
+ if (importAttr) {
71
+ return this.convertImport(type, importAttr);
72
+ }
73
+ // resolve synthetic types
74
+ const decl = this.resolver.resolveTypeReference(type);
75
+ if (decl && idl.isSyntheticEntry(decl)) {
76
+ if (idl.isCallback(decl)) {
77
+ return this.callbackType(decl);
78
+ }
79
+ const entity = idl.getExtAttribute(decl, idl.IDLExtendedAttributes.Entity);
80
+ if (entity) {
81
+ const isTuple = entity === idl.IDLEntity.Tuple;
82
+ return this.productType(decl, isTuple, !isTuple);
83
+ }
84
+ }
85
+ return type.name;
86
+ }
87
+ convertTypeParameter(type) {
88
+ return type.name;
89
+ }
90
+ convertPrimitiveType(type) {
91
+ switch (type) {
92
+ case idl.IDLStringType: return 'String';
93
+ case idl.IDLBooleanType: return 'Bool';
94
+ case idl.IDLNumberType: return 'Float64';
95
+ case idl.IDLUndefinedType: return 'Unit'; // might be wrong
96
+ case idl.IDLI8Type: return 'Int8';
97
+ case idl.IDLU8Type: return 'UInt8';
98
+ case idl.IDLI16Type: return 'Int16';
99
+ case idl.IDLU16Type: return 'UInt16';
100
+ case idl.IDLI32Type: return 'Int32';
101
+ case idl.IDLU32Type: return 'UInt32';
102
+ case idl.IDLI64Type: return 'Int64';
103
+ case idl.IDLU64Type: return 'UInt64';
104
+ case idl.IDLF32Type: return 'Float32';
105
+ case idl.IDLF64Type: return 'Float64';
106
+ case idl.IDLPointerType: return 'UInt64';
107
+ case idl.IDLVoidType: return 'Unit';
108
+ case idl.IDLBufferType: return 'ArrayList<UInt8>';
109
+ }
110
+ throw new Error(`Unsupported IDL primitive ${idl.DebugUtils.debugPrintType(type)}`);
111
+ }
112
+ callbackType(decl) {
113
+ const params = decl.parameters.map(it => `${it.name}: ${it.isOptional ? "?" : ""}${this.convert(it.type)}`);
114
+ return `((${params.join(", ")}) -> ${this.convert(decl.returnType)})`;
115
+ }
116
+ productType(decl, isTuple, includeFieldNames) {
117
+ if (!isTuple)
118
+ throw new Error('Only tuples supported from IDL synthetic types for now');
119
+ return decl.name;
120
+ }
121
+ }
122
+ export class CJIDLTypeToForeignStringConvertor extends CJTypeNameConvertor {
123
+ convert(type) {
124
+ if (idl.isPrimitiveType(type)) {
125
+ switch (type) {
126
+ case idl.IDLStringType: return 'CString';
127
+ }
128
+ }
129
+ if (idl.isContainerType(type)) {
130
+ if (idl.IDLContainerUtils.isSequence(type)) {
131
+ return `CPointer<${this.convert(type.elementType[0])}>`;
132
+ }
133
+ }
134
+ if (idl.isReferenceType(type)) {
135
+ // Fix, actual mapping has to be due to IDLType
136
+ if (super.convert(type).startsWith('Array'))
137
+ return `CPointer<UInt8>`;
138
+ if (super.convert(type) == 'String' || super.convert(type) == 'KStringPtr') {
139
+ return `CString`;
140
+ }
141
+ if (super.convert(type) == 'Object') {
142
+ return `KPointer`;
143
+ }
144
+ }
145
+ return super.convert(type);
146
+ }
147
+ convertPrimitiveType(type) {
148
+ switch (type) {
149
+ case idl.IDLBufferType: return 'CPointer<UInt8>';
150
+ }
151
+ return super.convertPrimitiveType(type);
152
+ }
153
+ }
154
+ //# sourceMappingURL=CJConvertors.js.map
@@ -17,15 +17,17 @@ import { generatorConfiguration } from "../../config";
17
17
  import { InteropConvertor } from '../InteropConvertor';
18
18
  export class CppInteropConvertor extends InteropConvertor {
19
19
  unwrap(type, result) {
20
+ const conf = generatorConfiguration();
20
21
  if (idl.isType(type) && idl.isOptionalType(type)) {
21
- return `Opt_${result.text}`;
22
+ return `${conf.param("OptionalPrefix")}${result.text}`;
22
23
  }
23
24
  if (result.noPrefix) {
24
25
  return result.text;
25
26
  }
26
- const conf = generatorConfiguration();
27
27
  const typePrefix = conf.param("TypePrefix");
28
- const libPrefix = idl.isPrimitiveType(type) ? "" : conf.param("LibraryPrefix");
28
+ // TODO remove this ugly hack for CustomObject's
29
+ const convertedToCustomObject = result.text === idl.IDLCustomObjectType.name;
30
+ const libPrefix = idl.isPrimitiveType(type) || convertedToCustomObject ? "" : conf.param("LibraryPrefix");
29
31
  return `${typePrefix}${libPrefix}${result.text}`;
30
32
  }
31
33
  convert(node) {
@@ -0,0 +1,13 @@
1
+ import * as idl from "../../idl";
2
+ import { TSTypeNameConvertor } from "./TSConvertors";
3
+ export declare class ETSTypeNameConvertor extends TSTypeNameConvertor {
4
+ convertTypeReference(type: idl.IDLReferenceType): string;
5
+ convertEnum(node: idl.IDLEnum): string;
6
+ convertContainer(type: idl.IDLContainerType): string;
7
+ convertPrimitiveType(type: idl.IDLPrimitiveType): string;
8
+ protected productType(decl: idl.IDLInterface, isTuple: boolean, includeFieldNames: boolean): string;
9
+ protected processTupleType(idlProperty: idl.IDLProperty): idl.IDLProperty;
10
+ protected mapCallback(decl: idl.IDLCallback): string;
11
+ protected mapFunctionType(typeArgs: string[]): string;
12
+ }
13
+ //# sourceMappingURL=ETSConvertors.d.ts.map
@@ -0,0 +1,118 @@
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 { Language } from "../../Language";
17
+ import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
18
+ import { convertDeclaration } from "../nameConvertor";
19
+ import { TSTypeNameConvertor } from "./TSConvertors";
20
+ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
21
+ convertTypeReference(type) {
22
+ // Only to deal with namespaces. TODO: remove later
23
+ const decl = this.resolver.resolveTypeReference(type);
24
+ if (decl && idl.isEnum(decl)) {
25
+ return convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), decl);
26
+ }
27
+ // TODO: Needs to be implemented properly
28
+ const types = type.name.split(".");
29
+ if (types.length > 1) {
30
+ // Takes only name without the namespace prefix
31
+ const decl = this.resolver.resolveTypeReference(idl.createReferenceType(types.slice(-1).join(), undefined, type));
32
+ if (decl !== undefined) {
33
+ return convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), decl);
34
+ }
35
+ }
36
+ const typeName = super.convertTypeReference(type);
37
+ // TODO: Fix for 'TypeError: Type 'Function<R>' is generic but type argument were not provided.'
38
+ if (typeName === "Function") {
39
+ return "Function<void>";
40
+ }
41
+ return typeName;
42
+ }
43
+ convertEnum(node) {
44
+ let ns = idl.getNamespaceName(node).split('.').join('_');
45
+ if (ns !== '') {
46
+ ns += '_';
47
+ }
48
+ return ns + node.name;
49
+ }
50
+ convertContainer(type) {
51
+ if (idl.IDLContainerUtils.isSequence(type)) {
52
+ switch (type.elementType[0]) {
53
+ case idl.IDLU8Type: return 'KUint8ArrayPtr';
54
+ case idl.IDLI32Type: return 'KInt32ArrayPtr';
55
+ case idl.IDLF32Type: return 'KFloat32ArrayPtr';
56
+ }
57
+ return `Array<${this.convert(type.elementType[0])}>`;
58
+ }
59
+ return super.convertContainer(type);
60
+ }
61
+ convertPrimitiveType(type) {
62
+ switch (type) {
63
+ case idl.IDLAnyType: return "object";
64
+ case idl.IDLUnknownType: return "object";
65
+ case idl.IDLPointerType: return 'KPointer';
66
+ case idl.IDLVoidType: return 'void';
67
+ case idl.IDLBooleanType: return 'boolean';
68
+ case idl.IDLU8Type:
69
+ case idl.IDLI8Type:
70
+ case idl.IDLI16Type:
71
+ case idl.IDLU16Type:
72
+ case idl.IDLI32Type:
73
+ case idl.IDLU32Type:
74
+ return 'int32';
75
+ case idl.IDLI64Type:
76
+ case idl.IDLU64Type:
77
+ return 'int64';
78
+ case idl.IDLF32Type:
79
+ return 'float32';
80
+ case idl.IDLF64Type:
81
+ return 'float64';
82
+ case idl.IDLNumberType:
83
+ return 'number';
84
+ case idl.IDLStringType: return 'string';
85
+ case idl.IDLFunctionType: return 'Object';
86
+ case idl.IDLBufferType: return 'NativeBuffer';
87
+ }
88
+ return super.convertPrimitiveType(type);
89
+ }
90
+ productType(decl, isTuple, includeFieldNames) {
91
+ if (decl.subkind === idl.IDLInterfaceSubkind.AnonymousInterface) {
92
+ return decl.name;
93
+ }
94
+ return super.productType(decl, isTuple, includeFieldNames);
95
+ }
96
+ processTupleType(idlProperty) {
97
+ if (idlProperty.isOptional) {
98
+ return Object.assign(Object.assign({}, idlProperty), { isOptional: false, type: idl.createUnionType([idlProperty.type, idl.IDLUndefinedType]) });
99
+ }
100
+ return idlProperty;
101
+ }
102
+ mapCallback(decl) {
103
+ const params = decl.parameters.map(it => {
104
+ return `${it.name}${it.isOptional ? "?" : ""}: ${this.convert(it.type)}`;
105
+ });
106
+ return `((${params.join(",")}) => ${this.convert(decl.returnType)})`;
107
+ }
108
+ mapFunctionType(typeArgs) {
109
+ // Fix for "TypeError: Type 'Function<R>' is generic but type argument were not provided."
110
+ // Replace "Function" to "Function<void>"
111
+ // Use "FunctionN" for ts compatibility
112
+ if (typeArgs.length === 0) {
113
+ typeArgs = [this.convert(idl.IDLVoidType)];
114
+ }
115
+ return `Function${typeArgs.length - 1}<${typeArgs.join(",")}>`;
116
+ }
117
+ }
118
+ //# sourceMappingURL=ETSConvertors.js.map
@@ -0,0 +1,32 @@
1
+ import * as idl from '../../idl';
2
+ import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
3
+ import { IdlNameConvertor, NodeConvertor } from '../nameConvertor';
4
+ export declare class JavaTypeNameConvertor implements NodeConvertor<string>, IdlNameConvertor {
5
+ private resolver;
6
+ constructor(resolver: ReferenceResolver);
7
+ protected solidConvertor: import("../../util").Lazy<JavaIdlNodeToSolidStringConvertor>;
8
+ convert(node: idl.IDLNode): string;
9
+ convertNamespace(node: idl.IDLNamespace): string;
10
+ convertInterface(node: idl.IDLInterface): string;
11
+ convertEnum(node: idl.IDLEnum): string;
12
+ convertTypedef(node: idl.IDLTypedef): string;
13
+ convertOptional(type: idl.IDLOptionalType): string;
14
+ convertUnion(type: idl.IDLUnionType): string;
15
+ convertContainer(type: idl.IDLContainerType): string;
16
+ convertCallback(type: idl.IDLCallback): string;
17
+ convertMethod(type: idl.IDLMethod): string;
18
+ convertConstant(type: idl.IDLConstant): string;
19
+ convertImport(type: idl.IDLReferenceType, importClause: string): string;
20
+ convertTypeReference(type: idl.IDLReferenceType): string;
21
+ convertTypeParameter(type: idl.IDLTypeParameterType): string;
22
+ convertPrimitiveType(type: idl.IDLPrimitiveType): string;
23
+ private readonly javaPrimitiveToReferenceTypeMap;
24
+ protected maybeConvertPrimitiveType(javaType: string): string;
25
+ private mapTypeName;
26
+ }
27
+ declare class JavaIdlNodeToSolidStringConvertor extends JavaTypeNameConvertor {
28
+ protected solidConvertor: import("../../util").Lazy<this>;
29
+ convertContainer(type: idl.IDLContainerType): string;
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=JavaConvertors.d.ts.map
@@ -0,0 +1,175 @@
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 { lazy } from '../../util';
17
+ import { convertNode, convertType } from '../nameConvertor';
18
+ function convertJavaOptional(type) {
19
+ switch (type) {
20
+ case 'boolean': return 'Opt_Boolean';
21
+ case 'double': return 'Opt_Number';
22
+ }
23
+ return type;
24
+ }
25
+ export class JavaTypeNameConvertor {
26
+ constructor(resolver) {
27
+ this.resolver = resolver;
28
+ this.solidConvertor = lazy(() => new JavaIdlNodeToSolidStringConvertor(this.resolver));
29
+ this.javaPrimitiveToReferenceTypeMap = new Map([
30
+ ['byte', 'Byte'],
31
+ ['short', 'Short'],
32
+ ['int', 'Integer'],
33
+ ['float', 'Float'],
34
+ ['double', 'Double'],
35
+ ['boolean', 'Boolean'],
36
+ ['char', 'Character'],
37
+ ]);
38
+ }
39
+ convert(node) {
40
+ const typeString = convertNode(this, node);
41
+ return this.mapTypeName(typeString);
42
+ }
43
+ convertNamespace(node) {
44
+ throw new Error('Method not implemented.'); // TODO: namespace-related-to-rework
45
+ }
46
+ convertInterface(node) {
47
+ if (node.subkind === idl.IDLInterfaceSubkind.Tuple) {
48
+ const javaTypeAliases = node.properties.map(it => convertType(this, idl.maybeOptional(it.type, it.isOptional)));
49
+ return `Tuple_${javaTypeAliases.join('_')}`;
50
+ }
51
+ return node.name;
52
+ }
53
+ convertEnum(node) {
54
+ return node.name;
55
+ }
56
+ convertTypedef(node) {
57
+ return node.name;
58
+ }
59
+ convertOptional(type) {
60
+ return convertJavaOptional(this.convert(type.type));
61
+ }
62
+ convertUnion(type) {
63
+ const aliases = type.types.map(it => convertType(this.solidConvertor.value, it));
64
+ return `Union_${aliases.join('_')}`;
65
+ }
66
+ convertContainer(type) {
67
+ if (idl.IDLContainerUtils.isSequence(type)) {
68
+ const javaType = convertType(this, type.elementType[0]);
69
+ return `${javaType}[]`;
70
+ }
71
+ if (idl.IDLContainerUtils.isRecord(type)) {
72
+ const javaTypes = type.elementType.slice(0, 2).map(it => convertType(this, it)).map(this.maybeConvertPrimitiveType, this);
73
+ return `Map<${javaTypes[0]}, ${javaTypes[1]}>`;
74
+ }
75
+ throw new Error(`IDL type ${idl.DebugUtils.debugPrintType(type)} not supported`);
76
+ }
77
+ convertCallback(type) {
78
+ return `Callback`;
79
+ }
80
+ convertMethod(type) {
81
+ throw new Error('Method not implemented.'); // TODO: namespace-related-to-rework
82
+ }
83
+ convertConstant(type) {
84
+ throw new Error('Method not implemented.'); // TODO: namespace-related-to-rework
85
+ }
86
+ convertImport(type, importClause) {
87
+ return type.name;
88
+ }
89
+ convertTypeReference(type) {
90
+ const importAttr = idl.getExtAttribute(type, idl.IDLExtendedAttributes.Import);
91
+ if (importAttr) {
92
+ return this.convertImport(type, importAttr);
93
+ }
94
+ const decl = this.resolver.resolveTypeReference(type);
95
+ if (decl) {
96
+ const declName = this.convert(decl);
97
+ return declName;
98
+ }
99
+ if (type.name === `Optional`) {
100
+ return convertJavaOptional(idl.printType(type.typeArguments[0]));
101
+ }
102
+ return type.name;
103
+ }
104
+ convertTypeParameter(type) {
105
+ // TODO
106
+ return type.name;
107
+ }
108
+ convertPrimitiveType(type) {
109
+ switch (type) {
110
+ case idl.IDLStringType: return 'String';
111
+ case idl.IDLNumberType: return 'double';
112
+ case idl.IDLBooleanType: return 'boolean';
113
+ case idl.IDLUndefinedType: return 'Ark_Undefined';
114
+ case idl.IDLI8Type: return 'byte';
115
+ case idl.IDLU8Type: return 'byte';
116
+ case idl.IDLI16Type: return 'short';
117
+ case idl.IDLU16Type: return 'short';
118
+ case idl.IDLI32Type: return 'int';
119
+ case idl.IDLU32Type: return 'int';
120
+ case idl.IDLI64Type: return 'long';
121
+ case idl.IDLU64Type: return 'long';
122
+ case idl.IDLF32Type: return 'float';
123
+ case idl.IDLF64Type: return 'double';
124
+ case idl.IDLPointerType: return 'long';
125
+ case idl.IDLVoidType: return 'void';
126
+ case idl.IDLDate: return 'Date';
127
+ case idl.IDLBufferType: return 'byte[]';
128
+ }
129
+ throw new Error(`Unsupported IDL primitive ${idl.DebugUtils.debugPrintType(type)}`);
130
+ }
131
+ maybeConvertPrimitiveType(javaType) {
132
+ if (this.javaPrimitiveToReferenceTypeMap.has(javaType)) {
133
+ return this.javaPrimitiveToReferenceTypeMap.get(javaType);
134
+ }
135
+ return javaType;
136
+ }
137
+ mapTypeName(name) {
138
+ switch (name) {
139
+ case 'KPointer': return 'long';
140
+ case 'KBoolean': return 'boolean';
141
+ case 'KUInt': return 'int';
142
+ case 'int32':
143
+ case 'KInt': return 'int';
144
+ case 'int64':
145
+ case 'KLong': return 'long';
146
+ case 'float32':
147
+ case 'KFloat': return 'float';
148
+ case 'KUint8ArrayPtr': return 'byte[]';
149
+ case 'KInt32ArrayPtr': return 'int[]';
150
+ case 'KFloat32ArrayPtr': return 'float[]';
151
+ // case 'ArrayBuffer': return 'byte[]'
152
+ case 'KStringPtr': return 'String';
153
+ case 'string': return 'String';
154
+ }
155
+ return name;
156
+ }
157
+ }
158
+ class JavaIdlNodeToSolidStringConvertor extends JavaTypeNameConvertor {
159
+ constructor() {
160
+ super(...arguments);
161
+ this.solidConvertor = lazy(() => this);
162
+ }
163
+ convertContainer(type) {
164
+ if (idl.IDLContainerUtils.isSequence(type)) {
165
+ const javaTypeSolid = convertType(this, type.elementType[0]);
166
+ return `Array_${javaTypeSolid}`;
167
+ }
168
+ if (idl.IDLContainerUtils.isRecord(type)) {
169
+ const javaTypeSolids = type.elementType.slice(0, 2).map(it => convertType(this, it)).map(this.maybeConvertPrimitiveType, this);
170
+ return `Map_${javaTypeSolids[0]}_${javaTypeSolids[1]}`;
171
+ }
172
+ throw new Error(`IDL type ${idl.DebugUtils.debugPrintType(type)} not supported`);
173
+ }
174
+ }
175
+ //# sourceMappingURL=JavaConvertors.js.map
@@ -0,0 +1,27 @@
1
+ import * as idl from '../../idl';
2
+ import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
3
+ import { IdlNameConvertor, NodeConvertor } from '../nameConvertor';
4
+ export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNameConvertor {
5
+ protected resolver: ReferenceResolver;
6
+ constructor(resolver: ReferenceResolver);
7
+ convert(node: idl.IDLNode): string;
8
+ convertNamespace(node: idl.IDLNamespace): string;
9
+ convertInterface(node: idl.IDLInterface): string;
10
+ convertEnum(node: idl.IDLEnum): string;
11
+ convertTypedef(node: idl.IDLTypedef): string;
12
+ convertCallback(node: idl.IDLCallback): string;
13
+ convertMethod(node: idl.IDLMethod): string;
14
+ convertConstant(node: idl.IDLConstant): string;
15
+ convertOptional(type: idl.IDLOptionalType): string;
16
+ convertUnion(type: idl.IDLUnionType): string;
17
+ convertContainer(type: idl.IDLContainerType): string;
18
+ convertImport(type: idl.IDLReferenceType, importClause: string): string;
19
+ convertTypeReference(type: idl.IDLReferenceType): string;
20
+ convertTypeParameter(type: idl.IDLTypeParameterType): string;
21
+ convertPrimitiveType(type: idl.IDLPrimitiveType): string;
22
+ protected processTupleType(idlProperty: idl.IDLProperty): idl.IDLProperty;
23
+ protected mapCallback(decl: idl.IDLCallback): string;
24
+ protected productType(decl: idl.IDLInterface, isTuple: boolean, includeFieldNames: boolean): string;
25
+ protected mapFunctionType(typeArgs: string[]): string;
26
+ }
27
+ //# sourceMappingURL=TSConvertors.d.ts.map