using System; using System.Collections.Generic; using Artemis.Core.Events; namespace Artemis.Core { /// /// Represents a collection of s on a /// public interface IPinCollection : IEnumerable { /// /// Gets the node the pin collection belongs to /// INode Node { get; } /// /// Gets the name of the pin collection /// string Name { get; } /// /// Gets the direction of the pin collection and all its pins /// PinDirection Direction { get; } /// /// Gets the type of values the pin collection and all its pins holds /// Type Type { get; } /// /// Occurs when a pin was added to the collection /// event EventHandler> PinAdded; /// /// Occurs when a pin was removed from the collection /// event EventHandler> PinRemoved; /// /// Creates a new pin compatible with this collection /// /// The newly created pin IPin CreatePin(); /// /// Adds the provided to the collection /// void Add(IPin pin); /// /// Removes the provided from the collection /// /// The pin to remove bool Remove(IPin pin); /// /// Resets the pin collection, causing its pins to re-evaluate the next time its value is requested /// void Reset(); } }