Example #1
0
        /// <include file='doc\BatchParser.uex' path='docs/doc[@for="BatchTemplateParser.GetSourceReferences"]/*' />
        /// <devdoc>
        /// </devdoc>
        internal SourceReference[] GetSourceReferences()
        {
            Hashtable curReferences = new Hashtable(SymbolHashCodeProvider.Default, SymbolEqualComparer.Default);

            // Create a SourceReference for each source file and add it the the hashtable
            foreach (string source in _sources)
            {
                curReferences[source] = new SourceReference(source);
            }

            for (int i = 0; i < _dependencies.Count; i++)
            {
                ArrayList       deplist = (ArrayList)_dependencies[i];
                SourceReference sr      = (SourceReference)curReferences[((string)_sources[i])];

                // Go through all the dependencies of the current SourceReference
                foreach (string dep in deplist)
                {
                    // If the dependency is itself in the hashtable, add it as a
                    // dependency of the SourceReference object.
                    SourceReference srdep = (SourceReference)curReferences[dep];
                    if (srdep != null)
                    {
                        sr.AddDependency(srdep);
                    }
                }
            }

            SourceReference[] result = new SourceReference[curReferences.Count];

            {
                int k;
                IDictionaryEnumerator en;

                for (en = curReferences.GetEnumerator(), k = 0; en.MoveNext(); k++)
                {
                    result[k] = (SourceReference)en.Value;
                }
            }

            return(result);
        }