UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

32 lines (31 loc) 1.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AT = void 0; const Func_js_1 = require("../Func.js"); const ExprEvalResult_js_1 = require("../../ExprEvalResult.js"); const Types_js_1 = require("../../../type/Types.js"); const FuncArgNumeric_js_1 = require("../arg/FuncArgNumeric.js"); const FuncArgArray_js_1 = require("../arg/FuncArgArray.js"); const TupleType_js_1 = require("../../../type/TupleType.js"); class AT extends Func_js_1.Func { constructor() { super("AT", [ new FuncArgArray_js_1.FuncArgArray(true, "input"), new FuncArgNumeric_js_1.FuncArgNumeric(true, "index"), ]); } calculateResult(callingExpr, evaluatedArguments) { const inputArray = evaluatedArguments.get("input").getValue(); const index = evaluatedArguments.get("index").getValue(); return new ExprEvalResult_js_1.ExprEvalSuccessObj(inputArray.at(index.toNumber())); } getReturnType(argumentTypes) { const arrType = argumentTypes[0]; if (arrType instanceof TupleType_js_1.TupleType) { return Types_js_1.Types.or(...arrType.getTypes()); } return arrType.getElementType(); } } exports.AT = AT; //# sourceMappingURL=AT.js.map