This should catch any missing include directives. Windows
will have to come later as it needs a lot of work. It's
been using PCHs forever, so we've gotten away with a lot
of missing includes.
... It didn't really break the cycle, because there were still indirect
inclusions via AudacityHeaders.h.
This reverts commit 4f78874978975b42a5ca0ffb7175d586875da629.
The '_declspec' modifier is deprecated since the migration from Win16 to Win32, so by long time.
The correct modifier to be used for modern code is '__declspec', with two underscore characters as prefix.
MSVC can recognize both modifiers and '_declspec' has the same effect of '__declspec', depending on the presence of '/Za' option, which activates/deactivates the language extensions:
https://docs.microsoft.com/it-it/cpp/cpp/declspec?view=vs-2019
Unfortunately, GCC supports only '__declspec', so I recommend to use this one and also MSVC will be able to work indipendently from the language extensions. Since Audacity does not compile on anything less than GCC 4.9, it is not a big problem to use the same thing for _WIN32 in general, not only MSVC, and also Cygwin.
On Windows, the CONST macro is already defined by system include files.
MSVC tolerates that, but this is fatal for GCC.
The CONST macro is unused in this source anyways, so it would be worth to remove it.
FileDialog goes into audacity/src/widgets and the mod-* directories go into
audacity/modules.
This leaves nothing in lib-src that isn't a 3rd-party libs or supporting
files.
... Note that par1str and par2str aren't even shown, but comment out. Yet, I
did the work on them to serve as examples for the future.
Note the use of contexts too. Be aware of case distinctions that some languages
make.
... This includes functions callable from Nyquist but not yet any examples
of strings with context in any .ny files.
This does include some examples of strings with context, and with both plurals
and context, in C++ files. It is not intended to fix possible ambiguities
exhaustively.
Note that wxWidgets 3.1.1 is sufficient to support contexts.
If Audacity is build with wxWidgets 3.0, it will run, but strings with
context will fail to translate.