using System;
using System.Collections.Generic;
namespace FF8
{
///
/// class to add function to dictionary
///
///
///
public static class DictionaryEx
{
#region Methods
///
/// Reverses Key and Value of dictionary.
///
///
///
///
///
public static Dictionary Reverse(this IDictionary source)
{
Dictionary dictionary = new Dictionary();
foreach (KeyValuePair entry in source)
{
if (!dictionary.ContainsKey(entry.Value))
dictionary.Add(entry.Value, entry.Key);
}
return dictionary;
}
public static void AddRangeOverride(this Dictionary dic, Dictionary dicToAdd)
{
dicToAdd.ForEach(x => dic[x.Key] = x.Value);
}
public static void AddRangeNewOnly(this Dictionary dic, Dictionary dicToAdd)
{
dicToAdd.ForEach(x => { if (!dic.ContainsKey(x.Key)) dic.Add(x.Key, x.Value); });
}
public static void AddRange(this Dictionary dic, Dictionary dicToAdd)
{
dicToAdd.ForEach(x => dic.Add(x.Key, x.Value));
}
public static bool ContainsKeys(this Dictionary dic, IEnumerable keys)
{
bool result = false;
keys.ForEachOrBreak((x) => { result = dic.ContainsKey(x); return result; });
return result;
}
public static void ForEach(this IEnumerable source, Action action)
{
foreach (var item in source)
action(item);
}
public static void ForEachOrBreak(this IEnumerable source, Func func)
{
foreach (var item in source)
{
bool result = func(item);
if (result) break;
}
}
#endregion Methods
}
}