<?xml version="1.0" encoding="utf-8" ?>
<members>
  <member name="Documentation">
    <remarks>
      <para class="note">
        A Documentation instance is an accessor to the documentation file, it enables you
        to access information such as the table of contents for the documentation or
        documentation for a single type/member.
      </para>
      <para>
        A documentation file is a .NET managed code DLL, Visual Studio Solution/Project or
        a Live Documenter project file (.ldec).
      </para>
      <para>
        All returned results are provided in XML format, the specification for this format
        can be found <a href="#">here</a>.
      </para>
    </remarks>
    <example>
      <para>Documentation can be instantiated simply by passing in a Visual Studio solution
        file, project or .NET library. Further you can create Live Documenter project files
        and load those for a more flexability.
      </para>
      <para>
        You will need to call <see cref="Load" /> to load the documentation in to memory.
      </para>
      <code>
using TheBoxSoftware.API.LiveDocumenter
{
    void Main()
    {
        Documentation fromSolution = new Documentation("c:\\Build\Output\VsSolution.sln");
        fromSolution.Load();
        
        Documentation fromLdProj = new Documentation("c:\\projectoutput.ldproj");
        fromLdProj.Load();
    }
}
      </code>
    </example>
  </member>

  <member name="Documentation.ctor">
    <summary>
      Initialises an instance of the Documentation class.
    </summary>
    <param name="forDocument">The documentation file to manage.</param>
    <exception cref="ArgumentException">
      Thrown when the provided parameter <paramref name="forDocument" /> is null or empty.
    </exception>
  </member>

  <member name="GetDocumentationFor.key">
    <exception cref="EntryNotFoundException">Thrown when the key provided does not resolve to a member in the documentation.</exception>
    <exception cref="InvalidOperationException">Thrown when the Load method was not called, call the Load method first.</exception>
    <remarks>
      Keys are generated each time a documentation set is produced, there is no gaunrentee that between each load
      the key will be the same. If you are looking for a stable reference use cref paths and the
      <see cref="GetDocumentationFor(System.String)" /> method.
    </remarks>
  </member>

  <member name="GetDocumentationFor.cref">
    <exception cref="EntryNotFoundException">Thrown when the key provided does not resolve to a member in the documentation.</exception>
    <exception cref="DocumentationException">
      Thrown when the provided <paramref name="crefPath" /> does not parse correctly.
    </exception>
    <exception cref="ArgumentNullException">
      The provided <paramref name="crefPath" /> was null or empty.
    </exception>
    <exception cref="InvalidOperationException">Thrown when the Load method was not called, call the Load method first.</exception>
    <remarks>
      <para>
        A cref path is a way of determining a unique identifier for a type and is generated by the XML documentation compiler when XML
        comments are produced.
      </para>
      <para>
        You can retrieve cref paths easily in the API by finding the element you want to GetDocumentationFor from the table of contents.
      </para>
    </remarks>
  </member>

  <member name="Load">
    <remarks>
      <para>If this method is not called before trying to search and retrieve documentation you will receive a <see cref="DocumentationException" /></para>
      <note>
        The load method, loads the documentation in to memory. Instantiating documentation can be a memory intensive activity,
        where possible you should create cacheing mechanisms to only retrieve documentation when it has changed.
      </note>
    </remarks>
    <exception cref="DocumentationException">
      <para>The provided file [{0}] and extension is not supported.</para>
      <para>
        The documentation file that the <see cref="DocumentationException" /> class was instantiated with is not a supported format.
      </para>
    </exception>
  </member>

  <member name="GetTableOfContents">
    <exception cref="InvalidOperationException">Thrown when the Load method was not called, call the Load method first.</exception>
  </member>
</members>