GNOME Bugzilla – Bug 613616
PREPROCESS is broken with complex code.
Last modified: 2010-06-15 11:22:25 UTC
Created attachment 156777 [details] The demo files With the attached demo code. tar xzvf demo.tgz doxygen etc/ace.doxygen # something bad The "ace_wchar.h File Reference" shows only some macro definitions without the class 'ACE_Wide_To_Ascii' and class 'ACE_Ascii_To_Wide'. The 2 classes needs ACE_HAS_WCHAR to be defined, and it actually defined in 'config-doxygen.h'. The including chain is: ace_wchar.cpp -> ace_wchar.h -> config-macros.h -> config.h -> config-doxygen.h If I commnents out the line '#if defined ACE_HAS_WCHAR', all things become OK. vim ace/ace_wchar.h ...... doxygen etc/ace.doxygen # all thing ok If I do 'rm ace/ace_wchar.cpp', all things go well too. Look sharp! I do remove the '.cpp' file, not the header file itself. rm ace/ace_wchar.cpp doxygen etc/ace.doxygen # all thing ok
==============The bad result: Defines #define ACE_USES_L_PREFIX 1 #define ACE_TEXT_WIDE_I(STRING) STRING #define ACE_TEXT_WIDE(STRING) ACE_TEXT_WIDE_I (STRING) #define ACE_TEXT(STRING) STRING #define ACE_LIB_TEXT(STRING) STRING #define ACE_TEXT_ALWAYS_CHAR(STRING) STRING #define ACE_TEXT_ALWAYS_WCHAR(STRING) ACE_Ascii_To_Wide (STRING).wchar_rep () #define ACE_TEXT_CHAR_TO_TCHAR(STRING) STRING #define ACE_TEXT_WCHAR_TO_TCHAR(STRING) ACE_Wide_To_Ascii (STRING).char_rep () #define ACE_TEXT_ANTI_TO_TCHAR(STRING) ACE_Wide_To_Ascii (STRING).char_rep () Typedefs typedef char ACE_TCHAR typedef wchar_t ACE_ANTI_TCHAR ==============The good result: Classes class ACE_Wide_To_Ascii A lightweight wchar* to char* string conversion class. More... class ACE_Ascii_To_Wide A lightweight char* to wchar* string conversion class. More... Defines #define ACE_WSTRING_HAS_USHORT_SUPPORT #define ACE_USES_L_PREFIX 1 #define ACE_TEXT_WIDE_I(STRING) L##STRING #define ACE_TEXT_WIDE(STRING) ACE_TEXT_WIDE_I (STRING) #define ACE_TEXT(STRING) STRING #define ACE_LIB_TEXT(STRING) STRING #define ACE_TEXT_ALWAYS_CHAR(STRING) STRING #define ACE_TEXT_ALWAYS_WCHAR(STRING) ACE_Ascii_To_Wide (STRING).wchar_rep () #define ACE_TEXT_CHAR_TO_TCHAR(STRING) STRING #define ACE_TEXT_WCHAR_TO_TCHAR(STRING) ACE_Wide_To_Ascii (STRING).char_rep () #define ACE_TEXT_ANTI_TO_TCHAR(STRING) ACE_Wide_To_Ascii (STRING).char_rep () #define ACE_TEXT_SERVICE_TABLE_ENTRY SERVICE_TABLE_ENTRYA #define ACE_TEXT_STARTUPINFO STARTUPINFOA #define ACE_TEXT_WIN32_FIND_DATA WIN32_FIND_DATAA #define ACE_TEXT_OSVERSIONINFO OSVERSIONINFOA #define ACE_TEXT_EXPLICIT_ACCESS EXPLICIT_ACCESS_A #define ACE_TEXT_CreateEvent ::CreateEventA #define ACE_TEXT_CreateFile ::CreateFileA #define ACE_TEXT_CreateFileMapping ::CreateFileMappingA #define ACE_TEXT_CreateMutex ::CreateMutexA #define ACE_TEXT_CreateProcess ::CreateProcessA #define ACE_TEXT_CreateSemaphore ::CreateSemaphoreA #define ACE_TEXT_CreateService ::CreateServiceA #define ACE_TEXT_ExpandEnvironmentStrings ::ExpandEnvironmentStringsA #define ACE_TEXT_FindFirstChangeNotification ::FindFirstChangeNotificationA #define ACE_TEXT_FindFirstFile ::FindFirstFileA #define ACE_TEXT_FindNextFile ::FindNextFileA #define ACE_TEXT_FormatMessage ::FormatMessageA #define ACE_TEXT_FreeEnvironmentStrings ::FreeEnvironmentStringsA #define ACE_TEXT_GetComputerName ::GetComputerNameA #define ACE_TEXT_GetEnvironmentStrings ::GetEnvironmentStringsA #define ACE_TEXT_GetFileAttributes ::GetFileAttributesA #define ACE_TEXT_GetModuleFileName ::GetModuleFileNameA #define ACE_TEXT_GetTempPath ::GetTempPathA #define ACE_TEXT_GetUserName ::GetUserNameA #define ACE_TEXT_GetUserNameEx ::GetUserNameExA #define ACE_TEXT_GetVersionEx ::GetVersionExA #define ACE_TEXT_LoadLibrary ::LoadLibraryA #define ACE_TEXT_MoveFileEx ::MoveFileExA #define ACE_TEXT_WaitNamedPipe ::WaitNamedPipeA #define ACE_TEXT_OpenFileMapping ::OpenFileMappingA #define ACE_TEXT_OpenSCManager ::OpenSCManagerA #define ACE_TEXT_OpenService ::OpenServiceA #define ACE_TEXT_OutputDebugString ::OutputDebugStringA #define ACE_TEXT_RegisterEventSource ::RegisterEventSourceA #define ACE_TEXT_RegisterServiceCtrlHandler ::RegisterServiceCtrlHandlerA #define ACE_TEXT_RegConnectRegistry ::RegConnectRegistryA #define ACE_TEXT_RegCreateKeyEx ::RegCreateKeyExA #define ACE_TEXT_RegDeleteKey ::RegDeleteKeyA #define ACE_TEXT_RegDeleteValue ::RegDeleteValueA #define ACE_TEXT_RegEnumKeyEx ::RegEnumKeyExA #define ACE_TEXT_RegEnumValue ::RegEnumValueA #define ACE_TEXT_RegCreateKey ::RegCreateKeyA #define ACE_TEXT_RegOpenKey ::RegOpenKeyA #define ACE_TEXT_RegOpenKeyEx ::RegOpenKeyExA #define ACE_TEXT_RegQueryValueEx ::RegQueryValueExA #define ACE_TEXT_RegSetValueEx ::RegSetValueExA #define ACE_TEXT_ReportEvent ::ReportEventA #define ACE_TEXT_SearchPath ::SearchPathA #define ACE_TEXT_StartService ::StartServiceA #define ACE_TEXT_StartServiceCtrlDispatcher ::StartServiceCtrlDispatcherA #define ACE_TEXT_SetFileSecurity ::SetFileSecurityA #define ACE_TEXT_SetEntriesInAcl ::SetEntriesInAclA Typedefs typedef char ACE_TCHAR typedef wchar_t ACE_ANTI_TCHAR
Created attachment 156865 [details] A more simple demo
Created attachment 156869 [details] remove rubbish file
Should be fixed in the latest subversion snapshot already.
This bug was previously marked ASSIGNED, which means it should be fixed in doxygen version 1.7.0. Please verify if this is indeed the case. Reopen the bug if you think it is not fixed and please include any additional information that you think can be relevant.