예제 #1
0
 public IEnumerable<Edge> Apply(Vertex source)
 {
     foreach (var kvp in Logic(source, Graph))
     {
         yield return kvp;
     }
 }
예제 #2
0
파일: Explorer.cs 프로젝트: xeno-by/relinq
        public IEnumerable<Edge> Apply(Vertex source)
        {
            foreach (var kvp_iter in Logic(source.Object))
            {
                var kvp = kvp_iter; // just make resharper happeh
                Func<Vertex> createVertex = () => new Vertex(kvp.Value, ++_idFactory, source.DistanceFromRoot + 1);

                if (kvp.Value == null)
                {
                    yield return new Edge(kvp.Key, source, createVertex());
                }
                else
                {
                    var contains = SafetyTools.SafeEval(() => _cache.ContainsKey(kvp.Value), true);
                    if (!contains)
                    {
                        SafetyTools.SafeDo(() => _cache.Add(kvp.Value, createVertex()));
                    }

                    var vertex = SafetyTools.SafeEval(() => _cache[kvp.Value], createVertex);
                    yield return new Edge(kvp.Key, source, vertex);
                }
            }
        }
예제 #3
0
파일: Explorer.cs 프로젝트: xeno-by/relinq
 public bool IsValid(Vertex v)
 {
     return !Logic(v.Object).IsEmpty();
 }
예제 #4
0
 public bool IsValid(Vertex v)
 {
     return !Logic(v, Graph).IsEmpty();
 }