Beispiel #1
0
 /// <summary>
 /// Добавлене данных в конец дампа
 /// </summary>
 /// <param name="CurrentTime"></param>
 /// <param name="value"></param>
 public void AppendValue(UInt64 CurrentTime, AbstractValue value)
 {
     using (TimeStampInfo ts = new TimeStampInfo(value))
     {
         AppendValue(CurrentTime, ts);
     }
 }
Beispiel #2
0
        private static SortedList <UInt64, TimeStampInfo> FormBitGeneratedData(BaseGenerator generator, UInt64 StartTime, UInt64 EndTime, ModellingType modellingType)
        {
            SortedList <UInt64, TimeStampInfo> res = new SortedList <UInt64, TimeStampInfo>();

            if (generator is IGeneratorDataFill <bool> )
            {
                SortedList <UInt64, bool> valuesForInsert = (generator as IGeneratorDataFill <bool>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo inf = new TimeStampInfo(new BIT_VALUE(el.Value ? VHDL.builtin.Standard.BIT_1 : VHDL.builtin.Standard.BIT_0));
                    res.Add(el.Key, inf);
                }
                return(res);
            }

            if (generator is IGeneratorDataFill <object> )
            {
                SortedList <UInt64, object> valuesForInsert = (generator as IGeneratorDataFill <object>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    if (el.Value is string)
                    {
                        TimeStampInfo inf = new TimeStampInfo(new BIT_VALUE((el.Value as string == "1") ? VHDL.builtin.Standard.BIT_1 : VHDL.builtin.Standard.BIT_0));
                        res.Add(el.Key, inf);
                    }
                    if (el.Value is EnumerationLiteral)
                    {
                        TimeStampInfo inf = new TimeStampInfo(new BIT_VALUE(el.Value as EnumerationLiteral));
                        res.Add(el.Key, inf);
                    }
                }
                return(res);
            }
            return(res);
        }
        public void Reset()
        {
            foreach (var i in iterators)
            {
                i.Reset();
            }

            UInt64 Current = default(UInt64);
            bool   IsSet   = false;

            foreach (var iter in iterators)
            {
                if (
                    (iter.IsEndOfIteration == false) && (((Current > iter.LastEvent) || (IsSet == false)))
                    )
                {
                    IsSet   = true;
                    Current = iter.LastEvent;
                }
            }

            //Заполнение данных
            lastEvent = Current;

            currentValue = CreateTimeStampInfo();
        }
        /// <summary>
        /// Формирование информации о текущем моменте времени
        /// </summary>
        /// <returns></returns>
        private TimeStampInfo CreateTimeStampInfo()
        {
            List <TimeStampInfo> components = new List <TimeStampInfo>();

            foreach (var i in iterators)
            {
                components.Add(i.CurrentValue);
            }
            return(TimeStampInfo.CombineTimestamps(Type, components));
        }
        /// <summary>
        /// Получение данных о моменте времени
        /// </summary>
        /// <param name="Time"></param>
        /// <returns></returns>
        public override TimeStampInfo GetValue(UInt64 Time)
        {
            List <TimeStampInfo> res = new List <TimeStampInfo>();

            foreach (AbstractSignalDump d in dumps)
            {
                res.Add(d.GetValue(Time));
            }
            return(TimeStampInfo.CombineTimestamps(Type, res));
        }
        public virtual AbstractTimeStampInfo <T> GetAbstractTimeStampInfo(TimeStampInfo value)
        {
            Dictionary <int, T> info = new Dictionary <int, T>();

            foreach (KeyValuePair <int, AbstractValue> i in value)
            {
                info.Add(i.Key, GetValue(i.Value));
            }

            return(new AbstractTimeStampInfo <T>(info));
        }
        public void SetCurrentIndexByKey(ulong Time)
        {
            foreach (var i in iterators)
            {
                i.SetCurrentIndexByKey(Time);
                i.MoveNext();
            }

            lastEvent = Time;

            currentValue = CreateTimeStampInfo();
        }
        /// <summary>
        /// Добавление данных в конец дампа
        /// </summary>
        /// <param name="CurrentTime"></param>
        /// <param name="value"></param>
        public override void AppendValue(ulong CurrentTime, TimeStampInfo value)
        {
            List <TimeStampInfo> info = TimeStampInfo.SplitTimestamps(Type, value);

            for (int i = 0; i < dumps.Count; i++)
            {
                dumps[i].AppendValue(CurrentTime, info[i]);
            }

            foreach (TimeStampInfo i in info)
            {
                i.Dispose();
            }
        }
