ifc-expressions
Version:
Parsing and evaluation of IFC expressions
44 lines (43 loc) • 1.89 kB
JavaScript
;
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