ifc-expressions
Version:
Parsing and evaluation of IFC expressions
33 lines (32 loc) • 1.32 kB
JavaScript
import { Func } from "../Func.js";
import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
import { StringValue } from "../../../value/StringValue.js";
import { Type } from "../../../type/Types.js";
import { IfcDateTimeValue } from "../../../value/IfcDateTimeValue.js";
import { FuncArgIfcDateTimeString } from "../arg/FuncArgIfcDateTimeString.js";
import { IfcTimeStampValue } from "../../../value/IfcTimeStampValue.js";
import { FuncArgUnion } from "../arg/FuncArgUnion.js";
import { FuncArgIfcTimeStamp } from "../arg/FuncArgIfcTimeStamp.js";
export class TOIFCDATETIME extends Func {
constructor() {
super("TOIFCDATETIME", [
FuncArgUnion.of(true, "pointInTime", [
FuncArgIfcDateTimeString,
FuncArgIfcTimeStamp,
]),
]);
}
calculateResult(callingExpr, evaluatedArguments) {
const value = evaluatedArguments.get("pointInTime");
if (value instanceof StringValue) {
return new ExprEvalSuccessObj(IfcDateTimeValue.of(value.getValue()));
}
else if (value instanceof IfcTimeStampValue) {
return new ExprEvalSuccessObj(value.toIfcDateTimeValue());
}
}
getReturnType(argumentTypes) {
return Type.IFC_DATE_TIME;
}
}
//# sourceMappingURL=TOIFCDATETIME.js.map