Beispiel #9
0
        private static SortedList <UInt64, TimeStampInfo> FormEnumerationGeneratedData(BaseGenerator generator, UInt64 StartTime, UInt64 EndTime, ModellingType modellingType)
        {
            SortedList <UInt64, TimeStampInfo> res = new SortedList <UInt64, TimeStampInfo>();

            if (generator is IGeneratorDataFill <object> )
            {
                SortedList <UInt64, object> valuesForInsert = (generator as IGeneratorDataFill <object>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo inf = new TimeStampInfo(new EnumerationValue(modellingType.Type as VHDL.type.EnumerationType, el.Value as EnumerationLiteral));
                    res.Add(el.Key, inf);
                }
                return(res);
            }
            return(res);
        }
        void CursorViewer_CursorPositionChangedEvent()
        {
            UInt64 time = CursorViewer.Time;

            if (time < ScaleManager.EndTime)
            {
                TimeStampInfo inf   = Variable.Signal.Dump.GetValue(time);
                string        value = "<NULL>";
                if (inf != null)
                {
                    value = DataContainer.ValueDump.DataConvertorUtils.ToString(inf.LastValue, Variable.DataRepresentation);
                }
                Variable.CursorValue = value;
            }
            else
            {
                Variable.CursorValue = "?";
            }

            UpdateSelection();
        }
Beispiel #11
0
        /// <summary>
        /// Сформировать текущее значение, исходя из значений итераторов
        /// </summary>
        protected void FormCurrentValue(ulong CurrentTime)
        {
            SortedDictionary <int, List <AbstractValue> > data = TimeStampInfo.CombineTimestamps(iterators);

            //Заполнение данных
            CurrentValue.Clear();

            foreach (KeyValuePair <int, List <AbstractValue> > v in data)
            {
                string[] values = new string[iterators.Count + 3];
                values[0] = (CurrentIndex + 1).ToString();
                values[1] = TimeInterval.ToString(CurrentTime);
                values[2] = v.Key.ToString();

                for (int i = 0; i < v.Value.Count; i++)
                {
                    values[i + 3] = DataContainer.ValueDump.DataConvertorUtils.ToString(v.Value[i], iterators[i].DataRepresentation);
                }

                CurrentValue.Add(values);
            }
        }
Beispiel #12
0
        private static SortedList <UInt64, TimeStampInfo> FormBIT_VECTORGeneratedData(BaseGenerator generator, UInt64 StartTime, UInt64 EndTime, ModellingType modellingType)
        {
            SortedList <UInt64, TimeStampInfo> res = new SortedList <UInt64, TimeStampInfo>();
            int size = modellingType.SizeOf;

            if (generator is IGeneratorDataFill <Int64> )
            {
                SortedList <UInt64, Int64> valuesForInsert = (generator as IGeneratorDataFill <Int64>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo inf = new TimeStampInfo(BIT_VECTOR_VALUE.CreateBIT_VECTOR_VALUE(el.Value, size));
                    res.Add(el.Key, inf);
                }
                return(res);
            }
            if (generator is IGeneratorDataFill <bool[]> )
            {
                SortedList <UInt64, bool[]> valuesForInsert = (generator as IGeneratorDataFill <bool[]>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo inf = new TimeStampInfo(BIT_VECTOR_VALUE.CreateBIT_VECTOR_VALUE(el.Value));
                    res.Add(el.Key, inf);
                }
                return(res);
            }
            if (generator is IGeneratorDataFill <Double> )
            {
                SortedList <UInt64, Double> valuesForInsert = (generator as IGeneratorDataFill <Double>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo inf = new TimeStampInfo(BIT_VECTOR_VALUE.CreateBIT_VECTOR_VALUE((Int64)el.Value, size));
                    res.Add(el.Key, inf);
                }
                return(res);
            }

            return(res);
        }
        public override void InsertValues(SortedList <UInt64, TimeStampInfo> data, UInt64 StartTime, UInt64 EndTime)
        {
            Dictionary <AbstractSignalDump, SortedList <UInt64, TimeStampInfo> > insData = new Dictionary <AbstractSignalDump, SortedList <UInt64, TimeStampInfo> >();

            foreach (AbstractSignalDump d in dumps)
            {
                insData.Add(d, new SortedList <ulong, TimeStampInfo>());
            }

            foreach (var el in data)
            {
                List <TimeStampInfo> elements = TimeStampInfo.SplitTimestamps(base.Type, el.Value);
                for (int i = 0; i < elements.Count; i++)
                {
                    insData.ElementAt(i).Value.Add(el.Key, elements[i]);
                }
            }

            foreach (var el in insData)
            {
                el.Key.InsertValues(el.Value, StartTime, EndTime);
            }
        }
