Example #1
0
            public SymbolicEntity GetMatched(SymbolicEntity entity)
            {
                // TODO: add a guard for infinity loop!
                while (entity.MergingReference.TryGetMatched(version, out var matched))
                {
                    entity = matched;
                }

                return(entity);
            }
Example #2
0
                public bool TryGetMatched(ulong version, out SymbolicEntity dest)
                {
                    if (revision != version)
                    {
                        dest = null;
                        return(false);
                    }

                    dest = entity;
                    return(true);
                }
Example #3
0
            public bool TryGetMatched(SymbolicEntity source, out SymbolicEntity dest)
            {
                if (!source.ApplyingReference.TryGetMatched(version, out dest))
                {
                    return(false);
                }

                Debug.Assert(!dest.ApplyingReference.IsMatchedOrVisitedEver());
                if (mergingContext != null)
                {
                    dest = mergingContext.GetMatched(dest);
                }

                Debug.Assert(!dest.ApplyingReference.IsMatchedOrVisitedEver());
                return(true);
            }
Example #4
0
 public bool IsVisited(SymbolicEntity item) =>
 item.ApplyingReference.IsMatched(version);
Example #5
0
 public void Visit(SymbolicEntity item) =>
 item.ApplyingReference.Match(version, null);
Example #6
0
 public bool IsMatched(SymbolicEntity entity) =>
 entity.MergingReference.IsMatched(version);
Example #7
0
 public void Match(SymbolicEntity source, SymbolicEntity dest) =>
 source.MergingReference.Match(version, dest);
Example #8
0
 public void Match(ulong version, SymbolicEntity dest)
 {
     revision = version;
     entity   = dest;
 }