private void __eTree_generateLocalCheck(e_tskLimit Value) { BlockExpression block = Expression.Block( typeof(DateTime), new[] { pResult, pLimit }, Expression.IfThenElse(eCompare, Expression.Assign(pResult, pDate), Expression.Assign(pResult, Expression.Invoke(eFncExpLimit))), pResult ); fncLocalCheck = Expression.Lambda <Func <DateTime, DateTime> >(block, pDate).Compile(); }
public period_localLimit(IDot start, IDot finish, e_tskLimit lType) { init_eventsInternal(); dcdSlave = new dotCheckDate(slaveCheck); dcdMaster = new dotCheckDate(masterCheck); _outerLimit = dmyChk; fncDuration = durNull; init_outerLimit(); init_expTreeParameters(); connectProject(null); this.start = start; this.finish = finish; _limitDate = start.date; limitType = lType; }
private void __prp_limitType_write(e_tskLimit Value) { e_tskLimit temp = _limitType; _limitType = Value; switch (Value) { case e_tskLimit.Earlier: setMasterStart(true); fncExpLimit = fncProjectStart; __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate); __eTree_generateLocalCheck(Value); funcFSInvert(true); break; case e_tskLimit.startFixed: setMasterStart(true); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.startNotEarlier: setMasterStart(true); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.GreaterThanOrEqual, pDate, pLimit); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.startNotLater: setMasterStart(true); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.LessThanOrEqual, pDate, pLimit); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.Later: setMasterStart(false); fncExpLimit = fncProjectFinish; __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate); __eTree_generateLocalCheck(Value); funcFSInvert(true); break; case e_tskLimit.finishFixed: setMasterStart(false); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.finishNotEarlier: setMasterStart(false); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.GreaterThanOrEqual, pDate, pLimit); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.finishNotLater: setMasterStart(false); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.LessThanOrEqual, pDate, pLimit); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; } ev_limitTypeChanged(this, new EventArgs()); onLimitTypeChange(new eventArgs_valueChange <e_tskLimit>(temp, _limitType)); }
private void __prp_limitType_write(e_tskLimit Value) { e_tskLimit temp = _limitType; _limitType = Value; switch (Value) { case e_tskLimit.Earlier: setMasterStart(true); fncExpLimit = fncProjectStart; __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate); __eTree_generateLocalCheck(Value); funcFSInvert(true); break; case e_tskLimit.startFixed: setMasterStart(true); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.startNotEarlier: setMasterStart(true); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.GreaterThanOrEqual, pDate, pLimit); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.startNotLater: setMasterStart(true); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.LessThanOrEqual, pDate, pLimit); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.Later: setMasterStart(false); fncExpLimit = fncProjectFinish; __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate); __eTree_generateLocalCheck(Value); funcFSInvert(true); break; case e_tskLimit.finishFixed: setMasterStart(false); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.finishNotEarlier: setMasterStart(false); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.GreaterThanOrEqual, pDate, pLimit); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; case e_tskLimit.finishNotLater: setMasterStart(false); fncExpLimit = () => limitDate; __eTree_makeBinary(ExpressionType.LessThanOrEqual, pDate, pLimit); __eTree_generateLocalCheck(Value); funcFSInvert(false); break; } ev_limitTypeChanged(this, new EventArgs()); onLimitTypeChange(new eventArgs_valueChange<e_tskLimit>(temp, _limitType)); }
private void __eTree_generateLocalCheck(e_tskLimit Value) { BlockExpression block = Expression.Block( typeof(DateTime), new[] { pResult, pLimit }, Expression.IfThenElse(eCompare, Expression.Assign(pResult, pDate), Expression.Assign(pResult, Expression.Invoke(eFncExpLimit))), pResult ); fncLocalCheck = Expression.Lambda<Func<DateTime, DateTime>>(block, pDate).Compile(); }