/// <summary> /// Lookup/create a key set for a single key scheme. /// </summary> /// <param name="scheme"></param> /// <returns></returns> private SingleKeySet NewKeysetFor(SingleKeyScheme scheme) { IKeySet keys; if (!keySets.TryGetValue(scheme, out keys)) { keys = new SingleKeySet(); keySets.Add(scheme, keys); } return (SingleKeySet)keys; }
/// <summary> /// Get the key set for a single scheme. This set should not be modified. /// </summary> /// <param name="scheme">The scheme.</param> /// <returns>The key set for the scheme. Will be empty if no keys are defined for the scheme.</returns> public SingleKeySet KeysetFor(SingleKeyScheme scheme) { IKeySet keys; if (!keySets.TryGetValue(scheme, out keys)) return EmptySingleKeyset; else return (SingleKeySet)keys; }
/// <summary> /// Remove a key for single key scheme. /// </summary> /// <param name="scheme">The key scheme.</param> /// <param name="key">The key to remove.</param> public virtual void Remove(SingleKeyScheme scheme, Key key) { IKeySet keys; if (keySets.TryGetValue(scheme, out keys)) { keys.Remove(key); if (keys.IsEmpty) keySets.Remove(scheme); } }
/// <summary> /// Add a key for single key scheme. /// </summary> /// <param name="scheme">The key scheme.</param> /// <param name="key">The key to add.</param> public virtual void Add(SingleKeyScheme scheme, Key key) { NewKeysetFor(scheme).Add(key); }