Пример #1
0
        /// <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));
        }
Пример #3
0
 public void MoveNext()
 {
     if (currentIndex >= data.Count)
     {
         return;
     }
     else
     {
         value = data.GetValue(lastEvent);
         currentIndex++;
         if (currentIndex < data.Count)
         {
             lastEvent = data.Keys[currentIndex];
         }
     }
 }
Пример #4
0
        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;
            }
        }
Пример #5
0
        /// <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);
            }
        }