Beispiel #14
0
        private static SortedList <UInt64, TimeStampInfo <VHDLBaseValue> > FormIntegerGeneratedData(BaseGenerator generator, UInt64 StartTime, UInt64 EndTime)
        {
            SortedList <UInt64, TimeStampInfo <VHDLBaseValue> > res = new SortedList <UInt64, TimeStampInfo <VHDLBaseValue> >();

            if (generator is IGeneratorDataFill <Int64> )
            {
                SortedList <UInt64, Int64> valuesForInsert = (generator as IGeneratorDataFill <Int64>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo <VHDLBaseValue> inf = new TimeStampInfo <VHDLBaseValue>(new VHDLIntegerValue(Convert.ToInt32(el.Value)));
                    res.Add(el.Key, inf);
                }
                return(res);
            }
            if (generator is IGeneratorDataFill <bool[]> )
            {
                SortedList <UInt64, bool[]> valuesForInsert = (generator as IGeneratorDataFill <bool[]>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo <VHDLBaseValue> inf = new TimeStampInfo <VHDLBaseValue>(new VHDLIntegerValue(DataConvertorUtils.ToInt(el.Value)));
                    res.Add(el.Key, inf);
                }
                return(res);
            }
            if (generator is IGeneratorDataFill <Double> )
            {
                SortedList <UInt64, Double> valuesForInsert = (generator as IGeneratorDataFill <Double>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo <VHDLBaseValue> inf = new TimeStampInfo <VHDLBaseValue>(new VHDLIntegerValue(Convert.ToInt32(el.Value)));
                    res.Add(el.Key, inf);
                }
                return(res);
            }

            return(res);
        }
Beispiel #15
0
        private static SortedList <UInt64, TimeStampInfo> FormRealGeneratedData(BaseGenerator generator, UInt64 StartTime, UInt64 EndTime, ModellingType modellingType)
        {
            SortedList <UInt64, TimeStampInfo> res = new SortedList <UInt64, TimeStampInfo>();

            if (generator is IGeneratorDataFill <Int64> )
            {
                SortedList <UInt64, Int64> valuesForInsert = (generator as IGeneratorDataFill <Int64>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo inf = new TimeStampInfo(new RealValue(VHDL.builtin.Standard.REAL, Convert.ToDouble(el.Value)));
                    res.Add(el.Key, inf);
                }
                return(res);
            }
            if (generator is IGeneratorDataFill <bool[]> )
            {
                SortedList <UInt64, bool[]> valuesForInsert = (generator as IGeneratorDataFill <bool[]>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo inf = new TimeStampInfo(new RealValue(VHDL.builtin.Standard.REAL, DataContainer.ValueDump.DataConvertorUtils.ToInt(el.Value)));
                    res.Add(el.Key, inf);
                }
                return(res);
            }
            if (generator is IGeneratorDataFill <Double> )
            {
                SortedList <UInt64, Double> valuesForInsert = (generator as IGeneratorDataFill <Double>).InsertValues(StartTime, EndTime);
                foreach (var el in valuesForInsert)
                {
                    TimeStampInfo inf = new TimeStampInfo(new RealValue(VHDL.builtin.Standard.REAL, Convert.ToDouble(el.Value)));
                    res.Add(el.Key, inf);
                }
                return(res);
            }

            return(res);
        }
Beispiel #16
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);
            }
        }
        public void MoveNext()
        {
            foreach (var iter in iterators)
            {
                if (iter.LastEvent == lastEvent)
                {
                    iter.MoveNext();
                }
            }

            currentValue = CreateTimeStampInfo();
            //Проверяем, есть ли ещо данные для выборки
            if (IsEndOfIteration == true)
            {
                return;
            }

            //выбираем первое событие (точнее минимальное время)
            UInt64 Current = default(UInt64);
            bool   IsSet   = false;

            foreach (var iter in iterators)
            {
                if (
                    (iter.IsEndOfIteration == false) && (((Current > iter.LastEvent) || (IsSet == false)))
                    )
                {
                    IsSet   = true;
                    Current = iter.LastEvent;
                }
            }

            //Заполнение данных
            lastEvent = Current;
            currentIndex++;
        }
Beispiel #18
0
 /// <summary>
 /// Добавление нового элемента в конец очереди газначения сигнала
 /// </summary>
 /// <param name="CurrentTime"></param>
 /// <param name="value"></param>
 public void AppendValue(UInt64 CurrentTime, TimeStampInfo value)
 {
     Dump.AppendValue(CurrentTime, value);
 }
Beispiel #19
0
 /// <summary>
 /// Добавлене данных в конец дампа
 /// </summary>
 /// <param name="CurrentTime"></param>
 /// <param name="value"></param>
 public abstract void AppendValue(UInt64 CurrentTime, TimeStampInfo value);