UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

44 lines (43 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EXISTS = 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 BooleanValue_js_1 = require("../../../value/BooleanValue.js"); const FuncArgObjectAccessor_js_1 = require("../arg/FuncArgObjectAccessor.js"); class EXISTS extends Func_js_1.Func { constructor() { super("EXISTS", [ new FuncArgObjectAccessor_js_1.FuncArgObjectAccessor(true, EXISTS.KEY_OBJECT, Types_js_1.Type.IFC_OBJECT_REF), ]); } getReturnType(argumentTypes) { return Types_js_1.Type.BOOLEAN; } calculateResult(callingExpr, evaluatedArguments) { return undefined; // does not get called } evaluate(callingExpr, funcArgs) { const args = this.getArgumentValues(callingExpr, funcArgs); if ((0, ExprEvalResult_js_1.isExprEvalError)(args)) { return args; } const arg = args.get(EXISTS.KEY_OBJECT); if ((0, ExprEvalResult_js_1.isExprEvalError)(arg)) { if (arg.status === ExprEvalResult_js_1.ExprEvalStatus.NOT_FOUND || arg.status === ExprEvalResult_js_1.ExprEvalStatus.IFC_PROPERTY_NOT_FOUND || arg.status === ExprEvalResult_js_1.ExprEvalStatus.IFC_TYPE_OBJECT_NOT_FOUND || arg.status === ExprEvalResult_js_1.ExprEvalStatus.IFC_PROPERTY_SET_NOT_FOUND) { return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(false)); } else { return arg; } } return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(true)); } } exports.EXISTS = EXISTS; EXISTS.KEY_OBJECT = "object"; //# sourceMappingURL=EXISTS.js.map