/// <summary> /// Добавление данных в конец дампа /// </summary> /// <param name="CurrentTime"></param> /// <param name="value"></param> public void AppendValue(UInt64 CurrentTime, T value) { AbstractTimeStampInfo <T> newValue = new AbstractTimeStampInfo <T>(value); if (dump.Count >= 1) { UInt64 lastTime = dump.Keys[dump.Count - 1]; AbstractTimeStampInfo <T> lastInfo = dump.Values[dump.Count - 1]; if (lastTime < CurrentTime) { if (value.Equals(lastInfo.LastValue)) { return; } dump.Add(CurrentTime, newValue); } else { dump.Append(CurrentTime, newValue); } } else { dump.Append(CurrentTime, newValue); } }
public virtual TimeStampInfo GetTimeStampInfo(AbstractTimeStampInfo <T> value) { Dictionary <int, AbstractValue> info = new Dictionary <int, AbstractValue>(); foreach (KeyValuePair <int, T> i in value) { info.Add(i.Key, GetAbstractValue(i.Value)); } return(new TimeStampInfo(info)); }
public void MoveNext() { if (currentIndex >= data.Count) { return; } else { value = data.GetValue(lastEvent); currentIndex++; if (currentIndex < data.Count) { lastEvent = data.Keys[currentIndex]; } } }
public override void AddEvent(ulong NOW, ulong after, AbstractValue value, VHDL.DelayMechanism delayMechanism) { AbstractTimeStampInfo <T> newValue = new AbstractTimeStampInfo <T>(valueCovertor.GetValue(value)); if (delayMechanism is VHDL.TRANSPORTDelayMechanism) { dump.AddTransportEvent(NOW + after, newValue); return; } if (delayMechanism.PulseRejectionLimit != null) { TIME_VALUE reject = ExpressionEvaluator.DefaultEvaluator.Evaluate(delayMechanism.PulseRejectionLimit) as TIME_VALUE; dump.AddInertialEvent(NOW, NOW + after, newValue, (UInt64)reject.DoubleValue); return; } if (delayMechanism is VHDL.INERTIALDelayMechanism) { dump.AddInertialEvent(NOW, NOW + after, newValue); return; } }
/// <summary> /// Добавление данных в конец дампа /// </summary> /// <param name="CurrentTime"></param> /// <param name="value"></param> public override void AppendValue(UInt64 CurrentTime, TimeStampInfo value) { if (value.Count == 0) { return; } AbstractTimeStampInfo <T> newValue = valueCovertor.GetAbstractTimeStampInfo(value); if (dump.Count >= 1) { UInt64 lastTime = dump.Keys[dump.Count - 1]; AbstractTimeStampInfo <T> lastInfo = dump.Values[dump.Count - 1]; if (lastTime < CurrentTime) { using (AbstractValue first_value = value.FirstValue) { if (first_value.Equals(lastInfo.LastValue)) { value.Info.Remove(0); } if (value.Count != 0) { dump.Add(CurrentTime, newValue); } } } else { dump.Append(CurrentTime, newValue); } } else { dump.Append(CurrentTime, newValue); } }