ifc-expressions
Version:
Parsing and evaluation of IFC expressions
54 lines (53 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ADDDURATION = void 0;
const Func_js_1 = require("../Func.js");
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
const StringValue_js_1 = require("../../../value/StringValue.js");
const IfcDateTimeValue_js_1 = require("../../../value/IfcDateTimeValue.js");
const IfcTimeStampValue_js_1 = require("../../../value/IfcTimeStampValue.js");
const FuncArgIfcDateTime_js_1 = require("../arg/FuncArgIfcDateTime.js");
const FuncArgIfcDuration_js_1 = require("../arg/FuncArgIfcDuration.js");
const IfcDurationValue_js_1 = require("../../../value/IfcDurationValue.js");
const FuncArgUnion_js_1 = require("../arg/FuncArgUnion.js");
const FuncArgIfcTimeStamp_js_1 = require("../arg/FuncArgIfcTimeStamp.js");
const FuncArgIfcDurationString_js_1 = require("../arg/FuncArgIfcDurationString.js");
class ADDDURATION extends Func_js_1.Func {
constructor() {
super("ADDDURATION", [
FuncArgUnion_js_1.FuncArgUnion.of(true, "pointInTime", [
FuncArgIfcTimeStamp_js_1.FuncArgIfcTimeStamp,
FuncArgIfcDateTime_js_1.FuncArgIfcDateTime,
]),
FuncArgUnion_js_1.FuncArgUnion.of(true, "duration", [
FuncArgIfcDuration_js_1.FuncArgIfcDuration,
FuncArgIfcDurationString_js_1.FuncArgIfcDurationString,
]),
]);
}
calculateResult(callingExpr, evaluatedArguments) {
const durationArg = evaluatedArguments.get("duration");
var duration;
if (durationArg instanceof IfcDurationValue_js_1.IfcDurationValue) {
duration = durationArg;
}
else if (durationArg instanceof StringValue_js_1.StringValue) {
duration = IfcDurationValue_js_1.IfcDurationValue.of(durationArg.getValue());
}
const pointInTime = evaluatedArguments.get("pointInTime");
if (pointInTime instanceof IfcDateTimeValue_js_1.IfcDateTimeValue) {
return new ExprEvalResult_js_1.ExprEvalSuccessObj(pointInTime.addDuration(duration));
}
else if (pointInTime instanceof IfcTimeStampValue_js_1.IfcTimeStampValue) {
return new ExprEvalResult_js_1.ExprEvalSuccessObj(pointInTime
.toIfcDateTimeValue()
.addDuration(duration)
.toIfcTimeStampValue());
}
}
getReturnType(argumentTypes) {
return argumentTypes[0];
}
}
exports.ADDDURATION = ADDDURATION;
//# sourceMappingURL=ADDDURATION.js.map