@idlizer/core 2.1.10-arktscgen-3a → 2.1.10-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/LanguageWriters/ArgConvertors.d.ts +12 -0
- package/build/lib/src/LanguageWriters/ArgConvertors.js +55 -3
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +9 -1
- package/build/lib/src/LanguageWriters/LanguageWriter.js +10 -4
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +1 -1
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +2 -0
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +11 -15
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +0 -3
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +3 -0
- package/build/lib/src/config.d.ts +760 -0
- package/build/lib/src/config.js +7 -0
- package/build/lib/src/formatter.js +5 -2
- package/build/lib/src/from-idl/DtsPrinter.js +2 -2
- package/build/lib/src/from-idl/common.js +2 -2
- package/build/lib/src/from-idl/deserialize.d.ts +3 -7
- package/build/lib/src/from-idl/deserialize.js +64 -38
- package/build/lib/src/from-idl/parser.d.ts +1 -1
- package/build/lib/src/from-idl/parser.js +29 -20
- package/build/lib/src/idl.d.ts +7 -1
- package/build/lib/src/idl.js +54 -10
- package/build/lib/src/index.d.ts +2 -1
- package/build/lib/src/index.js +2 -1
- package/build/lib/src/languageSpecificKeywords.js +1 -1
- package/build/lib/src/peer-generation/PeerLibrary.js +10 -1
- package/build/lib/src/peer-generation/isMaterialized.js +1 -1
- package/build/lib/src/peer-generation/modules.d.ts +2 -0
- package/build/lib/src/peer-generation/modules.js +14 -1
- package/build/lib/src/transformers/GenericTransformer.js +70 -5
- package/build/lib/src/transformers/NullTransformer.d.ts +0 -1
- package/build/lib/src/transformers/NullTransformer.js +1 -2
- package/build/lib/src/transformers/OnSerializeTransformer.d.ts +3 -0
- package/build/lib/src/transformers/OnSerializeTransformer.js +19 -0
- package/build/lib/src/util.d.ts +5 -0
- package/build/lib/src/util.js +13 -2
- package/package.json +5 -5
|
@@ -343,5 +343,17 @@ export declare function generateCallbackKindAccess(callback: idl.IDLCallback, la
|
|
|
343
343
|
export declare function generateCallbackKindValue(callback: idl.IDLCallback): number;
|
|
344
344
|
export declare function generateCallbackAPIArguments(library: LibraryInterface, callback: idl.IDLCallback): string[];
|
|
345
345
|
export declare function maybeTransformManagedCallback(callback: idl.IDLCallback, library: ReferenceResolver): idl.IDLCallback | undefined;
|
|
346
|
+
export declare class TransformOnSerializeConvertor extends BaseArgConvertor {
|
|
347
|
+
protected library: PeerLibrary;
|
|
348
|
+
protected managedDeclaration: idl.IDLEntry;
|
|
349
|
+
protected target: idl.IDLType;
|
|
350
|
+
private targetConvertor;
|
|
351
|
+
constructor(param: string, library: PeerLibrary, managedDeclaration: idl.IDLEntry, target: idl.IDLType);
|
|
352
|
+
isPointerType(): boolean;
|
|
353
|
+
nativeType(): idl.IDLType;
|
|
354
|
+
convertorArg(param: string, writer: LanguageWriter): string;
|
|
355
|
+
convertorSerialize(param: string, value: string, writer: LanguageWriter): LanguageStatement;
|
|
356
|
+
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
|
|
357
|
+
}
|
|
346
358
|
export declare function createOutArgConvertor(library: PeerLibrary, type: idl.IDLType | undefined, otherParams: string[]): ArgConvertor | undefined;
|
|
347
359
|
//# sourceMappingURL=ArgConvertors.d.ts.map
|
|
@@ -17,7 +17,7 @@ import { Language } from "../Language";
|
|
|
17
17
|
import { BlockStatement, PrintHint, StringExpression, MethodModifier, NamedMethodSignature, ProxyStatement, ExpressionStatement } from "./LanguageWriter";
|
|
18
18
|
import { RuntimeType } from "./common";
|
|
19
19
|
import { generatorConfiguration, generatorTypePrefix } from "../config";
|
|
20
|
-
import { capitalize, getExtractor, hashCodeFromString, throwException, warn } from "../util";
|
|
20
|
+
import { capitalize, getExtractor, getTransformer, hashCodeFromString, throwException, warn } from "../util";
|
|
21
21
|
import { UnionRuntimeTypeChecker } from "../peer-generation/unions";
|
|
22
22
|
import { CppConvertor, CppNameConvertor } from "./convertors/CppConvertors";
|
|
23
23
|
import { createEmptyReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
@@ -579,7 +579,7 @@ export class InterfaceConvertor extends BaseArgConvertor {
|
|
|
579
579
|
convertorSerialize(param, value, writer) {
|
|
580
580
|
const accessor = getSerializerName(this.declaration);
|
|
581
581
|
writer.addFeature(accessor, this.library.layout.resolve({ node: this.declaration, role: LayoutNodeRole.SERIALIZER }));
|
|
582
|
-
return writer.makeStatement(writer.makeStaticMethodCall(accessor, 'write', [writer.makeString(`${param}Serializer`), writer.makeString(value)]));
|
|
582
|
+
return writer.makeStatement(writer.makeStaticMethodCall(accessor, 'write', [writer.makeString(`${param}Serializer`), writer.makeString(writer.escapeKeyword(value))]));
|
|
583
583
|
}
|
|
584
584
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
585
585
|
const accessor = getSerializerName(this.declaration);
|
|
@@ -1022,7 +1022,6 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
1022
1022
|
case Language.CPP:
|
|
1023
1023
|
return `static_cast<${generatorTypePrefix()}${qualifiedName(this.declaration, "_", "namespace.name")}>(${param})`;
|
|
1024
1024
|
case Language.JAVA:
|
|
1025
|
-
case Language.KOTLIN:
|
|
1026
1025
|
case Language.CJ:
|
|
1027
1026
|
return `MaterializedBase.toPeerPtr(${writer.escapeKeyword(param)})`;
|
|
1028
1027
|
default:
|
|
@@ -1295,6 +1294,59 @@ class PromiseOutArgConvertor extends BaseArgConvertor {
|
|
|
1295
1294
|
return true;
|
|
1296
1295
|
}
|
|
1297
1296
|
}
|
|
1297
|
+
export class TransformOnSerializeConvertor extends BaseArgConvertor {
|
|
1298
|
+
constructor(param, library, managedDeclaration, target) {
|
|
1299
|
+
const targetConvertor = library.typeConvertor(param, target);
|
|
1300
|
+
super(target, targetConvertor.runtimeTypes, false, targetConvertor.useArray, param);
|
|
1301
|
+
this.library = library;
|
|
1302
|
+
this.managedDeclaration = managedDeclaration;
|
|
1303
|
+
this.target = target;
|
|
1304
|
+
this.targetConvertor = targetConvertor;
|
|
1305
|
+
}
|
|
1306
|
+
isPointerType() {
|
|
1307
|
+
return this.targetConvertor.isPointerType();
|
|
1308
|
+
}
|
|
1309
|
+
nativeType() {
|
|
1310
|
+
return this.targetConvertor.nativeType();
|
|
1311
|
+
}
|
|
1312
|
+
convertorArg(param, writer) {
|
|
1313
|
+
throw new Error("Method not implemented.");
|
|
1314
|
+
}
|
|
1315
|
+
convertorSerialize(param, value, writer) {
|
|
1316
|
+
if (writer.language === Language.CPP) {
|
|
1317
|
+
return this.targetConvertor.convertorSerialize(param, value, writer);
|
|
1318
|
+
}
|
|
1319
|
+
if (idl.isReferenceType(this.target)) {
|
|
1320
|
+
writer.addFeature(this.target);
|
|
1321
|
+
}
|
|
1322
|
+
const transformerInfo = getTransformer(this.library, this.managedDeclaration, this.target);
|
|
1323
|
+
const transformCallExpression = transformerInfo.receiver
|
|
1324
|
+
? writer.makeMethodCall(transformerInfo.receiver, transformerInfo.method, [writer.makeString(value)])
|
|
1325
|
+
: writer.makeFunctionCall(transformerInfo.method, [writer.makeString(value)]);
|
|
1326
|
+
const statements = [
|
|
1327
|
+
writer.makeAssign(`${value}Transformed`, this.target, transformCallExpression, true),
|
|
1328
|
+
this.targetConvertor.convertorSerialize(param, `${value}Transformed`, writer)
|
|
1329
|
+
];
|
|
1330
|
+
return writer.makeBlock(statements, false);
|
|
1331
|
+
}
|
|
1332
|
+
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
1333
|
+
if (writer.language === Language.CPP) {
|
|
1334
|
+
return this.targetConvertor.convertorDeserialize(bufferName, deserializerName, assigneer, writer);
|
|
1335
|
+
}
|
|
1336
|
+
if (idl.isReferenceType(this.target)) {
|
|
1337
|
+
writer.addFeature(this.target);
|
|
1338
|
+
}
|
|
1339
|
+
const targetDeserialize = this.targetConvertor.convertorDeserialize(`${bufferName}D`, deserializerName, (expr) => writer.makeAssign(`${bufferName}Deserialized`, this.target, expr, true), writer);
|
|
1340
|
+
const transformerInfo = getTransformer(this.library, this.target, this.managedDeclaration);
|
|
1341
|
+
const transformCallExpression = transformerInfo.receiver
|
|
1342
|
+
? writer.makeMethodCall(transformerInfo.receiver, transformerInfo.method, [writer.makeString(`${bufferName}Deserialized`)])
|
|
1343
|
+
: writer.makeFunctionCall(transformerInfo.method, [writer.makeString(`${bufferName}Deserialized`)]);
|
|
1344
|
+
return writer.makeBlock([
|
|
1345
|
+
targetDeserialize,
|
|
1346
|
+
assigneer(transformCallExpression)
|
|
1347
|
+
], false);
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1298
1350
|
export function createOutArgConvertor(library, type, otherParams) {
|
|
1299
1351
|
if (type && idl.isContainerType(type) && idl.IDLContainerUtils.isPromise(type)) {
|
|
1300
1352
|
const param = (entropy) => `outputArgumentForReturningPromise${entropy || ''}`;
|
|
@@ -244,7 +244,15 @@ export declare abstract class LanguageWriter {
|
|
|
244
244
|
language: Language);
|
|
245
245
|
indentDepth(): number;
|
|
246
246
|
maybeSemicolon(): string;
|
|
247
|
-
features:
|
|
247
|
+
features: ({
|
|
248
|
+
type: "raw";
|
|
249
|
+
feature: string;
|
|
250
|
+
module: string;
|
|
251
|
+
} | {
|
|
252
|
+
type: "idl";
|
|
253
|
+
node: idl.IDLEntry | idl.IDLReferenceType;
|
|
254
|
+
})[];
|
|
255
|
+
addFeature(node: idl.IDLEntry | idl.IDLReferenceType): void;
|
|
248
256
|
addFeature(feature: string, module: string): void;
|
|
249
257
|
abstract writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isExport?: boolean): void;
|
|
250
258
|
abstract writeEnum(name: string, members: {
|
|
@@ -278,8 +278,11 @@ export class LambdaExpression {
|
|
|
278
278
|
if (this.body) {
|
|
279
279
|
writer.writeStatement(new BlockStatement(this.body, isScoped, false));
|
|
280
280
|
}
|
|
281
|
-
writer.features.forEach((
|
|
282
|
-
|
|
281
|
+
writer.features.forEach((feature) => {
|
|
282
|
+
if (feature.type === "raw")
|
|
283
|
+
this.originalWriter.addFeature(feature.feature, feature.module);
|
|
284
|
+
else
|
|
285
|
+
this.originalWriter.addFeature(feature.node);
|
|
283
286
|
});
|
|
284
287
|
return writer.getOutput()
|
|
285
288
|
.map(line => (line.endsWith('{') || line.endsWith('}') || line.endsWith(';')) ? line : `${line};`)
|
|
@@ -421,8 +424,11 @@ export class LanguageWriter {
|
|
|
421
424
|
return this.printer.indentDepth();
|
|
422
425
|
}
|
|
423
426
|
maybeSemicolon() { return ";"; }
|
|
424
|
-
addFeature(
|
|
425
|
-
|
|
427
|
+
addFeature(featureOrNode, module) {
|
|
428
|
+
if (typeof featureOrNode === "string")
|
|
429
|
+
this.features.push({ type: "raw", feature: featureOrNode, module: module });
|
|
430
|
+
else
|
|
431
|
+
this.features.push({ type: "idl", node: featureOrNode });
|
|
426
432
|
}
|
|
427
433
|
// version of makeCast which uses TypeCheck.typeCast<T>(value) call for ETS language writer
|
|
428
434
|
// Use it only if TypeChecker class is added as import to the generated file
|
|
@@ -149,7 +149,7 @@ export class CJTypeNameConvertor {
|
|
|
149
149
|
throw new Error(`Unsupported IDL primitive ${idl.DebugUtils.debugPrintType(type)}`);
|
|
150
150
|
}
|
|
151
151
|
callbackType(decl) {
|
|
152
|
-
const params = decl.parameters.map(it => `${CJKeywords.has(it.name) ? it.name.concat("_") : it.name}: ${this.convert(it.type)}`);
|
|
152
|
+
const params = decl.parameters.map(it => `${CJKeywords.has(it.name) ? it.name.concat("_") : it.name}: ${it.isOptional ? "?" : ""}${this.convert(it.type)}`);
|
|
153
153
|
return `((${params.join(", ")}) -> ${this.convert(decl.returnType)})`;
|
|
154
154
|
}
|
|
155
155
|
productType(decl, isTuple, includeFieldNames) {
|
|
@@ -158,6 +158,8 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
158
158
|
popNamespace(options: {
|
|
159
159
|
ident: boolean;
|
|
160
160
|
}): void;
|
|
161
|
+
instanceOf(value: string, type: idl.IDLType): LanguageExpression;
|
|
162
|
+
discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
|
|
161
163
|
castToInt(value: string, bitness: 8 | 32): string;
|
|
162
164
|
castToBoolean(value: string): string;
|
|
163
165
|
}
|
|
@@ -324,21 +324,6 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
324
324
|
this.writeDeclaration(name, signature, modifiers);
|
|
325
325
|
}
|
|
326
326
|
writeConstructorImplementation(className, signature, op, delegationCall, modifiers) {
|
|
327
|
-
var _a;
|
|
328
|
-
let i = 1;
|
|
329
|
-
while (signature.isArgOptional(signature.args.length - i)) {
|
|
330
|
-
let smallerSignature = signature.args.slice(0, -i);
|
|
331
|
-
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(", ")}) {`);
|
|
332
|
-
this.pushIndent();
|
|
333
|
-
let lessArgs = (_a = signature.args) === null || _a === void 0 ? void 0 : _a.slice(0, -i).map((_, i) => this.escapeKeyword(signature.argName(i))).join(', ');
|
|
334
|
-
for (let idx = 0; idx < i; idx++) {
|
|
335
|
-
lessArgs = lessArgs.concat(`${i == signature.args.length && idx == 0 ? '' : ', '}Option.None`);
|
|
336
|
-
}
|
|
337
|
-
this.print(`this(${lessArgs})`);
|
|
338
|
-
this.popIndent();
|
|
339
|
-
this.printer.print(`}`);
|
|
340
|
-
i += 1;
|
|
341
|
-
}
|
|
342
327
|
this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}init(${signature.args.map((it, index) => `${this.escapeKeyword(signature.argName(index))}: ${this.getNodeName(idl.maybeOptional(it, signature.isArgOptional(index)))}`).join(", ")}) {`);
|
|
343
328
|
this.pushIndent();
|
|
344
329
|
if (delegationCall) {
|
|
@@ -574,6 +559,17 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
574
559
|
}
|
|
575
560
|
pushNamespace(namespace, options) { }
|
|
576
561
|
popNamespace(options) { }
|
|
562
|
+
instanceOf(value, type) {
|
|
563
|
+
return this.makeString(`${value} is ${this.getNodeName(type)}`);
|
|
564
|
+
}
|
|
565
|
+
discriminate(value, index, type, runtimeTypes) {
|
|
566
|
+
if (runtimeTypes.includes(RuntimeType.UNDEFINED)) {
|
|
567
|
+
return `${value}.isNone()`;
|
|
568
|
+
}
|
|
569
|
+
else {
|
|
570
|
+
return `${value}.getSelector() == ${index}`;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
577
573
|
castToInt(value, bitness) {
|
|
578
574
|
return `Int${bitness}(${this.escapeKeyword(value)})`;
|
|
579
575
|
}
|
|
@@ -176,9 +176,6 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
176
176
|
this.arrayConvertor = arrayConvertor;
|
|
177
177
|
}
|
|
178
178
|
pushNamespace(namespace, options) {
|
|
179
|
-
if (options.isDefault) {
|
|
180
|
-
this.print(`export default ${namespace}`);
|
|
181
|
-
}
|
|
182
179
|
super.pushNamespace(namespace, options);
|
|
183
180
|
}
|
|
184
181
|
fork(options) {
|
|
@@ -127,6 +127,9 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
127
127
|
pushNamespace(namespace, options) {
|
|
128
128
|
this.namespaceStack.push(namespace);
|
|
129
129
|
const declaredPrefix = options.isDeclared ? "declare " : "";
|
|
130
|
+
if (options.isDefault) {
|
|
131
|
+
this.print(`export default ${namespace}`);
|
|
132
|
+
}
|
|
130
133
|
this.print(`export ${declaredPrefix}namespace ${namespace} {`);
|
|
131
134
|
if (options.ident)
|
|
132
135
|
this.pushIndent();
|