Breaking test: Unable to resolve multiple matches for function

When a function is both declared and implemented, doxygenfunction fails with the message:

Warning
doxygenfunction: Unable to resolve multiple matches for function “open_di” with arguments () in doxygen xml output for project “decl_impl” from directory: ../../examples/doxygen/decl_impl/xml/

View example in:
function.html#separated-declaration-implementation-example
Fix: Allows picking a named function without arg spe

Also if there are several candidates, if all candidates' arguments are
identical.
Move decl_impl example to specific folder

And extend the class example to have an impl file as well for
testing.
Update gitignore files to have clean repository

Tired of stuff lying around confusing the status but still want some of
that stuff for development.
Improve function argument handling for overloads

The previous approach tried to read appropriate data out of the xml
object hierarchy and use it to figure out which function overload to
use. Unfortunately it only looked at the first entry and so for 'const'
declarations it would only see the word 'const' rather than a useful
type.

Here we introduce a TextRenderer based on Sphinx's text rendering
functionality and use it to render the xml arguments to a text string
and then do the comparisons based on comparing that to the input string
of the directive. Should prove more accurate.
Add no-link options to clean up some warnings
Display potential matches when function arg matching fails
Fix documentation to reference correct args
Provide console & output lists of function mismatches

We change the warning mechanism so that we can provide the raw_text and
the nodes if desirable.

Then we use that functionality to provide a text list of the function
mismatch options for the console output and a literal block text list
for the actual output.
Add mask functionality to screen node attributes

We want to hide the declname and defname attributes from the param
nodes for the signature rendering. We can't use filters as they are
parsed as string attributes on the param node rather than child nodes.

So we introduce a masking concept that allows us to hide or change
particular attributes in a render pass without altering the actual
values of the parsed nodes themselves as we might need those values
intact for other rendering passes.
Update change log
Merge branch 'args'
Switch to relative imports

Slightly better form I think.
Fix filter documentation typo
Improve function finding code to ignore implementation files

We've had a bug report that if we have a c-style function in a header
file & implementation file then Breathe gets confused between them and
fails to match.

It seems that doxygen handles this case by seeing that they are the same
and attaching all the documentation from the implementation to the xml
output for the header file declaring. So we only really need to get
Breathe to look for the header file version.

To this end, we ignore any functions in a '.c' file. We'll expand this
to include other implementation types and a config variable for the
list.

In order to achieve this we switch the function finding from matcher
stacks to filters and update to filter code to handle compound/member
entries in the index.xml file in a similar way to the matcher stack
code. In particular, if we match a 'member' in the index.xml then we
grab the refid from it and use that to pull the full 'memberdef' out of
the associated compound xml file.

Additionally we change the argument handling in the function directive a
little to regex strip down the args coming from the text render to match
what we've done to the user's provided arguments.
Add config variable for implementation filename extensions

And document the set up.

This involves switching the EndsWithFilter to handle a list of options
instead of a single string.
Merge branch 'functions'
Modify `render_compound` to use kind rather than name for `objtype`.

This sets the CSS class of the emitted HTML element to the object kind
(e.g., `class` or `struct`) rather than the name of the object.

This change does not seem to affect the appearance of the generated pages
when using the Haiku theme, since it does not define rules for these
CSS classes in either case.
Display const/volatile qualifiers, "=0" for abstract methods, and "virtual" for virtual methods.
Make const & volatile checks more explicit

The value of 'const' can be 'no' so checking for its truthiness is not
suitable, instead we can for 'yes'.

The doxygen xml output doesn't seem to handle 'volatile' as far as
converting it to a xml attribute so we have to check the argsstring
explicitly. Hopefully they'll address that one day or we'll figure out
why they haven't done it.