... in four cases; not in some other .cpp file.
This is another move that causes the generated graph to reflect dependencies
correctly.
This fixes other large, hidden cycles that involved PrefsDialog.cpp: there was
link dependency on that when PrefsPanel.h was used for the base class. No
longer.
Also cycles involving TrackPanel.cpp, which contained the default
implementations for TrackPanelCell and related abstract base classes.
... They are not necessary to build, but the do indicate some link
dependencies to fix, that were not shown in results of scripts/graph.pl.
The link dependencies exist because the header declaring some name did not
correspond to the .cpp file that defined it.
... Requires some more wx header inclusions, a renaming of CopyFile (to avoid
colliding with a certain macro changing it to CopyFileW), and an explicit
deletion of a copy constructor and assignment (to avoid generation of
std::vector members for an incomplete type)
... 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.