@idlizer/core 2.0.23 → 2.0.25
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/LanguageWriters/ArgConvertors.d.ts +9 -0
- package/build/lib/src/LanguageWriters/ArgConvertors.js +24 -1
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +7 -1
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +14 -1
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +2 -0
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +1 -1
- package/build/lib/src/idl.d.ts +1 -0
- package/build/lib/src/idl.js +12 -2
- package/build/lib/src/peer-generation/Materialized.d.ts +1 -1
- package/build/lib/src/peer-generation/Materialized.js +11 -7
- package/build/lib/src/peer-generation/PeerLibrary.js +2 -1
- package/build/lib/src/peer-generation/PeerMethod.d.ts +2 -1
- package/build/lib/src/peer-generation/PeerMethod.js +1 -1
- package/package.json +2 -2
|
@@ -106,6 +106,15 @@ export declare class NumericConvertor extends BaseArgConvertor {
|
|
|
106
106
|
interopType(): idl.IDLType;
|
|
107
107
|
isPointerType(): boolean;
|
|
108
108
|
}
|
|
109
|
+
export declare class BigIntToU64Convertor extends BaseArgConvertor {
|
|
110
|
+
constructor(param: string);
|
|
111
|
+
convertorArg(param: string, writer: LanguageWriter): string;
|
|
112
|
+
convertorSerialize(param: string, value: string, printer: LanguageWriter): void;
|
|
113
|
+
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
|
|
114
|
+
nativeType(): idl.IDLType;
|
|
115
|
+
interopType(): idl.IDLType;
|
|
116
|
+
isPointerType(): boolean;
|
|
117
|
+
}
|
|
109
118
|
export declare class PointerConvertor extends BaseArgConvertor {
|
|
110
119
|
constructor(param: string);
|
|
111
120
|
convertorArg(param: string, writer: LanguageWriter): string;
|
|
@@ -242,6 +242,29 @@ export class NumericConvertor extends BaseArgConvertor {
|
|
|
242
242
|
return false;
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
|
+
export class BigIntToU64Convertor extends BaseArgConvertor {
|
|
246
|
+
constructor(param) {
|
|
247
|
+
super(idl.IDLBigintType, [RuntimeType.BIGINT], false, false, param);
|
|
248
|
+
}
|
|
249
|
+
convertorArg(param, writer) {
|
|
250
|
+
return writer.escapeKeyword(param);
|
|
251
|
+
}
|
|
252
|
+
convertorSerialize(param, value, printer) {
|
|
253
|
+
printer.writeMethodCall(`${param}Serializer`, "writeUInt64", [value]);
|
|
254
|
+
}
|
|
255
|
+
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
256
|
+
return assigneer(writer.makeCast(writer.makeString(`${deserializerName}.readUInt64()`), this.idlType, { optional: false }));
|
|
257
|
+
}
|
|
258
|
+
nativeType() {
|
|
259
|
+
return idl.IDLU64Type;
|
|
260
|
+
}
|
|
261
|
+
interopType() {
|
|
262
|
+
return idl.IDLU64Type;
|
|
263
|
+
}
|
|
264
|
+
isPointerType() {
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
245
268
|
export class PointerConvertor extends BaseArgConvertor {
|
|
246
269
|
constructor(param) {
|
|
247
270
|
// check numericPrimitiveTypes.include(type)
|
|
@@ -887,7 +910,7 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
887
910
|
throw new Error("Must never be used");
|
|
888
911
|
}
|
|
889
912
|
isPointerType() {
|
|
890
|
-
return
|
|
913
|
+
return false;
|
|
891
914
|
}
|
|
892
915
|
unionDiscriminator(value, index, writer, duplicates) {
|
|
893
916
|
if (idl.isInterface(this.declaration)) {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as idl from '../../idl';
|
|
2
2
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
3
|
-
import { InteropConvertor } from './InteropConvertors';
|
|
3
|
+
import { InteropConvertor, InteropReturnTypeConvertor } from './InteropConvertors';
|
|
4
4
|
import { InteropArgConvertor } from './InteropConvertors';
|
|
5
|
+
import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
|
|
5
6
|
export declare class CppInteropConvertor extends InteropConvertor implements IdlNameConvertor {
|
|
6
7
|
private unwrap;
|
|
7
8
|
convert(node: idl.IDLNode): string;
|
|
@@ -11,4 +12,9 @@ export declare class CppInteropArgConvertor extends InteropArgConvertor {
|
|
|
11
12
|
convertOptional(type: idl.IDLOptionalType): string;
|
|
12
13
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
13
14
|
}
|
|
15
|
+
export declare class CppReturnTypeConvertor extends InteropReturnTypeConvertor {
|
|
16
|
+
protected resolver: ReferenceResolver;
|
|
17
|
+
constructor(resolver: ReferenceResolver);
|
|
18
|
+
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
19
|
+
}
|
|
14
20
|
//# sourceMappingURL=CppConvertors.d.ts.map
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
16
|
import { generatorConfiguration } from "../../config";
|
|
17
|
-
import { InteropConvertor } from './InteropConvertors';
|
|
17
|
+
import { InteropConvertor, InteropReturnTypeConvertor } from './InteropConvertors';
|
|
18
18
|
import { PrimitiveTypesInstance } from '../../peer-generation/PrimitiveType';
|
|
19
19
|
import { InteropArgConvertor } from './InteropConvertors';
|
|
20
|
+
import { isMaterialized } from '../../peer-generation/Materialized';
|
|
20
21
|
export class CppInteropConvertor extends InteropConvertor {
|
|
21
22
|
unwrap(type, result) {
|
|
22
23
|
const conf = generatorConfiguration();
|
|
@@ -55,4 +56,16 @@ export class CppInteropArgConvertor extends InteropArgConvertor {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
CppInteropArgConvertor.INSTANCE = new CppInteropArgConvertor();
|
|
59
|
+
export class CppReturnTypeConvertor extends InteropReturnTypeConvertor {
|
|
60
|
+
constructor(resolver) {
|
|
61
|
+
super();
|
|
62
|
+
this.resolver = resolver;
|
|
63
|
+
}
|
|
64
|
+
convertTypeReference(type) {
|
|
65
|
+
const resolved = this.resolver.resolveTypeReference(type);
|
|
66
|
+
if (resolved && idl.isInterface(resolved) && isMaterialized(resolved, this.resolver))
|
|
67
|
+
return generatorConfiguration().param("TypePrefix") + type.name;
|
|
68
|
+
return super.convertTypeReference(type);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
58
71
|
//# sourceMappingURL=CppConvertors.js.map
|
|
@@ -135,6 +135,7 @@ export class InteropConvertor {
|
|
|
135
135
|
case idl.IDLNumberType: return this.make(`Number`);
|
|
136
136
|
case idl.IDLStringType: return this.make(`String`);
|
|
137
137
|
case idl.IDLBooleanType: return this.make(`Boolean`);
|
|
138
|
+
case idl.IDLBigintType: return this.make(`UInt64`); // TODO add arbitrary precision numeric type
|
|
138
139
|
case idl.IDLPointerType: return this.make('NativePointer');
|
|
139
140
|
case idl.IDLUnknownType:
|
|
140
141
|
case idl.IDLCustomObjectType:
|
|
@@ -211,6 +212,7 @@ export class InteropReturnTypeConvertor {
|
|
|
211
212
|
case idl.IDLF64Type:
|
|
212
213
|
case idl.IDLNumberType: return PrimitiveTypesInstance.Int32.getText();
|
|
213
214
|
case idl.IDLBooleanType: return PrimitiveTypesInstance.Boolean.getText();
|
|
215
|
+
case idl.IDLBigintType: return PrimitiveTypesInstance.Int64.getText();
|
|
214
216
|
case idl.IDLAnyType:
|
|
215
217
|
case idl.IDLBufferType:
|
|
216
218
|
case idl.IDLStringType:
|
|
@@ -152,7 +152,7 @@ class CPPThrowErrorStatement {
|
|
|
152
152
|
this.message = message;
|
|
153
153
|
}
|
|
154
154
|
write(writer) {
|
|
155
|
-
writer.print(`
|
|
155
|
+
writer.print(`INTEROP_FATAL("${this.message}");`);
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
////////////////////////////////////////////////////////////////
|
package/build/lib/src/idl.d.ts
CHANGED
|
@@ -302,6 +302,7 @@ export declare function getFQName(a: IDLEntry): string;
|
|
|
302
302
|
export declare function createVersion(value: string[], extendedAttributes?: IDLExtendedAttribute[], fileName?: string): IDLVersion;
|
|
303
303
|
export declare function fetchNamespaceFrom(pointOfView?: IDLNode): IDLNamespace | undefined;
|
|
304
304
|
export declare function createReferenceType(name: string, typeArguments?: IDLType[], pointOfView?: IDLNode): IDLReferenceType;
|
|
305
|
+
export declare function createReferenceType(source: IDLEntry, typeArguments?: IDLType[]): IDLReferenceType;
|
|
305
306
|
export declare function createUnspecifiedGenericType(name: string, typeArguments: IDLType[]): IDLUnspecifiedGenericType;
|
|
306
307
|
export declare function entityToType(entity: IDLNode): IDLType;
|
|
307
308
|
export declare function createContainerType(container: IDLContainerKind, element: IDLType[]): IDLContainerType;
|
package/build/lib/src/idl.js
CHANGED
|
@@ -409,12 +409,22 @@ export function fetchNamespaceFrom(pointOfView) {
|
|
|
409
409
|
}
|
|
410
410
|
return undefined;
|
|
411
411
|
}
|
|
412
|
-
export function createReferenceType(
|
|
412
|
+
export function createReferenceType(nameOrSource, typeArguments, pointOfView) {
|
|
413
|
+
let name;
|
|
414
|
+
let namespace;
|
|
415
|
+
if (typeof nameOrSource === 'string') {
|
|
416
|
+
name = nameOrSource;
|
|
417
|
+
namespace = fetchNamespaceFrom(pointOfView);
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
name = nameOrSource.name;
|
|
421
|
+
namespace = fetchNamespaceFrom(nameOrSource);
|
|
422
|
+
}
|
|
413
423
|
return {
|
|
414
424
|
kind: IDLKind.ReferenceType,
|
|
415
425
|
name,
|
|
416
426
|
typeArguments,
|
|
417
|
-
namespace:
|
|
427
|
+
namespace: namespace,
|
|
418
428
|
_idlNodeBrand: innerIdlSymbol,
|
|
419
429
|
_idlTypeBrand: innerIdlSymbol,
|
|
420
430
|
_idlNamedNodeBrand: innerIdlSymbol,
|
|
@@ -19,7 +19,7 @@ export declare class MaterializedMethod extends PeerMethod {
|
|
|
19
19
|
get peerMethodName(): string;
|
|
20
20
|
get implNamespaceName(): string;
|
|
21
21
|
get toStringName(): string;
|
|
22
|
-
|
|
22
|
+
dummyReturnValue(resolver: ReferenceResolver): string | undefined;
|
|
23
23
|
get receiverType(): string;
|
|
24
24
|
get apiCall(): string;
|
|
25
25
|
get apiKind(): string;
|
|
@@ -14,17 +14,20 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { generatorConfiguration } from '../config';
|
|
16
16
|
import * as idl from '../idl';
|
|
17
|
+
import { CppReturnTypeConvertor } from '../LanguageWriters/convertors/CppConvertors';
|
|
17
18
|
import { copyMethod, Method, MethodModifier, NamedMethodSignature } from '../LanguageWriters/LanguageWriter';
|
|
18
19
|
import { capitalize } from '../util';
|
|
19
20
|
import { isBuilderClass } from './BuilderClass';
|
|
20
21
|
import { qualifiedName } from './idl/common';
|
|
21
22
|
import { PeerMethod } from './PeerMethod';
|
|
22
23
|
export function isMaterialized(declaration, resolver) {
|
|
23
|
-
if (idl.
|
|
24
|
-
isBuilderClass(declaration) ||
|
|
25
|
-
declaration.subkind === idl.IDLInterfaceSubkind.AnonymousInterface ||
|
|
26
|
-
declaration.subkind === idl.IDLInterfaceSubkind.Tuple) {
|
|
24
|
+
if (!idl.isInterfaceSubkind(declaration) && !idl.isClassSubkind(declaration))
|
|
27
25
|
return false;
|
|
26
|
+
if (idl.isHandwritten(declaration) || isBuilderClass(declaration))
|
|
27
|
+
return false;
|
|
28
|
+
for (const forceMaterialized of generatorConfiguration().param("forceMaterialized")) {
|
|
29
|
+
if (declaration.name == forceMaterialized)
|
|
30
|
+
return true;
|
|
28
31
|
}
|
|
29
32
|
for (const ignore of generatorConfiguration().param("ignoreMaterialized")) {
|
|
30
33
|
if (declaration.name.endsWith(ignore))
|
|
@@ -32,7 +35,7 @@ export function isMaterialized(declaration, resolver) {
|
|
|
32
35
|
}
|
|
33
36
|
// A materialized class is a class or an interface with methods
|
|
34
37
|
// excluding components and related classes
|
|
35
|
-
if (declaration.methods.length > 0)
|
|
38
|
+
if (declaration.methods.length > 0 || declaration.constructors.length > 0)
|
|
36
39
|
return true;
|
|
37
40
|
// Or a class or an interface derived from materialized class
|
|
38
41
|
if (idl.hasSuperType(declaration)) {
|
|
@@ -72,7 +75,7 @@ export class MaterializedMethod extends PeerMethod {
|
|
|
72
75
|
default: return super.toStringName;
|
|
73
76
|
}
|
|
74
77
|
}
|
|
75
|
-
|
|
78
|
+
dummyReturnValue(resolver) {
|
|
76
79
|
var _a;
|
|
77
80
|
if (this.method.name === "ctor")
|
|
78
81
|
return `(${this.originalParentName}Peer*) 100`;
|
|
@@ -85,7 +88,8 @@ export class MaterializedMethod extends PeerMethod {
|
|
|
85
88
|
if (this.method.signature.returnType === idl.IDLBooleanType) {
|
|
86
89
|
return '0';
|
|
87
90
|
}
|
|
88
|
-
|
|
91
|
+
const convertor = new CppReturnTypeConvertor(resolver);
|
|
92
|
+
return `(${convertor.convert(this.returnType)}) 300`;
|
|
89
93
|
}
|
|
90
94
|
if (idl.isReferenceType(this.method.signature.returnType)) {
|
|
91
95
|
return "{}";
|
|
@@ -16,7 +16,7 @@ import { warn } from 'console';
|
|
|
16
16
|
import * as idl from '../idl';
|
|
17
17
|
import { Language } from '../Language';
|
|
18
18
|
import { createLanguageWriter } from '../LanguageWriters';
|
|
19
|
-
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, } from "../LanguageWriters/ArgConvertors";
|
|
19
|
+
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, } from "../LanguageWriters/ArgConvertors";
|
|
20
20
|
import { InteropNameConvertor } from '../LanguageWriters/convertors/InteropConvertors';
|
|
21
21
|
import { CJTypeNameConvertor } from '../LanguageWriters/convertors/CJConvertors';
|
|
22
22
|
import { CppInteropConvertor } from '../LanguageWriters/convertors/CppConvertors';
|
|
@@ -185,6 +185,7 @@ export class PeerLibrary {
|
|
|
185
185
|
case idl.IDLF16Type: return new NumericConvertor(param, type);
|
|
186
186
|
case idl.IDLF32Type: return new NumericConvertor(param, type);
|
|
187
187
|
case idl.IDLF64Type: return new NumericConvertor(param, type);
|
|
188
|
+
case idl.IDLBigintType: return new BigIntToU64Convertor(param);
|
|
188
189
|
case idl.IDLPointerType: return new PointerConvertor(param);
|
|
189
190
|
case idl.IDLBufferType: return new BufferConvertor(param);
|
|
190
191
|
case idl.IDLBooleanType: return new BooleanConvertor(param);
|
|
@@ -2,6 +2,7 @@ import { IDLType } from "../idl";
|
|
|
2
2
|
import { IdlNameConvertor } from "../LanguageWriters";
|
|
3
3
|
import { ArgConvertor } from "../LanguageWriters/ArgConvertors";
|
|
4
4
|
import { Method } from "../LanguageWriters/LanguageWriter";
|
|
5
|
+
import { ReferenceResolver } from "./ReferenceResolver";
|
|
5
6
|
export declare class PeerMethod {
|
|
6
7
|
originalParentName: string;
|
|
7
8
|
argConvertors: ArgConvertor[];
|
|
@@ -17,7 +18,7 @@ export declare class PeerMethod {
|
|
|
17
18
|
get implNamespaceName(): string;
|
|
18
19
|
get implName(): string;
|
|
19
20
|
get toStringName(): string;
|
|
20
|
-
|
|
21
|
+
dummyReturnValue(resolver: ReferenceResolver): string | undefined;
|
|
21
22
|
get receiverType(): string;
|
|
22
23
|
get apiCall(): string;
|
|
23
24
|
get apiKind(): string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idlizer/core",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.25",
|
|
4
4
|
"description": "",
|
|
5
5
|
"types": "build/lib/src/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"keywords": [],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@koalaui/interop": "1.5.
|
|
37
|
+
"@koalaui/interop": "1.5.1",
|
|
38
38
|
"typescript": "4.9.5",
|
|
39
39
|
"@types/node": "^18.0.0"
|
|
40
40
|
},
|