Documentation inside preprocessor macro definition

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Documentation inside preprocessor macro definition

Matthias Möller
Dear all,

I run into the following problem documenting my code with doxygen.
Large parts of the code are created using preprocessor macros like this

/// Helper macro for generating selectors for specialialized
/// implementations of element-wise binary operations; generic
/// implementation follows below
#define FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS(OPNAME)         \
    /** @brief                                                          \
        Selector for (specialized) implementation of                    \
        fdbb::internal::elem_##OPNAME##<A,B>(A&& a, B&& b) function     \
    */                                                                  \
    template<typename A, typename B, typename = void>                   \
    struct elem_##OPNAME##_spec : public std::integral_constant<EnumETL, EnumETL::GENERIC>{};

FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS(mul)
FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS(div)
FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS(pow)

#undef FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS


Running doxygen (v1.8.11) with the following configuration of the preprocessor

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = NO
SEARCH_INCLUDES        = YES
INCLUDE_PATH           =
INCLUDE_FILE_PATTERNS  =
PREDEFINED             =
EXPAND_AS_DEFINED      =
SKIP_FUNCTION_MACROS   = YES

produces the following output (html):

struct  elem_mul_spec
 \ Selector for (specialized) implementation of \ fdbb::internal::elem_mul<A,B>(A&& a, B&& b) function \  More...

Obviously, the backslash that is needed for multiline macros is included in the documentation.
Any help on how to configure doxygen and/or modify the documentation is appreciated.

Best regards,
Matthias



------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. http://sdm.link/zohodev2dev
_______________________________________________
Doxygen-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-users
Loading...