Hello All!

I'm trying to fix some proprietary compiler directives by using a filter. I 
discovered that if I pass a file through a filter, the file documentation is 
generated correctly, but auto-linking seems broken!

I came up with a very simple example. My filter is implemented in Python and it 
just opens the file and prints every single line, it doesn't change anything. I 
confirmed this by comparing the filter's input and output (by redirection) with 
a diff and there are no differences at all.

I redirected the filter's output to a file called filtered_c.h. If I include 
this file as a source file, I get auto-link to work. If I pass the original 
header file through the filter, auto-linking is broken and I get a warning

latex_double.md:7: warning: unable to resolve reference to `some_c_function' 
for \ref command

If I comment out the FILTER_PATTERNS line in the Doxyfile, auto-linking works.

This is really an issue for me, as I'm also supporting parsing assembly files 
through a filter script and I see the same behavior there: the file 
documentation is perfect, but no auto-linking.

Any thoughts are very welcome! Thanks!

This is my Doxyfile:


# General options
PROJECT_NAME          = "Double table headers in LaTeX"

INPUT                 = doc/latex_double.md
INPUT                 += include/regular_c.h
#INPUT                 += filtered_c.h

#You should not need to change the rest of the file
OUTPUT_DIRECTORY       = output_doc
GENERATE_HTML          = YES
GENERATE_TREEVIEW      = YES
GENERATE_LATEX         = YES
OPTIMIZE_OUTPUT_FOR_C  = YES

FILTER_PATTERNS       += *.h="c:\Python27\python filter\dummy_filter.py"


My filter is:

from __future__ import print_function

import sys

if len(sys.argv) != 2:
    sys.exit(1)

def extract_globals(filename):

    with open(filename, 'r') as infile:
            for line in infile:
                print(line, end='')

extract_globals(sys.argv[1])

My Markdown source is:


# Chapter Title {#chapter_title}

Some text here

# Introduction {#chapter_intro}

Loren Ipsum @ref some_c_function

And my header file is:


/**
* @file regular_c.h
* @brief This is a simple C header file with some examples.
*/

#ifndef REGULAR_C_H_
#define REGULAR_C_H_

/* ----------------------------------------------------------------------------
* If building with a C++ compiler, make all of the definitions in this header
* have a C binding.
* ------------------------------------------------------------------------- */
#ifdef __cplusplus
extern "C"
{
#endif    /* ifdef __cplusplus */

/* ----------------------------------------------------------------------------
* Include files
* --------------------------------------------------------------------------*/

/* ----------------------------------------------------------------------------
* Defines
* --------------------------------------------------------------------------*/

/* ----------------------------------------------------------------------------
* Global variables and types
* --------------------------------------------------------------------------*/

/**
* This enumeration has the return codes for the @ref some_c_function function.
*/
typedef enum __SOME_C_FUNCTION_RETURN {
    SOME_C_FUNCTION_RETURN_everthing_ok        = 0,    ///< Nothing to see here
    SOME_C_FUNCTION_RETURN_some_weird_error,           ///< This is not the 
error you're looking for
    SOME_C_FUNCTION_RETURN_some_very_bad_error,        ///< This is not the 
error we are looking for
    SOME_C_FUNCTION_RETURN_life_is_sad_just_cope       ///< Move along
} SOME_C_FUNCTION_RETURN;

/* ----------------------------------------------------------------------------
* Function prototype definitions
* --------------------------------------------------------------------------*/
/**
* @brief Some C function that is here just as an example.
*
* This function doesn't actually do anything useful.
*
* @param[in]   v   We do something with this value.
* @param[out]  ptr Some value will be written here.
*
* @return Returns a value that depends on what happened:
* - @ref SOME_C_FUNCTION_RETURN_everthing_ok
*        Uh, everything is under control. Situation normal.
* - @ref SOME_C_FUNCTION_RETURN_some_weird_error
*        Uh, had a slight weapons malfunction.
* - @ref SOME_C_FUNCTION_RETURN_some_very_bad_error
*        We had a reactor leak here now. Give us a few minutes to lock it down.
*        Large leak... very dangerous.
* - @ref SOME_C_FUNCTION_RETURN_life_is_sad_just_cope
*        Who is this?? What's your operating number?
*
*/
int some_c_function(uint32_t v, void* ptr);

/* ----------------------------------------------------------------------------
* Close the 'extern "C"' block
* ------------------------------------------------------------------------- */
#ifdef __cplusplus
}
#endif    /* ifdef __cplusplus */

#endif /* REGULAR_C_H_ */






Any thoughts are very welcome! Thanks!

Regards,
____________________________________________________________
Leonardo Pereira Santos | ON Semiconductor
Design Engineer

200-611 Kumpf Dr        | Waterloo, Ontario, Canada, N2N 1A8
519-884-9696 x2269 (O)  | 
leonardo.pereirasan...@onsemi.com<mailto:leonardo.pereirasan...@onsemi.com>


_______________________________________________
Doxygen-users mailing list
Doxygen-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/doxygen-users

Reply via email to