@idlizer/core 2.1.7 → 2.1.9-arktscgen-4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/src/IndentedPrinter.js +2 -0
- package/build/lib/src/Language.d.ts +1 -0
- package/build/lib/src/Language.js +3 -0
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +18 -3
- package/build/lib/src/LanguageWriters/ArgConvertors.js +154 -23
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +29 -4
- package/build/lib/src/LanguageWriters/LanguageWriter.js +42 -0
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +23 -10
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertor.d.ts +24 -0
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertor.js +69 -0
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +25 -0
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +128 -0
- package/build/lib/src/LanguageWriters/index.js +4 -0
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +5 -5
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +25 -23
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +1 -1
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +11 -2
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +43 -10
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +2 -2
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +20 -11
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -2
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +3 -3
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +149 -0
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +495 -0
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +2 -2
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +6 -4
- package/build/lib/src/LibraryInterface.d.ts +2 -0
- package/build/lib/src/config.d.ts +132 -66
- package/build/lib/src/config.js +4 -2
- package/build/lib/src/configDescriber.d.ts +1 -1
- package/build/lib/src/configDescriber.js +1 -1
- package/build/lib/src/from-idl/DtsPrinter.js +10 -7
- package/build/lib/src/from-idl/IDLLinter.d.ts +0 -1
- package/build/lib/src/from-idl/IDLLinter.js +0 -6
- package/build/lib/src/from-idl/deserialize.js +7 -21
- package/build/lib/src/idl.d.ts +4 -13
- package/build/lib/src/idl.js +24 -58
- package/build/lib/src/idlize.js +2 -0
- package/build/lib/src/index.d.ts +2 -0
- package/build/lib/src/index.js +2 -0
- package/build/lib/src/peer-generation/LayoutManager.d.ts +4 -1
- package/build/lib/src/peer-generation/LayoutManager.js +5 -1
- package/build/lib/src/peer-generation/Materialized.d.ts +7 -3
- package/build/lib/src/peer-generation/Materialized.js +17 -3
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +5 -2
- package/build/lib/src/peer-generation/PeerLibrary.js +26 -6
- package/build/lib/src/peer-generation/PeerMethod.d.ts +1 -1
- package/build/lib/src/peer-generation/getSuperType.d.ts +5 -0
- package/build/lib/src/peer-generation/getSuperType.js +55 -0
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +4 -0
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +7 -0
- package/build/lib/src/peer-generation/idl/common.js +1 -1
- package/build/lib/src/peer-generation/isExternalType.d.ts +4 -0
- package/build/lib/src/peer-generation/isExternalType.js +15 -0
- package/build/lib/src/peer-generation/isMaterialized.js +15 -7
- package/build/lib/src/util.d.ts +2 -0
- package/build/lib/src/util.js +17 -7
- package/build/lib/src/visitor.js +0 -1
- package/package.json +2 -2
- package/webidl2.js/LICENSE +0 -21
- package/webidl2.js/README.md +0 -827
- package/webidl2.js/dist/package.json +0 -3
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
|
+
import { CJKeywords } from '../../languageSpecificKeywords';
|
|
16
17
|
import { convertNode, convertType } from '../nameConvertor';
|
|
17
18
|
import { InteropArgConvertor } from './InteropConvertors';
|
|
18
19
|
export class CJTypeNameConvertor {
|
|
@@ -40,6 +41,12 @@ export class CJTypeNameConvertor {
|
|
|
40
41
|
}
|
|
41
42
|
if (idl.IDLContainerUtils.isRecord(type)) {
|
|
42
43
|
const stringes = type.elementType.slice(0, 2).map(it => convertType(this, it));
|
|
44
|
+
if (idl.isReferenceType(type.elementType[0])) {
|
|
45
|
+
const keyValueType = this.resolver.resolveTypeReference(type.elementType[0]);
|
|
46
|
+
if (idl.isInterface(keyValueType) || idl.isEnum(keyValueType)) {
|
|
47
|
+
return `HashMap<Int64, ${stringes[1]}>`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
43
50
|
return `HashMap<${stringes[0]}, ${stringes[1]}>`;
|
|
44
51
|
}
|
|
45
52
|
if (idl.IDLContainerUtils.isPromise(type)) {
|
|
@@ -60,7 +67,7 @@ export class CJTypeNameConvertor {
|
|
|
60
67
|
return node.name;
|
|
61
68
|
}
|
|
62
69
|
convertCallback(type) {
|
|
63
|
-
const params = type.parameters.map(it => `${it.name}: ${it.isOptional ? "?" : ""}${this.convert(it.type)}`);
|
|
70
|
+
const params = type.parameters.map(it => `${CJKeywords.has(it.name) ? it.name.concat("_") : it.name}: ${it.isOptional ? "?" : ""}${this.convert(it.type)}`);
|
|
64
71
|
return `(${params.join(", ")}) -> ${this.convert(type.returnType)}`;
|
|
65
72
|
}
|
|
66
73
|
convertMethod(node) {
|
|
@@ -74,15 +81,17 @@ export class CJTypeNameConvertor {
|
|
|
74
81
|
return type.name;
|
|
75
82
|
}
|
|
76
83
|
convertTypeReferenceAsImport(type, importClause) {
|
|
77
|
-
|
|
84
|
+
var _a;
|
|
85
|
+
const maybeTypeArguments = ((_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.length) ? `<${type.typeArguments.join(', ')}>` : "";
|
|
86
|
+
let decl = this.resolver.resolveTypeReference(type);
|
|
87
|
+
if (decl)
|
|
88
|
+
return `${decl.name}${maybeTypeArguments}`;
|
|
89
|
+
return this.convert(idl.IDLCustomObjectType);
|
|
78
90
|
}
|
|
79
91
|
convertTypeReference(type) {
|
|
80
|
-
|
|
92
|
+
var _a, _b;
|
|
93
|
+
if (type.name === idl.IDLObjectType.name)
|
|
81
94
|
return "KPointer";
|
|
82
|
-
const importAttr = idl.getExtAttribute(type, idl.IDLExtendedAttributes.Import);
|
|
83
|
-
if (importAttr) {
|
|
84
|
-
return this.convertTypeReferenceAsImport(type, importAttr);
|
|
85
|
-
}
|
|
86
95
|
// resolve synthetic types
|
|
87
96
|
const decl = this.resolver.resolveTypeReference(type);
|
|
88
97
|
if (decl && idl.isSyntheticEntry(decl)) {
|
|
@@ -96,10 +105,12 @@ export class CJTypeNameConvertor {
|
|
|
96
105
|
}
|
|
97
106
|
}
|
|
98
107
|
let name = type.name.split('.');
|
|
108
|
+
let typeArgs = (_b = (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => this.convert(it))) !== null && _b !== void 0 ? _b : [];
|
|
109
|
+
const maybeTypeArguments = !(typeArgs === null || typeArgs === void 0 ? void 0 : typeArgs.length) ? '' : `<${typeArgs.join(', ')}>`;
|
|
99
110
|
if (decl) {
|
|
100
|
-
return idl.getNamespacesPathFor(decl).map(ns => ns.name).join().concat(name[name.length - 1]);
|
|
111
|
+
return idl.getNamespacesPathFor(decl).map(ns => ns.name).join().concat(name[name.length - 1].concat(maybeTypeArguments));
|
|
101
112
|
}
|
|
102
|
-
return
|
|
113
|
+
return this.convert(idl.IDLCustomObjectType);
|
|
103
114
|
}
|
|
104
115
|
convertTypeParameter(type) {
|
|
105
116
|
return type.name;
|
|
@@ -129,6 +140,7 @@ export class CJTypeNameConvertor {
|
|
|
129
140
|
case idl.IDLSerializerBuffer: return 'KSerializerBuffer';
|
|
130
141
|
case idl.IDLAnyType: return 'Any';
|
|
131
142
|
case idl.IDLDate: return 'DateTime';
|
|
143
|
+
case idl.IDLObjectType: return 'Any';
|
|
132
144
|
case idl.IDLUnknownType:
|
|
133
145
|
case idl.IDLFunctionType:
|
|
134
146
|
case idl.IDLCustomObjectType: return 'Any';
|
|
@@ -136,7 +148,7 @@ export class CJTypeNameConvertor {
|
|
|
136
148
|
throw new Error(`Unsupported IDL primitive ${idl.DebugUtils.debugPrintType(type)}`);
|
|
137
149
|
}
|
|
138
150
|
callbackType(decl) {
|
|
139
|
-
const params = decl.parameters.map(it => `${it.name}: ${this.convert(it.type)}`);
|
|
151
|
+
const params = decl.parameters.map(it => `${CJKeywords.has(it.name) ? it.name.concat("_") : it.name}: ${this.convert(it.type)}`);
|
|
140
152
|
return `((${params.join(", ")}) -> ${this.convert(decl.returnType)})`;
|
|
141
153
|
}
|
|
142
154
|
productType(decl, isTuple, includeFieldNames) {
|
|
@@ -150,6 +162,7 @@ export class CJIDLTypeToForeignStringConvertor extends CJTypeNameConvertor {
|
|
|
150
162
|
case idl.IDLStringType: return 'CString';
|
|
151
163
|
case idl.IDLInteropReturnBufferType: return 'KInteropReturnBuffer';
|
|
152
164
|
case idl.IDLSerializerBuffer: return 'KSerializerBuffer';
|
|
165
|
+
case idl.IDLObjectType: return 'Unit';
|
|
153
166
|
}
|
|
154
167
|
}
|
|
155
168
|
if (idl.isContainerType(type)) {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as idl from '../../idl';
|
|
2
|
+
import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
|
|
3
|
+
import { IdlNameConvertor, NodeConvertor } from '../nameConvertor';
|
|
4
|
+
export declare class KotlinTypeNameConvertor 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.IDLImport): string;
|
|
19
|
+
convertTypeReferenceAsImport(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
|
+
}
|
|
24
|
+
//# sourceMappingURL=KotlinConvertor.d.ts.map
|
|
@@ -0,0 +1,69 @@
|
|
|
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 { convertNode } from '../nameConvertor';
|
|
16
|
+
export class KotlinTypeNameConvertor {
|
|
17
|
+
constructor(resolver) {
|
|
18
|
+
this.resolver = resolver;
|
|
19
|
+
}
|
|
20
|
+
convert(node) {
|
|
21
|
+
return convertNode(this, node);
|
|
22
|
+
}
|
|
23
|
+
convertNamespace(node) {
|
|
24
|
+
throw new Error("Not implemented");
|
|
25
|
+
}
|
|
26
|
+
convertInterface(node) {
|
|
27
|
+
throw new Error("Not implemented");
|
|
28
|
+
}
|
|
29
|
+
convertEnum(node) {
|
|
30
|
+
throw new Error("Not implemented");
|
|
31
|
+
}
|
|
32
|
+
convertTypedef(node) {
|
|
33
|
+
throw new Error("Not implemented");
|
|
34
|
+
}
|
|
35
|
+
convertCallback(node) {
|
|
36
|
+
throw new Error("Not implemented");
|
|
37
|
+
}
|
|
38
|
+
convertMethod(node) {
|
|
39
|
+
throw new Error("Not implemented");
|
|
40
|
+
}
|
|
41
|
+
convertConstant(node) {
|
|
42
|
+
throw new Error("Not implemented");
|
|
43
|
+
}
|
|
44
|
+
convertOptional(type) {
|
|
45
|
+
throw new Error("Not implemented");
|
|
46
|
+
}
|
|
47
|
+
convertUnion(type) {
|
|
48
|
+
throw new Error("Not implemented");
|
|
49
|
+
}
|
|
50
|
+
convertContainer(type) {
|
|
51
|
+
throw new Error("Not implemented");
|
|
52
|
+
}
|
|
53
|
+
convertImport(type) {
|
|
54
|
+
throw new Error("Not implemented");
|
|
55
|
+
}
|
|
56
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
57
|
+
throw new Error("Not implemented");
|
|
58
|
+
}
|
|
59
|
+
convertTypeReference(type) {
|
|
60
|
+
throw new Error("Not implemented");
|
|
61
|
+
}
|
|
62
|
+
convertTypeParameter(type) {
|
|
63
|
+
throw new Error("Not implemented");
|
|
64
|
+
}
|
|
65
|
+
convertPrimitiveType(type) {
|
|
66
|
+
throw new Error("Not implemented");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=KotlinConvertor.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as idl from '../../idl';
|
|
2
|
+
import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
|
|
3
|
+
import { IdlNameConvertor, NodeConvertor } from '../nameConvertor';
|
|
4
|
+
export declare class KotlinTypeNameConvertor 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.IDLImport): string;
|
|
19
|
+
convertTypeReferenceAsImport(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
|
+
}
|
|
25
|
+
//# sourceMappingURL=KotlinConvertors.d.ts.map
|
|
@@ -0,0 +1,128 @@
|
|
|
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 KotlinTypeNameConvertor {
|
|
18
|
+
constructor(resolver) {
|
|
19
|
+
this.resolver = resolver;
|
|
20
|
+
}
|
|
21
|
+
convert(node) {
|
|
22
|
+
return convertNode(this, node);
|
|
23
|
+
}
|
|
24
|
+
convertNamespace(node) {
|
|
25
|
+
return node.name;
|
|
26
|
+
}
|
|
27
|
+
convertInterface(node) {
|
|
28
|
+
return node.name;
|
|
29
|
+
}
|
|
30
|
+
convertEnum(node) {
|
|
31
|
+
return node.name;
|
|
32
|
+
}
|
|
33
|
+
convertTypedef(node) {
|
|
34
|
+
return node.name;
|
|
35
|
+
}
|
|
36
|
+
convertCallback(node) {
|
|
37
|
+
const params = node.parameters.map(it => `${it.name}: ${this.convert(it.type)}${it.isOptional ? "?" : ""}`);
|
|
38
|
+
return `(${params.join(", ")}) -> ${this.convert(node.returnType)}`;
|
|
39
|
+
}
|
|
40
|
+
convertMethod(node) {
|
|
41
|
+
return node.name;
|
|
42
|
+
}
|
|
43
|
+
convertConstant(node) {
|
|
44
|
+
return node.name;
|
|
45
|
+
}
|
|
46
|
+
convertOptional(type) {
|
|
47
|
+
return `${this.convert(type.type)}?`;
|
|
48
|
+
}
|
|
49
|
+
convertUnion(type) {
|
|
50
|
+
return type.name;
|
|
51
|
+
}
|
|
52
|
+
convertContainer(type) {
|
|
53
|
+
if (idl.IDLContainerUtils.isSequence(type)) {
|
|
54
|
+
return `Array<${convertType(this, type.elementType[0])}>`;
|
|
55
|
+
}
|
|
56
|
+
if (idl.IDLContainerUtils.isRecord(type)) {
|
|
57
|
+
const stringes = type.elementType.slice(0, 2).map(it => convertType(this, it));
|
|
58
|
+
return `Map<${stringes[0]}, ${stringes[1]}>`;
|
|
59
|
+
}
|
|
60
|
+
if (idl.IDLContainerUtils.isPromise(type)) {
|
|
61
|
+
return `Any`;
|
|
62
|
+
}
|
|
63
|
+
throw new Error(`IDL type ${idl.DebugUtils.debugPrintType(type)} not supported`);
|
|
64
|
+
}
|
|
65
|
+
convertImport(type) {
|
|
66
|
+
throw new Error("Not implemented");
|
|
67
|
+
}
|
|
68
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
69
|
+
throw new Error("Not implemented");
|
|
70
|
+
}
|
|
71
|
+
convertTypeReference(type) {
|
|
72
|
+
const decl = this.resolver.resolveTypeReference(type);
|
|
73
|
+
if (decl && idl.isSyntheticEntry(decl)) {
|
|
74
|
+
if (idl.isCallback(decl)) {
|
|
75
|
+
return this.callbackType(decl);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (decl) {
|
|
79
|
+
return decl.name;
|
|
80
|
+
}
|
|
81
|
+
return this.convert(idl.IDLCustomObjectType);
|
|
82
|
+
}
|
|
83
|
+
convertTypeParameter(type) {
|
|
84
|
+
return type.name;
|
|
85
|
+
}
|
|
86
|
+
convertPrimitiveType(type) {
|
|
87
|
+
switch (type) {
|
|
88
|
+
case idl.IDLFunctionType: return 'Function';
|
|
89
|
+
case idl.IDLUnknownType:
|
|
90
|
+
case idl.IDLCustomObjectType: return 'Any';
|
|
91
|
+
case idl.IDLThisType: return 'this';
|
|
92
|
+
case idl.IDLObjectType: return 'Object';
|
|
93
|
+
case idl.IDLAnyType: return 'Any';
|
|
94
|
+
case idl.IDLUndefinedType: return 'Nothing?';
|
|
95
|
+
case idl.IDLPointerType: return 'KPointer';
|
|
96
|
+
case idl.IDLSerializerBuffer: return 'KSerializerBuffer';
|
|
97
|
+
case idl.IDLVoidType: return 'Unit';
|
|
98
|
+
case idl.IDLBooleanType: return 'Boolean';
|
|
99
|
+
case idl.IDLI8Type: return 'Byte';
|
|
100
|
+
case idl.IDLU8Type: return 'UByte';
|
|
101
|
+
case idl.IDLI16Type: return 'Short';
|
|
102
|
+
case idl.IDLU16Type: return 'UShort';
|
|
103
|
+
case idl.IDLI32Type: return 'Int';
|
|
104
|
+
case idl.IDLU32Type: return 'UInt';
|
|
105
|
+
case idl.IDLI64Type: return 'Long';
|
|
106
|
+
case idl.IDLU64Type: return 'ULong';
|
|
107
|
+
case idl.IDLF32Type: return 'Float';
|
|
108
|
+
case idl.IDLF64Type: return 'Double';
|
|
109
|
+
case idl.IDLNumberType: return 'Double';
|
|
110
|
+
case idl.IDLBigintType:
|
|
111
|
+
return 'BigInteger'; // relies on import java.math.BigInteger
|
|
112
|
+
case idl.IDLStringType:
|
|
113
|
+
return 'String';
|
|
114
|
+
case idl.IDLDate:
|
|
115
|
+
return 'Date';
|
|
116
|
+
case idl.IDLBufferType:
|
|
117
|
+
return 'NativeBuffer';
|
|
118
|
+
case idl.IDLInteropReturnBufferType:
|
|
119
|
+
return `KInteropReturnBuffer`;
|
|
120
|
+
}
|
|
121
|
+
throw new Error(`Unmapped primitive type ${idl.DebugUtils.debugPrintType(type)}`);
|
|
122
|
+
}
|
|
123
|
+
callbackType(decl) {
|
|
124
|
+
const params = decl.parameters.map(it => `${it.name}: ${this.convert(it.type)}`);
|
|
125
|
+
return `((${params.join(", ")}) -> ${this.convert(decl.returnType)})`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=KotlinConvertors.js.map
|
|
@@ -6,11 +6,13 @@ import { CJIDLTypeToForeignStringConvertor, CJInteropArgConvertor, CJTypeNameCon
|
|
|
6
6
|
import { CppInteropArgConvertor, CppConvertor } from "./convertors/CppConvertors";
|
|
7
7
|
import { ETSInteropArgConvertor, ETSTypeNameConvertor } from "./convertors/ETSConvertors";
|
|
8
8
|
import { JavaInteropArgConvertor, JavaTypeNameConvertor } from "./convertors/JavaConvertors";
|
|
9
|
+
import { KotlinTypeNameConvertor } from "./convertors/KotlinConvertors";
|
|
9
10
|
import { TSInteropArgConvertor, TSTypeNameConvertor } from "./convertors/TSConvertors";
|
|
10
11
|
import { CJLanguageWriter } from "./writers/CJLanguageWriter";
|
|
11
12
|
import { CppLanguageWriter } from "./writers/CppLanguageWriter";
|
|
12
13
|
import { ETSLanguageWriter } from "./writers/ETSLanguageWriter";
|
|
13
14
|
import { JavaLanguageWriter } from "./writers/JavaLanguageWriter";
|
|
15
|
+
import { KotlinLanguageWriter } from "./writers/KotlinLanguageWriter";
|
|
14
16
|
import { TSLanguageWriter } from "./writers/TsLanguageWriter";
|
|
15
17
|
export * from "./nameConvertor";
|
|
16
18
|
export function createLanguageWriter(language, resolver) {
|
|
@@ -22,6 +24,7 @@ export function createLanguageWriter(language, resolver) {
|
|
|
22
24
|
case Language.JAVA: return new JavaLanguageWriter(printer, resolver, new JavaTypeNameConvertor(resolver));
|
|
23
25
|
case Language.CPP: return new CppLanguageWriter(printer, resolver, new CppConvertor(resolver), PrimitiveTypesInstance);
|
|
24
26
|
case Language.CJ: return new CJLanguageWriter(printer, resolver, new CJTypeNameConvertor(resolver), new CJIDLTypeToForeignStringConvertor(resolver));
|
|
27
|
+
case Language.KOTLIN: return new KotlinLanguageWriter(printer, resolver, new KotlinTypeNameConvertor(resolver));
|
|
25
28
|
default: throw new Error(`Language ${language.toString()} is not supported`);
|
|
26
29
|
}
|
|
27
30
|
}
|
|
@@ -32,6 +35,7 @@ export function createInteropArgConvertor(language) {
|
|
|
32
35
|
case Language.CPP: return CppInteropArgConvertor.INSTANCE;
|
|
33
36
|
case Language.JAVA: return new JavaInteropArgConvertor();
|
|
34
37
|
case Language.CJ: return new CJInteropArgConvertor();
|
|
38
|
+
case Language.KOTLIN: return new CJInteropArgConvertor();
|
|
35
39
|
}
|
|
36
40
|
throw new Error(`InteropArgConvertor for language ${language} not implemented`);
|
|
37
41
|
}
|
|
@@ -2,7 +2,7 @@ import * as idl from "../../idl";
|
|
|
2
2
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
3
3
|
import { ArgConvertor, BaseArgConvertor } from "../ArgConvertors";
|
|
4
4
|
import { RuntimeType } from "../common";
|
|
5
|
-
import { AssignStatement,
|
|
5
|
+
import { AssignStatement, DelegationCall, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
|
|
6
6
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
7
7
|
import { Language } from "../../Language";
|
|
8
8
|
import { ReferenceResolver } from "../../peer-generation/ReferenceResolver";
|
|
@@ -26,11 +26,11 @@ export declare class CJUnionCastExpression implements LanguageExpression {
|
|
|
26
26
|
asString(): string;
|
|
27
27
|
}
|
|
28
28
|
export declare class CJMatchExpression implements LanguageExpression {
|
|
29
|
-
matchValue:
|
|
29
|
+
matchValue: string;
|
|
30
30
|
matchCases: LanguageExpression[];
|
|
31
31
|
caseBlocks: LanguageExpression[];
|
|
32
32
|
indentDepth?: number | undefined;
|
|
33
|
-
constructor(matchValue:
|
|
33
|
+
constructor(matchValue: string, matchCases: LanguageExpression[], caseBlocks: LanguageExpression[], indentDepth?: number | undefined);
|
|
34
34
|
asString(): string;
|
|
35
35
|
}
|
|
36
36
|
export declare class CJTernaryExpression implements LanguageExpression {
|
|
@@ -91,7 +91,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
91
91
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
92
92
|
writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
93
93
|
writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
|
|
94
|
-
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void,
|
|
94
|
+
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, delegationCall?: DelegationCall, modifiers?: MethodModifier[]): void;
|
|
95
95
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
96
96
|
writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
97
97
|
writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
@@ -132,7 +132,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
132
132
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
133
133
|
getObjectAccessor(convertor: BaseArgConvertor, value: string, args?: ObjectArgs): string;
|
|
134
134
|
makeUndefined(): LanguageExpression;
|
|
135
|
-
makeUnwrapOptional(expression:
|
|
135
|
+
makeUnwrapOptional(expression: LanguageExpression): LanguageExpression;
|
|
136
136
|
makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
|
|
137
137
|
makeRuntimeType(rt: RuntimeType): LanguageExpression;
|
|
138
138
|
protected makeRuntimeTypeGetterCall(value: string): LanguageExpression;
|
|
@@ -31,7 +31,7 @@ class CJLambdaExpression extends LambdaExpression {
|
|
|
31
31
|
return false;
|
|
32
32
|
}
|
|
33
33
|
asString() {
|
|
34
|
-
const params = this.signature.args.map((it, i) => `${this.signature.argName(i)}: ${this.writer.getNodeName(it)}`);
|
|
34
|
+
const params = this.signature.args.map((it, i) => `${this.writer.escapeKeyword(this.signature.argName(i))}: ${this.writer.getNodeName(it)}`);
|
|
35
35
|
return `{${params.join(", ")} => ${this.bodyAsString()} }`;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -73,11 +73,11 @@ export class CJMatchExpression {
|
|
|
73
73
|
asString() {
|
|
74
74
|
var _a, _b, _c;
|
|
75
75
|
let output = [];
|
|
76
|
-
output.push(`match (${this.matchValue
|
|
76
|
+
output.push(`match (${this.matchValue}) {`);
|
|
77
77
|
for (let index in this.matchCases) {
|
|
78
78
|
output.push(indentedBy(`case ${this.matchCases[index].asString()} => ${this.caseBlocks[index].asString()}`, ((_a = this.indentDepth) !== null && _a !== void 0 ? _a : 0) + 1));
|
|
79
79
|
}
|
|
80
|
-
output.push(indentedBy(`case _ => throw Exception(\"Unmatched pattern ${this.matchValue
|
|
80
|
+
output.push(indentedBy(`case _ => throw Exception(\"Unmatched pattern ${this.matchValue}\")`, ((_b = this.indentDepth) !== null && _b !== void 0 ? _b : 1) + 1));
|
|
81
81
|
output.push(indentedBy(`}`, ((_c = this.indentDepth) !== null && _c !== void 0 ? _c : 1)));
|
|
82
82
|
return output.join('\n');
|
|
83
83
|
}
|
|
@@ -184,7 +184,7 @@ export class CJEnumWithGetter {
|
|
|
184
184
|
}
|
|
185
185
|
memberValue += 1;
|
|
186
186
|
}
|
|
187
|
-
let enumName = this.enumEntity.name;
|
|
187
|
+
let enumName = idl.getNamespaceName(this.enumEntity).concat(this.enumEntity.name);
|
|
188
188
|
writer.writeClass(enumName, () => {
|
|
189
189
|
const enumType = idl.createReferenceType(this.enumEntity);
|
|
190
190
|
members.forEach(it => {
|
|
@@ -322,7 +322,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
322
322
|
super.writeMethodCall('thisObj', this.escapeKeyword(method), params, false);
|
|
323
323
|
return;
|
|
324
324
|
}
|
|
325
|
-
this.printer.print(`if (let Some(${receiver}) <- ${receiver}) { ${receiver}.${method}(${params.join(", ")}) }`);
|
|
325
|
+
this.printer.print(`if (let Some(${receiver}) <- ${receiver}) { ${receiver}.${this.escapeKeyword(method)}(${params.join(", ")}) }`);
|
|
326
326
|
}
|
|
327
327
|
else {
|
|
328
328
|
super.writeMethodCall(receiver, this.escapeKeyword(method), params, nullable);
|
|
@@ -337,26 +337,27 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
337
337
|
writeMethodDeclaration(name, signature, modifiers) {
|
|
338
338
|
this.writeDeclaration(name, signature, modifiers);
|
|
339
339
|
}
|
|
340
|
-
writeConstructorImplementation(className, signature, op,
|
|
340
|
+
writeConstructorImplementation(className, signature, op, delegationCall, modifiers) {
|
|
341
341
|
var _a;
|
|
342
342
|
let i = 1;
|
|
343
343
|
while (signature.isArgOptional(signature.args.length - i)) {
|
|
344
344
|
let smallerSignature = signature.args.slice(0, -i);
|
|
345
|
-
this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}init (${smallerSignature.map((it, index) => `${signature.argName(index)}: ${this.getNodeName(it)}`).join(", ")}) {`);
|
|
345
|
+
this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}init (${smallerSignature.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(it)}`).join(", ")}) {`);
|
|
346
346
|
this.pushIndent();
|
|
347
|
-
let
|
|
347
|
+
let lessArgs = (_a = signature.args) === null || _a === void 0 ? void 0 : _a.slice(0, -i).map((_, i) => this.escapeKeyword(signature.argName(i))).join(', ');
|
|
348
348
|
for (let idx = 0; idx < i; idx++) {
|
|
349
|
-
|
|
349
|
+
lessArgs = lessArgs.concat(`${i == signature.args.length && idx == 0 ? '' : ', '}Option.None`);
|
|
350
350
|
}
|
|
351
|
-
this.print(`${className}(${
|
|
351
|
+
this.print(`${className}(${lessArgs})`);
|
|
352
352
|
this.popIndent();
|
|
353
353
|
this.printer.print(`}`);
|
|
354
354
|
i += 1;
|
|
355
355
|
}
|
|
356
|
-
this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}${className}(${signature.args.map((it, index) => `${signature.argName(index)}: ${this.getNodeName(idl.maybeOptional(it, signature.isArgOptional(index)))}`).join(", ")}) {`);
|
|
356
|
+
this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}${className}(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(idl.maybeOptional(it, signature.isArgOptional(index)))}`).join(", ")}) {`);
|
|
357
357
|
this.pushIndent();
|
|
358
|
-
if (
|
|
359
|
-
|
|
358
|
+
if (delegationCall) {
|
|
359
|
+
// TBD: check delegationType to write "this" or "super"
|
|
360
|
+
this.print(`super(${delegationCall.delegationArgs.map(it => it.asString()).join(", ")})`);
|
|
360
361
|
}
|
|
361
362
|
op(this);
|
|
362
363
|
this.popIndent();
|
|
@@ -415,7 +416,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
415
416
|
this.print('}');
|
|
416
417
|
}
|
|
417
418
|
writeSetterImplementation(method, op) {
|
|
418
|
-
this.print(`set(${method.signature.argsNames.join(', ')}) {`);
|
|
419
|
+
this.print(`set(${method.signature.argsNames.map(arg => this.escapeKeyword(arg)).join(', ')}) {`);
|
|
419
420
|
this.pushIndent();
|
|
420
421
|
op(this);
|
|
421
422
|
this.popIndent();
|
|
@@ -428,13 +429,14 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
428
429
|
this.popIndent();
|
|
429
430
|
this.print('}');
|
|
430
431
|
}
|
|
431
|
-
writeDeclaration(name, signature, modifiers, postfix) {
|
|
432
|
+
writeDeclaration(name, signature, modifiers, postfix, generics) {
|
|
432
433
|
let prefix = modifiers === null || modifiers === void 0 ? void 0 : modifiers.filter(it => this.supportedModifiers.includes(it)).map(it => this.mapMethodModifier(it)).join(" ");
|
|
433
434
|
prefix = prefix ? prefix + " " : "public ";
|
|
434
|
-
|
|
435
|
+
const typeParams = (generics === null || generics === void 0 ? void 0 : generics.length) ? `<${generics.join(", ")}>` : "";
|
|
436
|
+
this.print(`${prefix}${((modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.SETTER)) || (modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.GETTER))) ? '' : `${((modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.STATIC)) || (modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.PRIVATE))) ? '' : 'open '}func `}${this.escapeKeyword(name)}${typeParams}(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(idl.maybeOptional(it, signature.isArgOptional(index)))}`).join(", ")})${this.getNodeName(signature.returnType) == 'this' ? '' : `: ${this.getNodeName(signature.returnType)}`}${postfix !== null && postfix !== void 0 ? postfix : ""}`);
|
|
435
437
|
}
|
|
436
438
|
writeNativeFunctionCall(printer, name, signature) {
|
|
437
|
-
printer.print(`return unsafe { ${name}(${signature.args.map((it, index) => `${signature.argName(index)}`).join(", ")}) }`);
|
|
439
|
+
printer.print(`return unsafe { ${name}(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}`).join(", ")}) }`);
|
|
438
440
|
}
|
|
439
441
|
writeNativeMethodDeclaration(method) {
|
|
440
442
|
let name = method.name;
|
|
@@ -446,7 +448,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
446
448
|
return this.makeString(`${value.asString()}.value`);
|
|
447
449
|
}
|
|
448
450
|
makeAssign(variableName, type, expr, isDeclared = true, isConst = true) {
|
|
449
|
-
return new CJAssignStatement(variableName, type, expr, isDeclared, isConst);
|
|
451
|
+
return new CJAssignStatement(this.escapeKeyword(variableName), type, expr, isDeclared, isConst);
|
|
450
452
|
}
|
|
451
453
|
makeClassInit(type, parameters) {
|
|
452
454
|
throw new Error(`makeClassInit`);
|
|
@@ -501,13 +503,13 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
501
503
|
return new CJMapForEachStatement(map, key, value, op);
|
|
502
504
|
}
|
|
503
505
|
makeDefinedCheck(value) {
|
|
504
|
-
return new CJCheckDefinedExpression(value);
|
|
506
|
+
return new CJCheckDefinedExpression(this.escapeKeyword(value));
|
|
505
507
|
}
|
|
506
508
|
makeNewObject(objectName, params = []) {
|
|
507
509
|
return new CJNewObjectExpression(objectName, params);
|
|
508
510
|
}
|
|
509
511
|
writePrintLog(message) {
|
|
510
|
-
this.print(`println("${message}")`);
|
|
512
|
+
this.print(`println(\"${message}\")`);
|
|
511
513
|
}
|
|
512
514
|
makeCast(value, node, options) {
|
|
513
515
|
var _a;
|
|
@@ -526,10 +528,10 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
526
528
|
return this.makeString("Option.None");
|
|
527
529
|
}
|
|
528
530
|
makeUnwrapOptional(expression) {
|
|
529
|
-
return new CJMatchExpression(expression, [this.makeString(`Some(unwrap_value)`)], [this.makeString(`unwrap_value`)], this.indentDepth());
|
|
531
|
+
return new CJMatchExpression(this.escapeKeyword(expression.asString()), [this.makeString(`Some(unwrap_value)`)], [this.makeString(`unwrap_value`)], this.indentDepth());
|
|
530
532
|
}
|
|
531
533
|
makeValueFromOption(value, destinationConvertor) {
|
|
532
|
-
return this.makeString(
|
|
534
|
+
return this.makeString(this.escapeKeyword(value));
|
|
533
535
|
}
|
|
534
536
|
makeRuntimeType(rt) {
|
|
535
537
|
return this.makeString(`RuntimeType.${RuntimeType[rt]}.ordinal`);
|
|
@@ -589,7 +591,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
589
591
|
pushNamespace(namespace, options) { }
|
|
590
592
|
popNamespace(options) { }
|
|
591
593
|
castToInt(value, bitness) {
|
|
592
|
-
return `Int${bitness}(${value})`;
|
|
594
|
+
return `Int${bitness}(${this.escapeKeyword(value)})`;
|
|
593
595
|
}
|
|
594
596
|
castToBoolean(value) {
|
|
595
597
|
return `if (${value}) { Int32(1) } else { Int32(0) }`;
|
|
@@ -42,7 +42,7 @@ export declare abstract class CLikeLanguageWriter extends LanguageWriter {
|
|
|
42
42
|
isDeclare?: boolean;
|
|
43
43
|
}, op: (writer: LanguageWriter) => void): void;
|
|
44
44
|
writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
45
|
-
|
|
45
|
+
protected writeDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[], postfix?: string): void;
|
|
46
46
|
protected stringifyMethodReturnType(type: idl.IDLType, _?: PrintHint): string;
|
|
47
47
|
protected stringifyMethodArgType(type: idl.IDLType, _?: PrintHint): string;
|
|
48
48
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IDLContainerType, IDLEnum, IDLNode, IDLType, IDLTypedef } from '../../idl';
|
|
2
2
|
import { ArgConvertor, BaseArgConvertor } from "../ArgConvertors";
|
|
3
3
|
import { PrimitiveTypeList } from "../../peer-generation/PrimitiveType";
|
|
4
|
-
import { AssignStatement, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, MakeRefOptions, Method, PrintHint, MethodModifier, MethodSignature, NamedMethodSignature, ObjectArgs } from "../LanguageWriter";
|
|
4
|
+
import { AssignStatement, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, MakeRefOptions, Method, PrintHint, MethodModifier, MethodSignature, NamedMethodSignature, ObjectArgs, DelegationCall, MethodStaticCallExpression } from "../LanguageWriter";
|
|
5
5
|
import { CLikeLanguageWriter } from "./CLikeLanguageWriter";
|
|
6
6
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
7
7
|
import { RuntimeType } from "../common";
|
|
@@ -23,6 +23,9 @@ export declare class CppPointerPropertyAccessExpression implements LanguageExpre
|
|
|
23
23
|
constructor(expression: string, name: string);
|
|
24
24
|
asString(): string;
|
|
25
25
|
}
|
|
26
|
+
export declare class CPPMethodStaticCallExpression extends MethodStaticCallExpression {
|
|
27
|
+
asString(): string;
|
|
28
|
+
}
|
|
26
29
|
export declare class CppAssignStatement extends AssignStatement {
|
|
27
30
|
variableName: string;
|
|
28
31
|
type: IDLType | undefined;
|
|
@@ -36,16 +39,21 @@ export declare class CppAssignStatement extends AssignStatement {
|
|
|
36
39
|
export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
37
40
|
private primitivesTypes;
|
|
38
41
|
protected typeConvertor: IdlNameConvertor;
|
|
42
|
+
protected classMode: 'normal' | 'detached';
|
|
43
|
+
protected currentClass: string[];
|
|
39
44
|
constructor(printer: IndentedPrinter, resolver: ReferenceResolver, typeConvertor: IdlNameConvertor, primitivesTypes: PrimitiveTypeList);
|
|
45
|
+
changeModeTo(mode: typeof this.classMode): void;
|
|
40
46
|
getNodeName(type: IDLNode): string;
|
|
41
47
|
fork(options?: {
|
|
42
48
|
resolver?: ReferenceResolver;
|
|
43
49
|
}): LanguageWriter;
|
|
50
|
+
protected writeDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[], postfix?: string): void;
|
|
44
51
|
writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[]): void;
|
|
45
52
|
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[]): void;
|
|
46
53
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
54
|
+
writeStaticMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
47
55
|
writeFieldDeclaration(name: string, type: IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
48
|
-
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void,
|
|
56
|
+
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, delegationCall?: DelegationCall, modifiers?: MethodModifier[]): void;
|
|
49
57
|
writeProperty(propName: string, propType: IDLType, modifiers: FieldModifier[], getter?: {
|
|
50
58
|
method: Method;
|
|
51
59
|
op: () => void;
|
|
@@ -84,6 +92,7 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
84
92
|
makeUnionSelector(value: string, valueType: string): LanguageStatement;
|
|
85
93
|
makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, type: string, convertorIndex: number): LanguageExpression;
|
|
86
94
|
makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index: number): LanguageExpression;
|
|
95
|
+
makeStaticMethodCall(receiver: string, method: string, params: LanguageExpression[], nullable?: boolean): LanguageExpression;
|
|
87
96
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
88
97
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
89
98
|
makeArrayInit(type: IDLContainerType): LanguageExpression;
|