[Doxygen-users] multiple defines and typedefs
Brought to you by:
dimitri
From: Robb S. <Rob...@au...> - 2009-09-24 16:42:39
|
We have a cross-platform SDK for which we generate one doc intended to cover all platforms. There's lots of code enclosed in platform-specific #ifdefs, so I have all those defines predefined in my doxygen config, which works great. Except that we have some constants and typedefs that are declared and defined differently on different platforms. Here's a simplified made-up example: /*! \file testdefines.h */ #ifdef WINDOWS32 typedef int MyInt32; //!< Type representing a 32-bit integer. Win32 declaration. typedef __int64 MyInt64; //!< Type representing a 64-bit integer. Win32 declaration. #define MyInt32MAXVAL 0x7FFFFFF0 //!< Maximum value that can be stored in the ::MyInt32 type. Win32 declaration. #define MyInt32MINVAL 0x80000000 //!< Minimum value that can be stored in the ::MyInt32 type. Win32 declaration. #endif #ifdef WINDOWS64 typedef int MyInt32; //!< Type representing a 32-bit integer. Win64 declaration. typedef __int64 MyInt64; //!< Type representing a 64-bit integer. Win64 declaration. #define MyInt32MAXVAL 0x7FFFFFF0 //!< Maximum value that can be stored in the ::MyInt32 type. Win64 declaration. #define MyInt32MINVAL 0x80000000 //!< Minimum value that can be stored in the ::MyInt32 type. Win64 declaration. #define MyInt64MAXVAL 0x7FFFFFFFFFFFFFFF //!< Maximum value that can be stored in the ::MyInt64 type. Win64 declaration. #define MyInt64MINVAL 0x8000000000000000 //!< Minimum value that can be stored in the ::MyInt64 type. Win64 declaration. #endif #ifdef LINUX32 typedef int MyInt32; //!< Type representing a 32-bit integer. Linux32 declaration. typedef long long MyInt64; //!< Type representing a 64-bit integer. Linux32 declaration. #define MyInt32MAXVAL 0x7FFFFFF0 //!< Maximum value that can be stored in the ::MyInt32 type. Linux32 declaration. #define MyInt32MINVAL 0x80000000 //!< Minimum value that can be stored in the ::MyInt32 type. Linux32 declaration. #endif #ifdef LINUX64 typedef int MyInt32; //!< Type representing a 32-bit integer. Linux64 declaration. typedef long MyInt64; //!< Type representing a 64-bit integer. Linux64 declaration. #define MyInt32MAXVAL 0x7FFFFFF0 //!< Maximum value that can be stored in the ::MyInt32 type. Linux64 declaration. #define MyInt32MINVAL 0x80000000 //!< Minimum value that can be stored in the ::MyInt32 type. Linux64 declaration. #define MyInt64MAXVAL 0x7FFFFFFFFFFFFFFF //!< Maximum value that can be stored in the ::MyInt64 type. Linux64 declaration. #define MyInt64MINVAL 0x8000000000000000 //!< Minimum value that can be stored in the ::MyInt64 type. Linux64 declaration. #endif With this setup, I get bad results. - For the typedefs, the brief listing includes only the FIRST declaration, with its comment. The following definitions are not included. The detailed description on the other hand shows the LAST declaration, with the comment lines from the fourth, third and second declarations. - For the defines, the brief listing includes ALL declarations separately, but each of them is given the same comment, taken from the FIRST declaration. Then, there is a detailed description for each declaration, but each of them is given all the comment lines for that define EXCEPT the one shown in the brief description. Ideally what I'd like is either: a) to have each declaration of a define or a typedef show up separately, but each with only its OWN comment. b) to have each define and typedef only show up once, while hiding its value/declaration, so that I can just say "This define/type is different on different platforms." I can't figure out any way to do this. How would you approach this problem? -r |