Some explanations:
- savepng uses setjmp, so I changed it to C; this guarantees that someone does not accidentally introduce a C++ object in it (unlikely though that is)
- The loop in multiplayer.cpp seemed intended to allow the command-line to request repeated plays, so the break was removed rather than refactoring it to an if statement
- Some uninitialized structs were changed to be zero-initialized
- Use luaW_toboolean instead of lua_toboolean
- Needed explicit constructor for vconfig iterators, since their only member is const
Ability to emulate floating point calculations makes sense only if we
intend to support platforms without native floating point support. Such
platforms haven't been relevant since mid-1990s or so. Besides, supporting
such platforms would require converting the entire codebase to use the
tfloat class instead of native float and double types, which would be
outright Herculean effort.
As a bonus, killing floating_point_emulation.cpp also eliminates two uses
of boost::enable_if_c.
I also removed the nonexistent file SDL_SavePNG/savepng.hpp from the
Visual Studio project, and added #include <string> to
formula/debugger_fwd.hpp because the build failed otherwise
(maybe compilation order changed when I removed
floating_point_emulation.hpp?).
*.vcproj.*.user files contain user specific settings.
*.vcproj.user files contain general settings, e.g. for the debugger, which
are required for our unit tests.