using System.Collections.Generic;
using System.Diagnostics.Contracts;
using QuickGraph;
namespace GraphSharp.Contracts
{
///
/// Contract class for the ICompoundGraph interface.
///
///
/// Type of the vertex.
///
///
/// Type of the edge.
///
[ContractClassFor( typeof( ICompoundGraph<,> ) )]
internal sealed class ICompoundGraphContract
: BidirectionalGraph, ICompoundGraph
where TEdge : IEdge
{
#region ICompoundGraph Members
[Pure]
bool ICompoundGraph.AddChildVertex( TVertex parent, TVertex child )
{
ICompoundGraph ithis = this;
Contract.Requires( !parent.Equals( default( TVertex ) ) );
Contract.Requires( ithis.ContainsVertex( parent ) );
return default( bool );
}
[Pure]
int ICompoundGraph.AddChildVertexRange( TVertex parent, IEnumerable children )
{
ICompoundGraph ithis = this;
Contract.Requires( !parent.Equals( default( TVertex ) ) );
Contract.Requires( ithis.ContainsVertex( parent ) );
Contract.Ensures( Contract.Result() >= 0 );
return default( int );
}
[Pure]
TVertex ICompoundGraph.GetParent( TVertex vertex )
{
ICompoundGraph ithis = this;
Contract.Requires( !vertex.Equals( default( TVertex ) ) );
Contract.Requires( ithis.ContainsVertex( vertex ) );
//TODO this is a bug in the MS Contract, i think -- solve it
//Contract.Ensures( Contract.Result().Equals( default( TVertex ) ) || ithis.ContainsVertex( Contract.Result() ) );
return default( TVertex );
}
[Pure]
bool ICompoundGraph.IsChildVertex( TVertex vertex )
{
ICompoundGraph ithis = this;
Contract.Requires( !vertex.Equals( default( TVertex ) ) );
Contract.Requires( ithis.ContainsVertex( vertex ) );
return default( bool );
}
[Pure]
IEnumerable ICompoundGraph.GetChildrenVertices( TVertex vertex )
{
ICompoundGraph ithis = this;
Contract.Requires( !vertex.Equals( default( TVertex ) ) );
Contract.Requires( ithis.ContainsVertex( vertex ) );
return new List();
}
[Pure]
int ICompoundGraph.GetChildrenCount( TVertex vertex )
{
ICompoundGraph ithis = this;
Contract.Requires( ithis.ContainsVertex( vertex ) );
Contract.Ensures( Contract.Result() >= 0 );
return default( int );
}
[Pure]
bool ICompoundGraph.IsCompoundVertex( TVertex vertex )
{
Contract.Requires( vertex != null );
Contract.Requires( ContainsVertex( vertex ) );
return default( bool );
}
IEnumerable ICompoundGraph.CompoundVertices
{
get
{
return null;
}
}
IEnumerable ICompoundGraph.SimpleVertices
{
get
{
return null;
}
}
#endregion
}
}