Commits on Jul 20, 2011
Commits on Jul 5, 2011
  1. Fixing abandoned "items" to fix latex output

    The more targetted directives were entering into the rendering hierarchy
    at the MemberDefTypeSubRenderer level. The class and its subclasses
    return a definition_list_item object which was not being put under an
    appropriate definition_list.
    This is an error that it seems the html output was fairly forgiving of,
    but the latex output complained about \items that were outside of a
    \begin \end scope.
    So here we change our directives so that they wrap the returned nodes in
    a definition_list before passing them back to Sphinx.
    This seems to solve the problem of the isolated items but the latex
    output for the testsuite is currently still failing as the "nutshell"
    example contains too much indented hierarchy and so exceeds latex's
    built in limit of 6 nested listing scopes.
    I'm not entirely sure what it do about this. For the benefit of the
    testsuite I might have to edit the nutshell example, but that only
    delays the issue.
    Michael Jones committed Jul 5, 2011
Commits on Jul 2, 2011
  1. Acknowledged davidm as a contributer

    Michael Jones committed Jul 2, 2011
Commits on Jun 29, 2011
  1. Further improvements to the treatment of groups

    We improve the group name logic so that it outputs an "Unnamed Group"
    title for any unnamed groups, as opposed to nothing.
    We add support for outputting the group description.
    We add a "userdefined" example to test the functionality and a
    "groups.rst" page to document it.
    Finally, as we now have two pieces of code in the "source" directory, we
    move them into a separate subfolder.
    Michael Jones committed Jun 29, 2011
Commits on Jun 26, 2011
  1. Remove "domains" page from testpage toctree

    As it is referenced from elsewhere and so confuses some of the sphinx
    Michael Jones committed Jun 26, 2011
  2. Improved handling user-defined member groups @{ ... @}

    ``.. doxygenclass:: :members:`` now displays members in
    user-defined groups (which might contain public members) as well as
    public groups.
    davidm committed with Michael Jones Jun 25, 2011
Commits on May 21, 2011
  1. Restore doxygen par title functionality as exposed by the ALIASES

    During a previous change we lost support for this.
    We no longer need to use an emphasis node as the field_name node already
    adds emphasis by default in the html output.
    Michael Jones committed May 21, 2011
  2. Removing specification file which is long outdated

    Perhaps I should be keeping it up to date, but similar information is
    available and better placed elsewhere now.
    Michael Jones committed May 21, 2011
  3. Changed all references to "restructured text" to reStructuredText.

    That's how it is meant to be referred to apparently.
    Michael Jones committed May 21, 2011
Commits on May 20, 2011
  1. Introduce basic caching for the xml parsing results

    Previously, we were reparsing the xml files everytime we came across
    one. So this would happen to the same xml files every directive which
    can be numerous if people take the care to layout out their
    documentation with finely grained directives.
    Here we introduce basic dictionary based caching for the results of the
    parsing which means we only ever parse an specific xml file once.
    This also attempts to clear up some direct usage of os module functions
    for path operations.
    It is probably worth considering this information when it comes to the
    "filter" finders, as they don't currently have a limit to the depth they
    search and so in many cases with needlessly open files that they could
    Michael Jones committed May 20, 2011
  2. Change README to reflect current version of Python

    I realise it probably isn't great to develop with the latest and
    greatest but best to be honest until I fix it properly.
    Michael Jones committed May 20, 2011
  3. Changed doxygenvariable docs to fake warning instead of generate it

    We use this method to reflect what the users will see in the final
    output without having a large number of warnings generated at build
    Michael Jones committed May 20, 2011
Commits on May 18, 2011
  1. Adding missing testsuite/source/variable.rst.

    mbolivar committed May 18, 2011
Commits on May 17, 2011
  1. Adding doxygenvariable directive.

    There was already a VariableMemberDefTypeSubRenderer, but there was no
    top-level directive for getting docs on global variables.  This is
    added with the doxygenvariable directive.
    mbolivar committed May 17, 2011
Commits on May 15, 2011
  1. Makes domain references obey the no-link flag

    The introduction of the domain references lead to a lot of duplicate ids
    in the testsuite which would produce a lot of warnings.
    Here we make sure that if the no-link flag is specified then we never
    create an appropriate domain handler factory. Instead we give a dummy
    factory which always creates null domain handlers so we don't get any
    Involved making sure the options are passed through a few levels and
    adding the no-link flag to the doxygenfile directive which previously
    lacked it.
    Michael Jones committed May 15, 2011
  2. Ran "pep8" check over main file

    Ignoring "E501 line too long" and the final "W391 blank line at end of
    Mostly whitespace changes, the only real difference is switching from
    "has_key" to "in" for dictionary checks. Not sure how backwards
    compatible that is, google won't tell me.
    Michael Jones committed May 15, 2011
  3. Fixed support for using Sphinx domains to reference Classes

    A chunk of the work was unfortunatel mixed in with the last commit. The
    main parts are that we introduce some derived classes to the Compound
    renderer so that we can handle specific cases. In this cases, we create
    a specialise subclass for handling Classes in the output when ever the
    Compound object has kind "class".
    Here we add in an extra level of checks to cover the case we're in where
    the first renderer_factory we're creating is at the Compound level so we
    need to figure out the domain by parsing the referenced content and
    looking for a location node.
    And we fix the partly implemented "get_class_target" function to called
    the appropriate id function and correctly figure out the class name.
    The domain handler code could certainly do with some refactoring. The
    function and class code are very similiar, the duplication is
    Michael Jones committed May 15, 2011
  4. Fixing domains references for functions & basic work for classes

    When attempting to add support for Sphinx domain references to classes
    it become apparent that the support for functions that was there was no
    longer working.
    So we change tack and fix the function code first which mostly came down
    to not properly detecting the domain and switching to using the
    appropriate domain handler, which ultimately was down to putting too
    many lines inside a try:catch statement. The try:catch was suppressing
    an error on one of the lines that shouldn't have been in there in the
    first place.
    A bit of restructuring was required to compensate. Unfortunately
    introducing what is in essence a RendererFactoryFactoryFactory. Surely
    not needed, but seemingly so.
    We include some basic starter code for the class domain references but
    that is not really working at the moment.
    Finally, we improve the domains documentation and promote it to a top
    level page in the hope that I don't forget about it so easily next time.
    Michael Jones committed May 15, 2011
