@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
27 lines • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.S7DispatchSeparator = void 0;
exports.processS7Dispatch = processS7Dispatch;
const known_call_handling_1 = require("../known-call-handling");
const identifier_1 = require("../../../../../environments/identifier");
const built_in_proc_name_1 = require("../../../../../environments/built-in-proc-name");
/** Used to separate S7 dispatch info in identifiers */
exports.S7DispatchSeparator = '﹕s3﹕';
/**
* Process an S7 generic dispatch call like `S7_dispatch`.
*/
function processS7Dispatch(name, args, rootId, data) {
if (!('currentS7name' in data) || !Array.isArray(data.currentS7name)) {
return (0, known_call_handling_1.processKnownFunctionCall)({ name, args, rootId, data, origin: built_in_proc_name_1.BuiltInProcName.S7Dispatch }).information;
}
const info = (0, known_call_handling_1.processKnownFunctionCall)({ name, forceArgs: 'all', args, rootId, data, origin: built_in_proc_name_1.BuiltInProcName.S7Dispatch }).information;
for (const id of data.currentS7name) {
if (typeof id === 'string') {
const newIn = info.in.slice();
newIn.push({ nodeId: rootId, name: id, cds: data.cds, type: identifier_1.ReferenceType.S7MethodPrefix });
info.in = newIn;
}
}
return info;
}
//# sourceMappingURL=built-in-s-seven-dispatch.js.map