/////////////////////////////////////////////////////////////////////////////////////////////// private static IDictionary <char, long> Intersection( IDictionary <char, long> X, IDictionary <char, long> Y ) { IDictionary <char, long> result = null; if ((X != null) && (Y != null)) { result = new CharLongDictionary(); foreach (KeyValuePair <char, long> pair in X) { long value; if (Y.TryGetValue(pair.Key, out value)) { result.Add(pair.Key, pair.Value + value); /* ADD ONLY */ } } } return(result); }
/////////////////////////////////////////////////////////////////////////////////////////////// private static void CharsToDictionary( StringBuilder characters, ref IDictionary <char, long> keyFlags ) { if (characters != null) { if (keyFlags == null) { keyFlags = new CharLongDictionary(); } for (int index = 0; index < characters.Length; index++) { char character = characters[index]; if (keyFlags.ContainsKey(character)) { keyFlags[character]++; } else { keyFlags.Add(character, 1); } } } }
/////////////////////////////////////////////////////////////////////////////////////////////// private static IDictionary <char, long> CharsToDictionary( IEnumerable <char> characters ) { if (characters != null) { IDictionary <char, long> result = new CharLongDictionary(); foreach (char character in characters) { if (result.ContainsKey(character)) { result[character]++; } else { result.Add(character, 1); } } return(result); } return(null); }
/////////////////////////////////////////////////////////////////////////////////////////////// #region Dead Code #if DEAD_CODE private static IDictionary <char, long> Union( IDictionary <char, long> X, IDictionary <char, long> Y ) { IDictionary <char, long> result = null; if ((X != null) || (Y != null)) { result = new CharLongDictionary(); if (X != null) { foreach (KeyValuePair <char, long> pair in X) { result.Add(pair); /* ADD ONLY */ } if (Y != null) { foreach (KeyValuePair <char, long> pair in Y) { if (result.ContainsKey(pair.Key)) { result[pair.Key] += pair.Value; } else { result.Add(pair); } } } } else { foreach (KeyValuePair <char, long> pair in Y) { result.Add(pair); /* ADD ONLY */ } } } return(result); }
/////////////////////////////////////////////////////////////////////////////////////////////// private static IDictionary <char, long> Difference( IDictionary <char, long> X, IDictionary <char, long> Y ) { IDictionary <char, long> result = null; if (X != null) { result = new CharLongDictionary(); foreach (KeyValuePair <char, long> pair in X) { if ((Y == null) || !Y.ContainsKey(pair.Key)) { result.Add(pair); /* ADD ONLY */ } } } return(result); }
/////////////////////////////////////////////////////////////////////////////////////////////// private static bool Union( IDictionary <long, IDictionary <char, long> > X, StringBuilder Y, long key, bool strict ) { if ((X == null) || (Y == null)) { return(false); } IDictionary <char, long> keyFlags; if (!X.TryGetValue(key, out keyFlags)) { keyFlags = new CharLongDictionary(); X.Add(key, keyFlags); /* ADD ONLY */ } else if (keyFlags == null) { // // NOTE: This code cannot be reached. // if (strict) { return(false); } keyFlags = new CharLongDictionary(); X[key] = keyFlags; /* REPLACE ONLY */ } /* NO RESULT */ CharsToDictionary(Y, ref keyFlags); return(true); }