[mdoc-update] Refactor type+member traversal algorithm.
authorJonathan Pryor <jonpryor@vt.edu>
Wed, 1 Sep 2010 04:04:41 +0000 (00:04 -0400)
committerJonathan Pryor <jonpryor@vt.edu>
Wed, 1 Sep 2010 15:07:31 +0000 (11:07 -0400)
commit0d48c3ea1d4bc3eb6ae286482ce6ab0e406b6455
treec75c34ca0c79eaf7b73d456f9a8632c5dff45c4a
parentaf4d3c847d489ef7f4372658183107c2336a0fab
[mdoc-update] Refactor type+member traversal algorithm.

ECMA wants to import some Microsoft documentation for use in the next version
of the ECMA standard (hence mdoc-update-ecma-xml).

Unfortunately, Microsoft doesn't use the Microsoft XML Documentation format
for their internal class library documentation.  They use some other XML
dialect (which looks similar yet different from "msxdoc").

So to make life easier for ECMA, mdoc-update of needs to support yet another
import format.  Yay?

Unfortunately:

  - The current import logic uses no abstractions; we have "separate" code
    paths when importing msxdoc's vs. ECMA docs.  We need a sane abstraction
    if we're going to add a third import format.

  - Additionally, the ECMA doc import logic is a mass of spaghetti code, as
    ECMA import also controls type+member enumeration order.

Start trying to bring some sanity to this by adding a DocumentationEnumerator
abstraction so that some of the XmlReader maintenance for importing/processing
ECMA documentation can be split out.
mcs/tools/mdoc/Mono.Documentation/monodocer.cs