using System; using System.Collections.Generic; using Artemis.Core.Events; namespace Artemis.Core { /// /// Represents a pin containing a value on a /// public interface IPin { /// /// Gets the node the pin belongs to /// INode Node { get; } /// /// Gets or sets the name of the pin /// string Name { get; set; } /// /// Gets the direction of the pin /// PinDirection Direction { get; } /// /// Gets the type of value the pin holds /// Type Type { get; } /// /// Gets the value the pin holds /// object? PinValue { get; } /// /// Gets a read only list of pins this pin is connected to /// IReadOnlyList ConnectedTo { get; } /// /// Gets or sets a boolean indicating whether this pin is evaluated or not /// bool IsEvaluated { get; set; } /// /// Occurs when the pin connects to another pin /// event EventHandler> PinConnected; /// /// Occurs when the pin disconnects from another pin /// event EventHandler> PinDisconnected; /// /// Resets the pin, causing it to re-evaluate the next time its value is requested /// void Reset(); /// /// Connects the pin to the provided /// /// The pin to connect this pin to void ConnectTo(IPin pin); /// /// Disconnects the pin to the provided /// /// The pin to disconnect this pin to void DisconnectFrom(IPin pin); /// /// Disconnects all pins this pin is connected to /// void DisconnectAll(); } }