aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/CollectionConverter .cs
blob: 2d9a3cfd91e9cb635210146eb90ac568ec8ed9d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;

namespace Tango.MachineStudio.Statistics.Converters
{
    public class CollectionConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if(value != null && value is System.Collections.IEnumerable)
            {
                var colection = value as System.Collections.IEnumerable;
                var text = new StringBuilder();
                foreach(var val in colection)
                {
                    string visibleText = val.ToString();
                    if(val is bool && parameter is string)
                    {
                        string[] tokens = (parameter as string).Split(',');
                        if(tokens.Count() > 1)
                        {
                            visibleText = (bool)val == true ? tokens[1] : tokens[0];
                        }
                    }
                    text.Append(visibleText);
                    text.Append("/");
                }
                string str_text = text.ToString();
                if(str_text.Length > 1)
                {
                    str_text = str_text.Remove(str_text.Length - 1);
                }
                return str_text;
            }
            return "";
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
="n">size - 1); arr[(head + index) % arr.Length] = value; } } /// <summary> /// Adds an element to the end of the deque. /// </summary> [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "PushBack")] public void PushBack(T item) { if (size == arr.Length) SetCapacity(Math.Max(4, arr.Length * 2)); arr[tail++] = item; if (tail == arr.Length) tail = 0; size++; } /// <summary> /// Pops an element from the end of the deque. /// </summary> public T PopBack() { if (size == 0) throw new InvalidOperationException(); if (tail == 0) tail = arr.Length - 1; else tail--; T val = arr[tail]; arr[tail] = default(T); // allow GC to collect the element size--; return val; } /// <summary> /// Adds an element to the front of the deque. /// </summary> public void PushFront(T item) { if (size == arr.Length) SetCapacity(Math.Max(4, arr.Length * 2)); if (head == 0) head = arr.Length - 1; else head--; arr[head] = item; size++; } /// <summary> /// Pops an element from the end of the deque. /// </summary> public T PopFront() { if (size == 0) throw new InvalidOperationException(); T val = arr[head]; arr[head] = default(T); // allow GC to collect the element head++; if (head == arr.Length) head = 0; size--; return val; } void SetCapacity(int capacity) { T[] newArr = new T[capacity]; CopyTo(newArr, 0); head = 0; tail = (size == capacity) ? 0 : size; arr = newArr; } /// <inheritdoc/> public IEnumerator<T> GetEnumerator() { if (head < tail) { for (int i = head; i < tail; i++) yield return arr[i]; } else { for (int i = head; i < arr.Length; i++) yield return arr[i]; for (int i = 0; i < tail; i++) yield return arr[i]; } } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return this.GetEnumerator(); } bool ICollection<T>.IsReadOnly { get { return false; } } void ICollection<T>.Add(T item) { PushBack(item); } /// <inheritdoc/> public bool Contains(T item) { EqualityComparer<T> comparer = EqualityComparer<T>.Default; foreach (T element in this) if (comparer.Equals(item, element)) return true; return false; } /// <inheritdoc/> public void CopyTo(T[] array, int arrayIndex) { if (array == null) throw new ArgumentNullException("array"); if (head < tail) { Array.Copy(arr, head, array, arrayIndex, tail - head); } else { int num1 = arr.Length - head; Array.Copy(arr, head, array, arrayIndex, num1); Array.Copy(arr, 0, array, arrayIndex + num1, tail); } } bool ICollection<T>.Remove(T item) { throw new NotSupportedException(); } } }