コード例 #1
0
ファイル: DictTuple.cs プロジェクト: helpking/UnityPlugins
        public void RemoveAt(int index)
        {
            if (index >= list.Count || index < 0)
            {
                throw new ArgumentOutOfRangeException("index", "Index Out Of Range (0-" + list.Count + "): " + index);
            }

            TKey key = list[index].item1;
            int  num = list[index].item2;

            List <TValue> sub = dict[key];

            sub.RemoveAt(num);
            if (sub.Count == 0)
            {
                dict.Remove(key);
            }

            list.RemoveAt(index);

            //shifting all of the nums
            int listCount = list.Count;

            for (int i = 0; i < listCount; i++)
            {
                TKey ikey = list[i].item1;
                int  inum = list[i].item2;
                if (Equals(key, ikey) && inum >= num)
                {
                    list[i] = new TupleSet <TKey, int, TValue>(ikey, inum - 1, list[i].item3);
                }
            }
        }
コード例 #2
0
ファイル: DictTuple.cs プロジェクト: helpking/UnityPlugins
        public TValue this[TKey key, int num]
        {
            get { return(dict[key][num]); }
            set {
                if (dict.ContainsKey(key))
                {
                    List <TValue> sub = dict[key];

                    if (num >= sub.Count || num < 0)
                    {
                        throw new ArgumentOutOfRangeException("num", "Index Out Of Range (0-" + sub.Count + "): " + num);
                    }

                    if (num == sub.Count)
                    {
                        Add(key, value);                                      //adding right after the last
                    }
                    else
                    {
                        dict[key][num] = value;
                        list[IndexOfKeyNum(key, num)] = new TupleSet <TKey, int, TValue>(key, num, value);
                    }
                }
                else if (num == 0)
                {
                    Add(key, value);
                }
                else
                {
                    throw new ArgumentException("key", "Key Not Found: " + key);
                }
            }
        }
コード例 #3
0
ファイル: DictTuple.cs プロジェクト: helpking/UnityPlugins
 public void Set(TKey key, T1 val1, T2 val2)
 {
     if (!dict.ContainsKey(key))
     {
         dict.Add(key, new TupleSet <T1, T2>(val1, val2));
     }
     else
     {
         dict[key] = new TupleSet <T1, T2>(val1, val2);
     }
 }                                                                                                                                                                                    //same as add with owerwrite
コード例 #4
0
ファイル: DictTuple.cs プロジェクト: helpking/UnityPlugins
 public void CheckAdd(TKey key, T1 val1, T2 val2, bool overwrite = false)
 {
     if (!dict.ContainsKey(key))
     {
         dict.Add(key, new TupleSet <T1, T2>(val1, val2));
     }
     else if (overwrite)
     {
         dict[key] = new TupleSet <T1, T2>(val1, val2);
     }
 }
コード例 #5
0
ファイル: DictTuple.cs プロジェクト: helpking/UnityPlugins
 public TValue this[TKey key]
 {
     get { return(dict[key]); }
     set {
         if (dict.ContainsKey(key))
         {
             dict[key]             = value;
             list[IndexOfKey(key)] = new TupleSet <TKey, TValue>(key, value);
         }
         else
         {
             Add(key, value);
         }
     }
 }
コード例 #6
0
ファイル: DictTuple.cs プロジェクト: helpking/UnityPlugins
        public TValue this[int index]
        {
            get {
                if (index >= list.Count || index < 0)
                {
                    throw new ArgumentOutOfRangeException("index", "Index Out Of Range (0-" + list.Count + "): " + index);
                }
                return(list[index].item2);
            }
            set {
                if (index >= list.Count || index < 0)
                {
                    throw new ArgumentOutOfRangeException("index", "Index Out Of Range (0-" + list.Count + "): " + index);
                }

                TKey key = list[index].item1;

                list[index] = new TupleSet <TKey, TValue>(key, value);
                dict[key]   = value;
            }
        }
コード例 #7
0
ファイル: DictTuple.cs プロジェクト: helpking/UnityPlugins
 public void SetVal2(TKey key, T2 val)
 {
     TupleSet <T1, T2> tuple = dict[key]; tuple.item2 = val; dict[key] = tuple;
 }