tool/TeamCity.Docker/Generic/IGraph.cs (19 lines of code) (raw):
namespace TeamCity.Docker.Generic
{
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
[SuppressMessage("ReSharper", "UnusedMember.Global")]
[SuppressMessage("ReSharper", "UnusedMethodReturnValue.Global")]
internal interface IGraph<TNode, TLink>
{
[IoC.NotNull] IEnumerable<INode<TNode>> Nodes { get; }
int NodesCount { get; }
[IoC.NotNull] IEnumerable<ILink<TNode, TLink>> Links { get; }
bool TryAddNode([IoC.NotNull] TNode value, out INode<TNode> node);
bool TryRemoveNode([IoC.NotNull] INode<TNode> node);
bool TryAddLink([IoC.NotNull] INode<TNode> from, [IoC.NotNull] TLink value, [IoC.NotNull] INode<TNode> to, out ILink<TNode, TLink> link);
bool TryRemoveLink([IoC.NotNull] ILink<TNode, TLink> link);
IGraph<TNode, TLink> Copy(Predicate<INode<TNode>> filter);
}
}