4 using System.Collections;
5 using System.Collections.Generic;
7 using SiliconStudio.Core;
8 using SiliconStudio.Core.Serialization;
9 using SiliconStudio.Core.Serialization.Serializers;
11 namespace SiliconStudio.
Paradox.Assets.Materials
17 [DataContract(
"GenericDictionary")]
20 private List<KeyValuePair<string, INodeParameter>> internalDictionary;
24 internalDictionary =
new List<KeyValuePair<string, INodeParameter>>();
28 public IEnumerator<KeyValuePair<string, INodeParameter>>
GetEnumerator()
30 return internalDictionary.GetEnumerator();
33 IEnumerator IEnumerable.GetEnumerator()
35 return GetEnumerator();
38 public void Add(KeyValuePair<string, INodeParameter> item)
40 internalDictionary.Add(item);
45 internalDictionary.Clear();
48 public bool Contains(KeyValuePair<string, INodeParameter> item)
50 return internalDictionary.Contains(item);
53 public void CopyTo(KeyValuePair<string, INodeParameter>[] array,
int arrayIndex)
55 var copyCount = Math.Min(array.Length - arrayIndex, internalDictionary.Count);
56 for (var i = 0; i < copyCount; ++i)
58 array[arrayIndex + i] = internalDictionary[i];
62 public bool Remove(KeyValuePair<string, INodeParameter> item)
64 return internalDictionary.Remove(item);
71 return internalDictionary.Count;
75 public bool IsReadOnly
85 return internalDictionary.Any(x => x.Key == key);
90 internalDictionary.Add(
new KeyValuePair<string, INodeParameter>(key, value));
97 internalDictionary.RemoveAll(x => x.Key == key);
105 if (ContainsKey(key))
118 var found = internalDictionary.FirstOrDefault(x => x.Key == key).Value;
121 throw new KeyNotFoundException();
125 var newValue =
new KeyValuePair<string, INodeParameter>(key, value);
126 var foundIndex = internalDictionary.FindIndex(x => x.Key == key);
128 internalDictionary[foundIndex] = newValue;
130 internalDictionary.Add(newValue);
138 return internalDictionary.Select(x => x.Key).ToList();
146 return internalDictionary.Select(x => x.Value).ToList();
158 itemDataSerializer = serializerSelector.GetSerializer<KeyValuePair<string, INodeParameter>>();
167 obj =
new GenericDictionary();
179 int count = stream.ReadInt32();
180 for (
int i = 0; i <
count; ++i)
182 var value =
new KeyValuePair<string, INodeParameter>();
183 itemDataSerializer.Serialize(ref value, mode, stream);
184 obj.Add(value.Key, value.Value);
189 stream.Write(obj.Count);
190 foreach (var item
in obj.internalDictionary)
192 itemDataSerializer.Serialize(item, stream);
197 public void EnumerateGenericInstantiations(
SerializerSelector serializerSelector, IList<Type> genericInstantiations)
199 genericInstantiations.Add(typeof(KeyValuePair<string, INodeParameter>));
bool Remove(KeyValuePair< string, INodeParameter > item)
A custom dictionary to keep track of the order the elements were inserted.
bool TryGetValue(string key, out INodeParameter value)
SiliconStudio.Paradox.Input.Keys Keys
bool Contains(KeyValuePair< string, INodeParameter > item)
Base class for implementation of SerializationStream.
IEnumerator< KeyValuePair< string, INodeParameter > > GetEnumerator()
bool ContainsKey(string key)
Adds initialization feature to a DataSerializer.
void Add(string key, INodeParameter value)
void Add(KeyValuePair< string, INodeParameter > item)
void CopyTo(KeyValuePair< string, INodeParameter >[] array, int arrayIndex)
Serializer context. It holds DataSerializer{T} objects and their factories.
Describes how to serialize and deserialize an object without knowing its type. Used as a common base ...
ArchiveMode
Enumerates the different mode of serialization (either serialization or deserialization).
Allows enumeration of required data serializers.