Esempio n. 1
0
 public static List<IRelation> ToRelation<TNode>(this ILink<TNode> link, RelationDirection linkDirection = RelationDirection.Forwards)
     where TNode : INode
 {
     List<IRelation> relations = new List<IRelation>();
     IRelation forward = ToRelation(link);
     switch (linkDirection)
     {
         case RelationDirection.Forwards:
             relations.Add(forward);
             break;
         case RelationDirection.Backwards:
             relations.Add(forward.Reverse());
             break;
         case RelationDirection.Both:
             relations.Add(forward); 
             relations.Add(forward.DeepClone().IReverse());
             break;
     }
     return relations;
 }
Esempio n. 2
0
        /***************************************************/

        private static List <IRelation> RelationsToAdd(IRelation relation, RelationDirection linkDirection)
        {
            List <IRelation> relations = new List <IRelation>();

            if (linkDirection == RelationDirection.Forwards)
            {
                relations.Add(relation);
            }

            if (linkDirection == RelationDirection.Backwards)
            {
                relations.Add(relation.IReverse());
            }

            if (linkDirection == RelationDirection.Both)
            {
                relations.Add(relation);
                IRelation clone = relation.DeepClone();
                relations.Add(clone.IReverse());
            }
            return(relations);
        }