UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

80 lines (75 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.bypass = void 0; var _Node = _interopRequireDefault(require("./Node.js")); var _TSLCore = require("../tsl/TSLCore.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * The class generates the code of a given node but returns another node in the output. * This can be used to call a method or node that does not return a value, i.e. * type `void` on an input where returning a value is required. Example: * * ```js * material.colorNode = myColor.bypass( runVoidFn() ) *``` * * @augments Node */ class BypassNode extends _Node.default { static get type() { return 'BypassNode'; } /** * Constructs a new bypass node. * * @param {Node} outputNode - The output node. * @param {Node} callNode - The call node. */ constructor(outputNode, callNode) { super(); /** * This flag can be used for type testing. * * @type {boolean} * @readonly * @default true */ this.isBypassNode = true; /** * The output node. * * @type {Node} */ this.outputNode = outputNode; /** * The call node. * * @type {Node} */ this.callNode = callNode; } getNodeType(builder) { return this.outputNode.getNodeType(builder); } generate(builder) { const snippet = this.callNode.build(builder, 'void'); if (snippet !== '') { builder.addLineFlowCode(snippet, this); } return this.outputNode.build(builder); } } var _default = exports.default = BypassNode; /** * TSL function for creating a bypass node. * * @tsl * @function * @param {Node} outputNode - The output node. * @param {Node} callNode - The call node. * @returns {BypassNode} */ const bypass = exports.bypass = /*@__PURE__*/(0, _TSLCore.nodeProxy)(BypassNode).setParameterLength(2); (0, _TSLCore.addMethodChaining)('bypass', bypass);