public bool Contains(WorldSymbol x, WorldSymbol y)
        {
            if (x == null || y == null)
            {
                return(false);
            }

            return(Relations[x].Contains(y));
        }
예제 #2
0
        public WorldIndex(WorldSymbol symbol)
        {
            Symbols.Add(symbol);

            if (symbol.ParentSymbol != null)
            {
                ParentIndex = new WorldIndex(symbol.ParentSymbol);
                Symbols.AddRange(ParentIndex.Symbols);
            }
        }
        internal void AddRelation(WorldSymbol x, WorldSymbol y)
        {
            if (!Relations.ContainsKey(x))
            {
                Relations.Add(x, new List <WorldSymbol>());
            }

            if (!Relations[x].Contains(y))
            {
                Relations[x].Add(y);

                foreach (var property in properties)
                {
                    property.AddRelation(this, x, y);
                }
            }
        }
예제 #4
0
        public void AddRelation(AccessibilityRelation relation, WorldSymbol x, WorldSymbol y)
        {
            if (x == y)
            {
                return;
            }

            var relations = relation.Relations.Where(rel => rel.Key == y);

            foreach (var rel in relations)
            {
                foreach (var target in rel.Value)
                {
                    relation.AddRelation(x, target);
                }
            }

            relations = relation.Relations.Where(rel => rel.Value.Contains(x));
            foreach (var rel in relations)
            {
                relation.AddRelation(rel.Key, y);
            }
        }
예제 #5
0
 public void AddSymbol(WorldSymbol symbol)
 {
     symbol.ParentSymbol = EndSymbol;
     Symbols.Add(symbol);
     ParentIndex = new WorldIndex(symbol.ParentSymbol);
 }
예제 #6
0
 public void AddRelation(AccessibilityRelation relation, WorldSymbol x, WorldSymbol y)
 {
     relation.AddRelation(y, x);
 }