Commits on May 12, 2011
  1. Added example and definition of define directive to docs

    To cover the excellent work done by mbolivar.
    Michael Jones committed May 12, 2011
  2. Adding doxygendefine directive.

    mbolivar committed May 12, 2011
Commits on May 2, 2011
  1. Check each namespace and class we render against a valid list

    Again, this is an issue with cross over into xml files for namespaces
    including namespaces which weren't in the original file we were trying
    to render.
    As a result, we set up a gather filter which looks at the compounddef
    for the file we're trying to render and stores all the valid
    innerclasses and innernamespaces referenced by it, in a list it is
    Then we re-use that list by every time we come across and namespace or
    class to render we check it against that original list to make sure
    we're not going somewhere we shouldn't.
    Michael Jones committed May 2, 2011
Commits on May 1, 2011
  1. Account for namespaces spread across files for doxygenfile directive

    Previously, if we were rendering a file with a namespace in it we would
    cross over to the namespace xml file and render everything in that.
    Unfortunately, as namespaces can exist across multiple source files,
    this led us to render stuff that isn't in the file we're interested in.
    So we extend the filters some more to ignore "memberdef" and
    "compounddef" nodes which are from a file that we're not interested in.
    The former is required for ignoring functions and variables that are in
    namespaces we have interests in but not from our file. The latter is
    required for ignoring classes and structs in the same situation.
    The exception to the rule is the "namespace" compounddef which gets an
    arbitrary file location attribute even though it can be spread across
    multiple files, so we always consider them.
    Finally, we change the RefType renderer to only render the:
    	class ClassName
    bit if there is content to go below it. This allows us to filter only
    the content and not worry about having to filter out the headers as well
    which would be a tricky cross-xml-file operation.
    Michael Jones committed May 1, 2011
Commits on Apr 30, 2011
  1. Improve the doxygenfile directive examples

    Added the output for the file with nested namespaces
    Michael Jones committed Apr 30, 2011
  2. Improve index filtering to remove group errors

    We're essentially sweeping these errors under the rug at the moment.
    There is no effort in Breathe to account for groups and they are causing
    some troubles in the doxygenindex directive so we apply a filter which
    stops us from rendering the offending contents of the groups.
    This is a stop gap as it only stops as rendering functions as those were
    causing trouble in our example. The best solution is this is surely
    something completely different.
    Whilst we're here, we take the time to switch from the
    OrFilter(NotFilter(...), NotFilter(...)) to the logically equivalent
    NotFilter(AndFilter(..., ...)) which is a more intuitive way of phrasing
    the issue.
    This should probably be done for other filters.
    Michael Jones committed Apr 30, 2011
  3. Improve namespace rendering for doxygenfile directive

    Previously, we have had issues with the fact that classes and namespaces
    are always listed as top level elements in doxygen output for files,
    namespaces and classes. This means that a in a three level hierarchy of
    namespaces one:2️⃣:three, the doxygen output for the file that
    contains this will have:
    And the doxygen output for namespace "one" will have:
    So if we render all namespaces at all levels we have a lot of
    repetition. So here we make an attempt to filter out objects at any one
    level that will be included in other level we are rendering. So in the
    top example, we only render namespace "one" as "two" and "three" will be
    rendered when we get to them inside namespace "one". And again, for
    rendering the contents of namespace "one" we only render "one::two" as
    we know will render "one:2️⃣:three" as part of two.
    In order to do this we track all the namespaces (including class names,
    as they can have subclasses) for any one compounddef node and when we
    render we apply a namespace filter which tests each innerclass and
    innernamespace against the list of namespaces found and only renders
    them if they are not a subpart of one of those namespaces.
    This is achieved with the NamespaceFilter.
    michaeljones committed with Michael Jones Apr 30, 2011
Commits on Apr 28, 2011
  1. Improved the documentation for doxygenfile

    To cover the multifile example
    michaeljones committed Apr 28, 2011
  2. Adding example file level doxygen comment

    Allows us to test that the doxygenfile directive is handling it
    michaeljones committed Apr 28, 2011
  3. Doxygenfile can distinguish between files with the same name

    Previously, if you used the doxygenfile directive with a filename and
    there were two files matching that name in the project, it would
    silently choose one and output that without any control to choose the
    Now, it will complain if there are multiple matches and you must provide
    enough of a filepath to make it a unique selection within the project.
    eg. in the files submitted for this commit, it would be a good idea to
    	.. doxygenfile:: one/Util.h
    	.. doxygenfile:: e/Util.h
    Will be sufficient to distinguish between the available options.
    We achieve this using a new approach to finding items based on the
    filters we've been using for the renderers. Seems to be behaving well
    though it is not always trivial to sit down and figure out the logic of
    a large combination of filters but it still seems easier than figuring
    out the match_stack which was pretty random.
    We're only matching at the compounddef level at the moment so this will
    have to be extended to match other levels.
    michaeljones committed Apr 28, 2011
Commits on Apr 26, 2011