Example #1
0
            public FQSMapWorkItem(T profile, FQSMapWorkItem parent)
            {
                this.Profile = profile;

                if (parent != null)
                {
                    this.Visited         = new HashSet <T>(parent.Visited);
                    this.ProfileSequence = new List <T>(parent.ProfileSequence);
                }
                else
                {
                    this.Visited         = new HashSet <T>();
                    this.ProfileSequence = new List <T>();
                }

                this.Visited.Add(profile);
                this.ProfileSequence.Add(profile);
            }
Example #2
0
        /// <summary>
        /// Builds dictionaries relating fully qualified symbol names to profiles.
        /// </summary>
        protected void BuildFullyQualifiedMaps()
        {
            Queue <FQSMapWorkItem> workItemQueue = new Queue <FQSMapWorkItem>(
                from T p in this.CompositionMap.Roots
                select new FQSMapWorkItem(p, null)
                );

            this.FullyQualifiedNameMap   = new Dictionary <string, T>();
            this.FullyQualifiedSymbolMap = new Dictionary <string, T>();

            while (workItemQueue.Count > 0)
            {
                FQSMapWorkItem wi = workItemQueue.Dequeue();

                if (wi.Profile.FullSymbol != null)
                {
                    this.FullyQualifiedSymbolMap[wi.Profile.FullSymbol] = wi.Profile;
                }

                if (wi.Profile.FullName != null)
                {
                    this.FullyQualifiedNameMap[wi.Profile.FullName] = wi.Profile;
                }

                foreach (DirectedEdge edge in this.CompositionMap.Successors(wi.Profile))
                {
                    T target = (T)edge.Target;

                    if (wi.Visited.Contains(target))
                    {
                        continue;
                    }

                    workItemQueue.Enqueue(new FQSMapWorkItem(target, wi));
                }
            }
        }